|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
奇怪的問題,圖片描述+源代碼 |
| 作者:microlab 欄目:ARM技術(shù) |
這里上傳不了附件,我把我的源代碼上傳到別的地方了,大家可以通過鏈接下載: ----------------------- http://oneelab.googlepages.com/uCOS-II.rar ----------------------- 注意:這個工程是EasyARM2200的工程,在EasyARM2200上跑才行. 1. 在reset后,所有的地址的指令機器碼都是正常的. * - 本貼最后修改時間:2007-3-31 0:17:04 修改者:microlab |
| 2樓: | >>參與討論 |
| 作者: microlab 于 2007/3/30 23:40:00 發(fā)布:
Re 例如:在0x80000488地址處的指令機器碼是0xe8bd8010和在MEMORY處看到的一致
|
|
| 3樓: | >>參與討論 |
| 作者: microlab 于 2007/3/30 23:42:00 發(fā)布:
Re 2. 執(zhí)行reset處 一條指令: LDR PC,ResetAddr后 內(nèi)存中很多值(code)被更了
|
|
| 4樓: | >>參與討論 |
| 作者: microlab 于 2007/3/30 23:46:00 發(fā)布:
Re 例如:地址0x80000488 處的指令機器碼本應(yīng)該是0xe8bd8010,結(jié)果執(zhí)行 LDR PC,ResetAddr后被改為0xe5c40008了,而且還莫名其妙地在原先0x8000048c地址處插入一條和0x80000488一模一樣的指令. 難道code已經(jīng)在run的情況下,還可以做自動插入指令的動作???? * - 本貼最后修改時間:2007-3-30 23:49:26 修改者:microlab
|
|
| 5樓: | >>參與討論 |
| 作者: microlab 于 2007/3/30 23:50:00 發(fā)布:
Re 這樣指令執(zhí)行到0x80000488的時候,就發(fā)生取數(shù)據(jù)中止異常了.
|
|
| 6樓: | >>參與討論 |
| 作者: microlab 于 2007/3/31 0:09:00 發(fā)布:
Re 3. 這個問題也不是每次都會出現(xiàn),但是,如果全速運行code,并且一旦出現(xiàn) 取數(shù)據(jù)中止異常 后,每次重新加載image時,上面說的那個問題就相當明顯,幾乎每次都出現(xiàn),注意,是重新加載image,而不是重新編譯下載. 另外,to周工,我改了源程序中的中斷處理方式,采用注冊中斷來對中斷進行管理的方式來處理中斷,但是,好像不能正常進中斷,其實,我那個方式應(yīng)該是和源代碼處理中斷方式 一樣,只是換湯不換藥,而且,我單步一路對比跟蹤兩種方式,幾乎是執(zhí)行了一樣的code,但是,我那種方式就是沒有辦法正常進中斷,而且還出現(xiàn)上述1.2.的奇怪現(xiàn)象..... |
|
| 7樓: | >>參與討論 |
| 作者: zlgARM 于 2007/3/31 9:02:00 發(fā)布:
microlab 如果是換湯不換藥,怎么會出現(xiàn)問題。原因就是你改變了對中斷的注冊機制,使得uc/OS沒法處理中斷,導致一系列問題。 建議你看一下工程里的IRQ.inc。 |
|
| 8樓: | >>參與討論 |
| 作者: microlab 于 2007/3/31 9:55:00 發(fā)布:
Re:zlgARM 源代碼中的 IRQ.inc我可看過了,并且使用了其中大部分代碼... 只是我沒有采用宏的方式. 而是每次從 異常向量表的IRQ地址 進去,仿照IRQ.inc做中斷處理,我在其中做的處理是讀取 0xfffff030寄存器得值,來判斷進入哪個中斷處理. 我想這也只是一個換湯不換藥的過程吧. |
|
| 9樓: | >>參與討論 |
| 作者: microlab 于 2007/4/2 11:49:00 發(fā)布:
Re 終于可以對中斷進行注冊了...哈哈 終于搞定了 注冊中斷的問題 原因是我在用 LDR R2,=0xFFFFF030 LDR PC,[R2] MSR CPSR_c,#(NoInt | SYS32Mode) 進入中斷處理函數(shù)地址前,忘了更新LR的值,使得中斷處理函數(shù)返回不來 改成這樣就好了 LDR LR,=IRQ_Handler_Exit LDR R2,=0xFFFFF030 LDR PC,[R2] IRQ_Handler_Exit MSR CPSR_c,#(NoInt | SYS32Mode) 現(xiàn)在可以實現(xiàn)中斷的注冊啦,哈哈 不過老實說,不知道是ADS還是JTAG還是有點變態(tài),有點莫名其妙 很容易誤導人.... |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |