新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > IAR編譯器的常見問題

IAR編譯器的常見問題

作者: 時間:2016-11-30 來源:網絡 收藏

先編譯看看自己的程序用了多少ram,在看看總共有多少ram。

然后Project ——> Option ——> Linker ——> List選擇生成LIST文件,并包含stack選項,如下圖所示。

在./Debug/list目錄下,得到.map(可能是.lst等其他格式)文件,用記事本打開,找到以下內容:

****************************************
* *
*CALL GRAPH*
* *
****************************************

->Sub-tree of type: Interrupt function tree that does not make
: indirect calls
CSTACK
| Stack used (prev) : 00000000
01 int_T0_OV
| Stack used (prev) : 00000000
| + function block : 0000000C

......(省略N行)

01 main
| Stack used (prev) : 0000003A
| + functionblock: 00000000
<-Sub-tree of type: Function tree
| Stack used : 000000E2

找到最大的Stack used,我的就是000000E2,這就是用到的最大的堆??臻g,保守一點,我設置成0x100字節(jié),沒有超過剩余RAM,再重新編譯,運行,仿真器沒有堆棧不足警告,程序也能正常運行了。

如下圖所示:

4. 查看匯編

相信一個優(yōu)秀的單片機軟件工程師都多多少少會去看看編譯器的匯編代碼,看看有沒有什么問題或者看看編譯器有沒有自作聰明的做些什么

Project ——> Option ——> C/C++ complier ——> List,勾選output assembler files,編譯后則生成離線匯編代碼文件

此時在工程目錄下的Debug-->List即可看到所有參加編譯的C文件對應的匯編文件,后綴名為*.s90



關鍵詞: IAR編譯

評論


技術專區(qū)

關閉