gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:11:05 26 4
gpt4 key购买 nike

这个问题是关于嵌入式 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com