|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于中斷向量 |
| 作者:qiutie 欄目:ARM技術(shù) |
處理器在處理IRQ中斷時,處理器要首先加載0x18處的指令,那我們?nèi)绾伪WC,我們所編寫的的代碼正好處理于0x18處,另外,我在用仿真器調(diào)試44B0時,RAM 的下載地址是:0x0c000000,在啟動代碼中,也沒有發(fā)現(xiàn)相關(guān)的語句將跳轉(zhuǎn)指令入0x18處。我在調(diào)試中發(fā)現(xiàn),ldr pc, =HandlerIRQ確實(shí)放在了0x18處。 請問,這是怎么放進(jìn)去的,先謝了! |
| 2樓: | >>參與討論 |
| 作者: xinzha 于 2006/12/14 16:19:00 發(fā)布:
實(shí)現(xiàn)的方法各不相同 最簡單的單片機(jī)是你在寫程序的時候就已經(jīng)將ISP放在了指定的地址,就像51里面那些 org xxh jmp xxxx,這個org就是指定在寫入EEPROM或者FLASH時的地址。 而在比較高級的CPU上,ISP的地址可以這么指定 .org _romInit + 0x300, 0xffffffff 這就代表著要求把這段編譯在入口程序偏移0x300的地方, 而中斷服務(wù)程序一般都是在cpu復(fù)位之后pc指針地址偏移一小點(diǎn)的地方,這樣當(dāng)你編譯完成,寫入程序存儲器之后,cpu就可以找到正確的ISP了。 |
|
| 3樓: | >>參與討論 |
| 作者: qiutie 于 2006/12/14 16:41:00 發(fā)布:
二樓的能更直接的解譯一下嗎 二樓的能更直接的解譯一下嗎? 對于44B0 : 處理器在處理IRQ中斷時,處理器要首先加載0x18處的指令,那我們?nèi)绾伪WC,我們所編寫的的代碼正好處理于0x18處,另外,我在用仿真器調(diào)試44B0時,RAM 的下載地址是:0x0c000000,在啟動代碼中,也沒有發(fā)現(xiàn)相關(guān)的語句將跳轉(zhuǎn)指令入0x18處。我在調(diào)試中發(fā)現(xiàn),ldr pc, =HandlerIRQ確實(shí)放在了0x18處。 我主要是不明白這個,在所有設(shè)置中沒有發(fā)現(xiàn),怎樣將跳轉(zhuǎn)指令放入0x18處 * - 本貼最后修改時間:2006-12-14 16:44:34 修改者:qiutie |
|
| 4樓: | >>參與討論 |
| 作者: js_wawayu 于 2006/12/14 19:29:00 發(fā)布:
中斷向量表的地址是固定的 比如reset在0x0處,IRQ在0x18處,當(dāng)有IRQ中斷觸發(fā)時,系統(tǒng)中斷控制器會將PC指針跳轉(zhuǎn)至0x18處,一般代碼中都有下面這段中斷向量表: __vectors LDR pc,=__tx_reset ; Reset goes to startup function LDR pc,=__tx_undefined ; Undefined handler LDR pc,=__tx_swi_interrupt ; SOFTWARE interrupt handler LDR pc,=__tx_prefetch_handler ; Prefetch exeception handler LDR pc,=__tx_abort_handler ; Abort exception handler LDR pc,=__tx_reserved_handler ; Reserved exception handler LDR pc,=__tx_irq_handler ; IRQ interrupt handler LDR pc,=__tx_fiq_handler ; FIQ interrupt handler 這段代碼在系統(tǒng)運(yùn)行時總會放在0x0處,每個向量占用4Byte到IRQ地址就是0x18 |
|
| 5樓: | >>參與討論 |
| 作者: qiutie 于 2006/12/15 8:55:00 發(fā)布:
如何保證下列指令是從f地址0x0開始存儲? 在只支持仿真器的ram調(diào)試,我們在0x00000000~0x02000000地址中是rom,在進(jìn)行ram調(diào)試時,我們并沒有固化程序到FLASH,這時是如何保證下列指令是從f地址0x0開始存儲? __vectors LDR pc,=__tx_reset ; Reset goes to startup function LDR pc,=__tx_undefined ; Undefined handler LDR pc,=__tx_swi_interrupt ; SOFTWARE interrupt handler LDR pc,=__tx_prefetch_handler ; Prefetch exeception handler LDR pc,=__tx_abort_handler ; Abort exception handler LDR pc,=__tx_reserved_handler ; Reserved exception handler LDR pc,=__tx_irq_handler ; IRQ interrupt handler LDR pc,=__tx_fiq_handler ; FIQ interrupt handler |
|
| 6樓: | >>參與討論 |
| 作者: xinzha 于 2006/12/15 9:11:00 發(fā)布:
這就是仿真器的作用 一般情況下在單板上會有一個跳線來決定程序來自仿真器是FLASH,如果選擇了使用仿真器,本來應(yīng)該指向FLASH的指針就會指向仿真器內(nèi)的一個地址,而在你向仿真器下載程序的時候,仿真器已經(jīng)把各個段放在了它們應(yīng)該在的位置,簡化調(diào)試工作。如果沒有仿真器的話,你想調(diào)試就真的只能每次把程序燒錄到FLASH或者EEPROM中了。 |
|
| 7樓: | >>參與討論 |
| 作者: qiutie 于 2006/12/15 10:07:00 發(fā)布:
謝謝 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |