天天看點

iar的錯誤筆記

Warning[Pe068]: integer conversion resulted in a change of sign

(unsigned int)×××

(u32)×××

Warning[Pe550]: variable “xxxx” was set but never used

1.把變量改為全局變量後,就不會有警告了。

2.或者在定義的前面加上 volatile 後(阻止編譯器對代碼過分優化),編譯就通過了。這個和編譯器的庫有關。

Warning[Pe001]: last line of file ends without a newline

原因:在使用IAR時常常會彈出類似這樣一個警告,其實隻要在最後一行多加一個回車就不會再有這個警告了.

Error[Li005]: no definition for XXX

.c中定義了,h中也聲明了:添加c檔案時沒有Make,發現.c檔案裡有個#endif 然後把那行删去 (.C檔案有問題)

因為這是一個連結階段的錯誤,是以編譯器會到對應的.o目标檔案中尋找函數原型,沒有包含這個C檔案,編譯器就不會編譯出對應的.o檔案,是以僅僅隻有頭檔案也是不行的。

沒有這一部分的程式

Error[Cp001]: Copy protection check, No valid license found for this prod t [20]

原因:安裝的時候沒有把注冊機的0x…字串的小寫字母改為大寫字母。

Error[e72]: Segment BANK_RELAYS must be defined in a segment definition option (-Z, -b or -P)

原因:這是用730B編譯的錯誤,可能是由于相對于目标工程版本過高的,後改用720H,沒有發生錯誤。

Error[Pe005]: could not open source file “stdio.h”

原因:頭檔案路徑不對造成,改正的方法是在設定頁籤的C/C++ Compiler -> Preprocessor選項裡,将 T O O L K I T D I R TOOLKIT_DIR TOOLKITD​IR\INC\CLIB\添到Incl? paths中。

Error[Pe005]: could not open source file “hal.h” C:\Users\user\Desktop\例子程式\無線通信綜合測試\Library\cc2430\HAL\source\setTimer34Period.c

原因:先檢查C:\Users\user\Desktop\例子程式\無線通信綜合測試\Library\cc2430\HAL\source\有無setTimer34Period.c這個檔案,若有,則是因為IAR對中文路徑支援不好的緣故,把這個工程複制到英文路徑下編譯就不會發生錯誤。

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 // Revison D (this setting is safe for all revisions)還有可能是定義的大數組太多了,有時候某些函數中定義的數組有點大,在主函數中單獨測試這個函數時不會報錯

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#”,

原因:此錯誤是所定義的全局變量和數組緩沖區等所占的RAM超出硬體支援所緻,size: 0x50 為超出的大小。隻要減少不要的全局變量和盡量縮小數組緩沖區就可以了!

Error[e46]: Undefined external “OnBoard_SendPhoto::?relay” referred in hal_key ( C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SimpleApp\CC2430DB\SimpleControllerEB\Obj\hal_key.r51 )

原因:隻有沒有找到該函數的定義OnBoard_SendPhoto(),隻有聲明和使用。一般在連結時發生此錯誤。

Error[e89]:Too m h object code prod ed(more than 0x1000 bytes)for this package

原因:4K限制版,請使用非限制版的。

IAR常見錯誤請先從以下幾個方面入手:

1、 序列号是否正确。

2、 使用版本是否正确,應該使用7.30B打開的工程檔案不能用7.20H打開。

3、 盡量不要使用中文路徑。

4、 Zigbee協定棧檔案夾需要放在IAR安裝盤根目錄下。

5、 請确定目前編譯檔案夾是否有讀寫權限。

6、 使用的版本是否為限制版。

IAR debug時候出現的問題User error:Memory access error

https://blog.csdn.net/weixin_43490725/article/details/102937672

IAR

繼續閱讀