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

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

概述这个问题是关于嵌入式控制器. 我想在内存中初始化一个const数组.但是当我将这个数组存储在内存中时,我想将它存储在特定的位置,比如说0x8000.这样我想占用一些代码量,以便后者在运行时我可以删除它部分并将其用于我自己的其他目的. 基本上我想要这样做: const unsigned char dummy_string[] = "This is dummy string"; 但是dummy_str 这个问题是关于嵌入式控制器.
我想在内存中初始化一个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.阅读链接器命令手册,了解有关如何在特定地址查找节的更多信息.

总结

以上是内存溢出为你收集整理的如何在内存中的特定地址初始化const数组?全部内容,希望文章能够帮你解决如何在内存中的特定地址初始化const数组?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1238535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存