天天看點

ADS1.2更新到RealView2.2

 兩個基本上沒什麼變化,編譯環境由CodeWarrior for ADS變成了CodeWarrior for RVDS,調試環境由AXD debugger 變成了AXD debugger1.3.1,甚至原來的H-JTAG仿真軟體的配置問題都可通用,太爽了!

目前編譯時發現一點問題,原來用ADS編譯通過的檔案,現在出現了錯誤,提示:

Error: L6238E: foo.o(.text) contains invalid call from '~PRES8' function to 'REQ8' function foobar

找了一下,原來RVDS2.0~3.1版本都有這個問題,要求保持堆棧8位元組對齊,如果沒有設定這個屬性,會出現錯誤。

兩種辦法解決此問題:

1:在代碼編譯前面設定屬性,可以解決這個問題(我已經試過了)。例如将:

AREA Init, CODE, READONLY

變成:

PRESERVE8

AREA Init, CODE, READONLY

2:在linker的指令行加入下面參數:

--diag_suppress 6238

這樣編譯器就不再檢查堆棧對齊問題了。

這種方法還可以消除L6306W 的警告,--diag_suppress 6306即可。

參考網址:

http://www.arm.com/support/faqdev/1242.html

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204hc/Cacehagj.html

http://www.keil.com/support/docs/3268.htm

繼續閱讀