運行嵌入式系統,無協處理器,無MMU,Atmel 9263時出現未定義指令錯誤。嵌入式系統的內存範圍爲0x20000000 - 0x23FFFFFF。我已經有兩個起這樣的:ARM未定義指令錯誤
SP 0x0030B840,LR 2000AE78 - 在有效的代碼LR點,所以我不知道是什麼原因導致的異常,雖然SP是僞造的。我應該看看還有哪些其他地址,寄存器,內存位置?
SP 0x20D384A8,LR 0x1FFCA59C - SP正常,LR是假的。我能做些什麼來驗證LR是如何被粉碎的?看起來它從地址空間的末端向後滾動,但我無法弄清楚。
現在我只是模擬更換大塊的代碼並運行測試阿恩,試圖找出問題 - 問題是有時需要4個小時,顯示的問題。
任何提示將不勝感激,謝謝!
芯片是AT91SAM9263,我們正在使用IAR EWARM工具鏈。我很確定它是直的ARM,但我會檢查。
EDIT
的未定義指令的另一個例子 - 此時SP/LR看起來很好。 LR = 0x2000b0c4,當我拆卸附近有:
2000b0bc e5922000 LDR R2,[R2,#+ 0]
2000b0c0 e12fff32 BLX R2
2000b0c4 e1b00004 MOVS R0,R4
因爲LR是指令遵循Undef異常 - BLX如何被識別爲未定義?請注意,CPSR是0x00000013,所以這是所有ARM模式。然而,R2是0x226d2a08,它在堆區,我認爲是不正確的 - 拆分有ANDEQ R0,R0,R12,指令是0x0000000C,其他指令看起來像數據給我。所以我認爲不好的R2是問題,我只是想了解爲什麼Undef在BLX上?
謝謝!
1.)您能否給我們提供整個評估套件/ SoC的名稱? 你說的9263,所以我認爲Atmel AT91SAM9263。 2.)你有沒有針對正確的指令集版本? 如果是上述芯片組,則將ARM9作爲拱門系列 和ARMv5作爲指令集版本。在調用arm-gcc時將這些設置爲 -mcpu =和-march =。 3.)你使用ARM和Thumb還是ARM? – 2009-09-02 16:03:40
你可以發佈一些數據/說明,包括r14地址(有問題的說明)。 – 2009-09-03 13:33:52
謝謝 - 請參閱我的最新編輯 – Jeff 2009-09-03 14:49:33