兩個基本上沒什麼變化,編譯環境由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