1、 文档目标
解决变量数中添加Static属性后在map文件中无法找到对应符号的问题。
2、 问题场景
在main函数中用“static unsigned long rw_base_addr;”设置一个全局变量,在map文件无法找到这个变量名称,同时,会出现“Warning: L6329W: Pattern *(RW) only matches removed unused sections.”的警告信息,如图2-1所示:

图2-1
3、软硬件环境
1)、软件版本:ArmDS 2024.0
2)、电脑环境:Windows 11
3)、外设硬件:无
4、解决方法
1)、打开工程的属性窗体,把编译优化设置为O0,如图4-1所示:

图4-1
2)、重新编译工程,map文件可以找到这个符号,同时警告信息也已修正,如图4-2所示:

图4-2
注:1、static关键字导致这些变量的作用域被限制在了单个文件或模块内,当对编译优化时,会优化掉。
2、警告信息,也是由于“static int variable __attribute__((section("foo"))) = 10;” 这个设置中,也应用了“static”关键字。