如何解决RISC-V链接描述文件中的访问权限
在对基于ARM的微控制器进行编程时,我经常在链接描述文件中看到一个from django.conf import settings
class Product(models.Model):
user = models.ForeignKey(
settings.USER_AUTH_MODEL,editable=False,on_delete=models.CASCADE
)
# …
段,如下所示:
MEMORY{..}
访问权限很容易理解:
-
MEMORY { FLASH (rx): ORIGIN = 0x08000000,LENGTH = 128K RAM (xrw): ORIGIN = 0x20000000,LENGTH = 32K }
:阅读 -
r
:写 -
w
:执行
我正在基于RISC-V的微控制器领域迈出第一步。 GigaDevice的x
微控制器在其链接描述文件中具有以下GD32VF103CBT6
段:
MEMORY{..}
我应该如何解释这些访问权限?
解决方法
它们并不是真正的“访问权限”,而是“可以在此处放置什么样的部分”。
从GNU LD documentation(在quotint的过程中某些格式被破坏了:
attr字符串只能包含以下字符:
- ‘R’
只读部分- ‘W’
读/写部分- ‘X’
可执行节- ‘A’
可分配的部分- ‘我’
初始化部分- ‘L’
与“我”一样- ‘!’
反转任何后续属性的含义
如果未映射的部分与“!”以外的任何列出的属性匹配,它将被放置在存储区域中。 “!”属性将对后面的字符进行逆向测试,因此只有未映射的部分与之后列出的任何属性都不匹配时,才会将其放置在内存区域中。因此,“ RW!X”的属性字符串将与具有“ R”和“ W”属性之一或两者的任何未映射节匹配,但前提是该节不具有“ X”属性。>
在这种背景下,我将对您的配置进行如下解释:
flash (rxai!w) : ORIGIN = 0x08000000,LENGTH = 64k
...表示“闪存”区域可能包含除可写部分以外的任何内容,并且
ram (wxa!ri) : ORIGIN = 0x20000000,LENGTH = 20k
...表示“ ram”区域可能包含除只读和初始化部分以外的任何内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。