This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
大家好!
我使用 Code Composer Studio 12.4.0…… 我尝试了在链接器文件中定义一个专用段、例如:
...
security_ramgs0 :>> RAMGS0
...
在 C 代码中、我将变量定义为:
...
unsigned int global_ram_var _attribute__((section ("security_ramgs0"));
...
即使我在下次重启时、在强制 DSP 热重启之前向变量"perature_ram_var"分配一个不同为零的标记值
变量"global_ram_var"始终具有0值(请确保 它未在已初始化的段中定义)。
我该如何获得我的要求?
提前感谢您的提示
R.C.
您好、RC
您可以利用我们编译器支持的 pragma RETAIN。 请参见 编译器指南 https://www.ti.com/lit/ug/spru514z/spru514z.pdf 中的 RETAIN Pragma 章节6.9.22
此致、
Ozino
谢谢。 Odharo、请您进行回复。
遗憾的是、您的提示并没有解决我的问题、因为据我所知、我认为 RETAIN pragma 仅 对有关代码中未引用的变量的链接器行为有用、但我的情况并非如此。 相反、我们应该强制编译器在启动我的全局变量时不要初始化为0、但这与关于全局和/或静态单化变量的 ANSI C 要求形成鲜明对比。
在菜单中,我也检查了"noinit"属性,但也没有运气在所有...
因此、我尝试了常绿良好旧方法:在链接器文件中保留 RAM 的"原始"和"自由"区域、导出符号以获得存储器的结果地址、并通过软件使用指向该区域的指针访问该区域。
此致
R. C.
你(们)好。
很高兴您能够找到解决方法。
您是否有机会阅读第 6.9.18节 NOINIT 和 PERSISTENT pragma? 我相信使用 NOINIT 的位置可能适合您。
此致、
Ozino