这个问题是关于嵌入式 Controller 的。
我想在内存中初始化一个常量数组。但是在将这个数组存储在内存中时,我想将它存储在一个特定的位置,比如 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";
然后在链接器 .cmd 文件中执行类似这样的操作。
MEMORY
{
...
FLASH : origin = 0x8000, length = 0x3FE0
...
}
SECTIONS
{
...
.my_section : {} > FLASH
...
}
如果 FLASH 中有多个部分,那么首先列出 .my_section 可能会保证它位于 FLASH 的开头。或者,也许您应该定义一个特别命名的 MEMORY 区域,例如 MYFLASH,它将只包含 .my_section。阅读链接器命令手册,了解有关如何在特定地址定位部分的更多想法。
关于c - 如何在内存中的特定地址初始化 const 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27773812/