1、 文檔目標(biāo)
解決變量數(shù)中添加Static屬性后在map文件中無法找到對應(yīng)符號的問題。
2、 問題場景
在main函數(shù)中用“static unsigned long rw_base_addr;”設(shè)置一個全局變量,在map文件無法找到這個變量名稱,同時,會出現(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è)硬件:無
4、解決方法
1)、打開工程的屬性窗體,把編譯優(yōu)化設(shè)置為O0,如圖4-1所示:

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

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