如何在内存中的特定地址初始化const数组?

前端之家收集整理的这篇文章主要介绍了如何在内存中的特定地址初始化const数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题是关于嵌入式控制器.
我想在内存中初始化一个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";

然后在链接器.cmd文件中执行类似这样的操作.

MEMORY
{
    ...
    FLASH    : origin = 0x8000,length = 0x3FE0
    ...
}

SECTIONS
{
    ...
    .my_section    : {} > FLASH
    ...
}

如果FLASH中有多个部分,则可能首先列出.my_section将保证它位于FLASH的开头.或许你应该定义一个特别命名的MEMORY区域,例如MYFLASH,它只包含.my_section.阅读链接器命令手册,了解有关如何在特定地址查找节的更多信息.

猜你在找的C&C++相关文章