音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
關(guān)于中斷向量
處理器在處理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
實(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
二樓的能更直接的解譯一下嗎
二樓的能更直接的解譯一下嗎?
對于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
中斷向量表的地址是固定的
比如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
如何保證下列指令是從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
這就是仿真器的作用
一般情況下在單板上會有一個跳線來決定程序來自仿真器是FLASH,如果選擇了使用仿真器,本來應(yīng)該指向FLASH的指針就會指向仿真器內(nèi)的一個地址,而在你向仿真器下載程序的時候,仿真器已經(jīng)把各個段放在了它們應(yīng)該在的位置,簡化調(diào)試工作。如果沒有仿真器的話,你想調(diào)試就真的只能每次把程序燒錄到FLASH或者EEPROM中了。

7樓: >>參與討論
qiutie
謝謝
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
定義變量失效?variable removed by compiler
今天編譯了一個keil下的RV程序,感覺不出什么特別,所以想請問?
都是串行芯片,但是怎么區(qū)分它們?好像沒有什么區(qū)別
keil for  arm  編譯問題
如何在LCD上顯示除漢語和英語外其它國家的語言?
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號