1、 文檔目標(biāo)
解決變量數(shù)中添加Static屬性后在map文件中無(wú)法找到對(duì)應(yīng)符號(hào)的問(wèn)題。
2、 問(wèn)題場(chǎng)景
在main函數(shù)中用“static unsigned long rw_base_addr;”設(shè)置一個(gè)全局變量,在map文件無(wú)法找到這個(gè)變量名稱,同時(shí),會(huì)出現(xiàn)“Warning: L6329W: Pattern *(RW) only matches removed unused sections.”的警告信息,如圖2-1所示:

圖2-1
3、軟硬件環(huán)境
1)、軟件版本:ArmDS 2024.0
2)、電腦環(huán)境:Windows 11
3)、外設(shè)硬件:無(wú)
4、解決方法
1)、打開(kāi)工程的屬性窗體,把編譯優(yōu)化設(shè)置為O0,如圖4-1所示:

圖4-1
2)、重新編譯工程,map文件可以找到這個(gè)符號(hào),同時(shí)警告信息也已修正,如圖4-2所示:

圖4-2
注:1、static關(guān)鍵字導(dǎo)致這些變量的作用域被限制在了單個(gè)文件或模塊內(nèi),當(dāng)對(duì)編譯優(yōu)化時(shí),會(huì)優(yōu)化掉。
2、警告信息,也是由于“static int variable __attribute__((section("foo"))) = 10;” 這個(gè)設(shè)置中,也應(yīng)用了“static”關(guān)鍵字。