Part Number:RM57L843
TI工程师:
您好!我在调试时发现,我声明的volatile变量,volatile关键字无用,map文件中找不到相应的地址,请问这是为啥。
例如,static volatile uint32_t testVolatile; map文件中没有testVolatile。
Cherry Zhou:
您好我们已收到您的问题并反馈,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
您好,在默认情况下,静态变量不会出现在map file中。 要查看它们,请将选项 -mapfile_contents=sym_defs 添加到 link 命令中。
您可以使用项目属性 GUI 对其进行配置:
希望以上回答对您有所帮助,如有其他问题请随时联系我们。
,
Liang Xi:
谢谢,添加了。但是,static volatile uint32_t testVolatile;定义好,map文件中还是找不到testVolatile。
,
Cherry Zhou:
如果变量未初始化并且未在代码中使用,则该变量不会被放置在map file中。
希望以上回答对您有所帮助,如有其他问题请随时联系我们。
,
Liang Xi:
谢谢!我用volatile,就是为了即使不使用这个变量,编译器也需要分配地址啊
,
Cherry Zhou:
好的已反馈工程师,如有答复将尽快回复您。
,
Cherry Zhou:
我们建议您使用 Retain pragma。
您可以使用 TI v20.2.5 编译器尝试以下示例代码:
#include <stdint.h>#pragma RETAIN (testVolatile) static volatile uint32_t testVolatile;int main(void) {return 0; }当使用 -mapfile_contents=sym_defs 链接器选项时,生成的map file报告了 testVolleile 变量:
main.objRun/LoadValueBindingName (Section) ------------------------------- 00000134local$a (.text) 00000140local.bss:retain (.bss:retain) 00000134local.text (.text) 00000134globalmain (.text) 00000140localtestVolatile (.bss:retain)