IAR編譯常見錯誤
原因:安裝的時候沒有把注冊機的0x.....字串的小寫字母改為大寫字母。
本文引用地址:http://2s4d.com/article/201611/322906.htmWarning[Pe001]: last line of file ends without a newline F:emoTionIARPK升級CC1110-8main.c
原因:在使用IAR時常常會彈出類似這樣一個警告,其實只要在最后一行多加一個回車就不會再有這個警告了.
Error[e72]: Segment BANK_RELAYS must be defined in a segment definition option (-Z, -b or -P)
原因:這是用730B編譯的錯誤,可能是由于相對于目標工程版本過高的,后改用720H,沒有發(fā)生錯誤。
Error[Pe005]: could not open source file "stdio.h"
原因:頭文件路徑不對造成,改正的方法是在設置選項卡的C/C++ Compiler -> Preprocessor選項里,將$TOOLKIT_DIR$INCCLIB添到Incl? paths中。
Error[Pe005]:could not open source file "hal.h" C:UsersuserDesktop例子程序無線通信綜合測試Librarycc2430HALsourcese
原因:先檢查C:UsersuserDesktop例子程序無線通信綜合測試Librarycc2430HALsource有無setTimer34Period.c這個文件,若有,則是因為IAR對中文路徑支持不好的緣故,把這個工程復制到英文路徑下編譯就不會發(fā)生錯誤。
Error[e16]: Segment CODE_C (size: 0x1869 align: 0) is too long for segment definition. At least 0x1259 more bytes needed.
原因:CODE不夠了,在xcl文件中修改其大小,0x28FF+0x1259=0x3B58,設置為-D_CODE_END=0x3B58
Error[e16]: Segment XDATA_Z (size: 0x1ea7 align: 0) is too long for segment definition. At least 0x2a7 more bytes
原因:在xcl文件里修改段大小,-D_IXDATA_END=0xFD53
Error[e16]: Segment CSTACK (size: 0x50 align: 0x1) is too long for segment definition. At least 0x50 more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)CSTACK+_STACK_SIZE#",
原因:此錯誤是所定義的全局變量和數組緩沖區(qū)等所占的RAM超出硬件支持所致,size: 0x50為超出的大小。只要減少不要的全局變量和盡量縮小數組緩沖區(qū)就可以了!
Error[e46]: Undefined external "OnBoard_SendPhoto::?relay" referred in hal_key ( C:Texas InstrumentsZStack-1.4.3-1.2.1ProjectszstackSamplesSi
原因:只有沒有找到該函數的定義OnBoard_SendPhoto(),只有聲明和使用。一般在鏈接時發(fā)生此錯誤。
Error[e89]:Too m h object code prod ed(more than 0x1000 bytes)for this package
原因:4K限制版,請使用非限制版的。
IAR常見錯誤請先從以下幾個方面入手:
1、
2、
3、
4、
5、
6、
下面是我自己的補充(不斷更新哦)
1.
這個我的修改是 project options---->C/C++ Compiler----->Optimizations(最優(yōu)化)----->size----->High(maximum optimization)
也就是,將代碼最大限度的優(yōu)化,以節(jié)省空間。
嘿嘿,筆者新建工程時,保存的.c文件經常忘記加后綴,添加進入工程時,系統無法識別,這種低級錯誤寫出來是自己提醒自己的。
3. Warning[Pe069]: integer conversion resulted in truncation
#define SEG_A
#define SEG_B
#define SEG_C
#define SEG_D
#define SEG_E
#define SEG_F
#define SEG_G
#define SEG_H
原因:后來將SEG_A到SEG_H的值求出來之后,eg,~0x04改為0xFB.問題就解決,因該是以數組中計算量過復雜。
評論