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”区域可能包含除只读和初始化部分以外的任何内容。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...