TI中文支持网
TI专业的中文技术问题搜集分享网站

RM57L843: 为什么编译器还是忽略了我的volatile的声明

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)

赞(0)
未经允许不得转载:TI中文支持网 » RM57L843: 为什么编译器还是忽略了我的volatile的声明
分享到: 更多 (0)