这个问题是关于嵌入式控制器.
我想在内存中初始化一个const数组.但是当我将这个数组存储在内存中时,我想将它存储在特定的位置,比如说0x8000.这样我想占用一些代码量,以便后者在运行时我可以删除它部分并将其用于我自己的其他目的.
基本上我想要这样做:
我想在内存中初始化一个const数组.但是当我将这个数组存储在内存中时,我想将它存储在特定的位置,比如说0x8000.这样我想占用一些代码量,以便后者在运行时我可以删除它部分并将其用于我自己的其他目的.
基本上我想要这样做:
const unsigned char dummy_string[] = "This is dummy string";
但是dummy_string的地址应该在我的手中.就像我可以分配我想要的任何地址.
解决方法
使用pragma语句将变量放入命名的内存部分.然后使用链接器命令脚本在所需地址处找到指定的内存部分.
我浏览了一些MSP430文档,我认为它可能会像这样工作……
在源代码中使用#pragma DATA_SECTION.
#pragma DATA_SECTION(dummy_string,".my_section") const unsigned char dummy_string[] = "This is dummy string";
MEMORY { ... FLASH : origin = 0x8000,length = 0x3FE0 ... } SECTIONS { ... .my_section : {} > FLASH ... }
如果FLASH中有多个部分,则可能首先列出.my_section将保证它位于FLASH的开头.或许你应该定义一个特别命名的MEMORY区域,例如MYFLASH,它只包含.my_section.阅读链接器命令手册,了解有关如何在特定地址查找节的更多信息.