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

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

有沒(méi)有人在搞44b0向量中斷的時(shí)候遇到下面的問(wèn)題?

作者:ican 欄目:ARM技術(shù)
有沒(méi)有人在搞44b0向量中斷的時(shí)候遇到下面的問(wèn)題?
我編寫(xiě)的中斷向量表如下:
ENTRY
    b ResetHandler                ;for debug
    b HandlerUndef                ;handlerUndef
    b HandlerSWI                ;SWI interrupt handler
    b HandlerPabort                ;handlerPAbort
    b HandlerDabort                ;handlerDAbort
    b .                            ;handlerReserved
    b HandlerIRQ
    b HandlerFIQ
    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IMPORTANT NOTE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;If the H/W vectored interrutp mode is enabled, The above two instructions should                       ;
;be changed like below, to work-around with H/W bug of S3C44B0X interrupt controller.                   ;
; b HandlerIRQ  ->  subs pc,lr,#4                                                                       ;
; b HandlerIRQ  ->  subs pc,lr,#4                                                                       ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;中斷向量表
VECTOR_BRANCH
    ldr pc,=HandlerEINT0    ;mGA    0x20
    ldr pc,=HandlerEINT1    ;    
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567    ;
    ldr pc,=HandlerTICK        ;mGA    0x34
    b .
……
定義了一個(gè)宏:
MACRO
$HandlerLabel HANDLER $HandleLabel

$HandlerLabel
    sub        sp,sp,#4            ;decrement sp(to store jump address)
    stmfd   sp!,{r0}            ;PUSH the work register to stack(lr does't PUSH because it return to original address)
    ldr        r0,=$HandleLabel    ;load the address of HandleXXX to r0
    ldr        r0,[r0]                ;load the contents(service routine start address) of HandleXXX
    str        r0,[sp,#4]            ;store the contents(ISR) of HandleXXX to stack
    ldmfd   sp!,{r0,pc}            ;POP the work register and pc(jump to ISR)
    MEND
然后我發(fā)現(xiàn)在中斷的時(shí)候,pc跳到了0x18后,就死在了那里,不動(dòng)了。我反匯編的時(shí)候看到0x18那里是一條指令 b 0x78。為什么程序不往下執(zhí)行了呢?我之前做的非向量中斷是可以的,不知道為什么改為向量中斷后就不行了,不是只要改動(dòng)intcon這個(gè)寄存器就行了嗎?

2樓: >>參與討論
ican
這個(gè)與我是在仿真有關(guān)嗎?
我用的是multiice仿真,不知道是否與此有關(guān)?因?yàn)樵谧龇窍蛄恐袛嗟臅r(shí)候總是在SDRAM中運(yùn)行的,向量中斷跳到了FLASH中,會(huì)不會(huì)……

3樓: >>參與討論
ican
向量中斷是不是一開(kāi)始就會(huì)跑到各自的中斷向量,不是0x18啊
但是現(xiàn)在我的程序是一開(kāi)始就跑到0x18,并且死在那里了

4樓: >>參與討論
ican
是不是我的中斷向量并沒(méi)有燒寫(xiě)在FLASH的緣故?
 我的這個(gè)程序是仿真的,那是不是第一步執(zhí)行的是b ResetHandler這條程序,pc顯示是c008000,也就是ro的地址。那是不是因?yàn)橹@些程序都沒(méi)有寫(xiě)在FLASH處,而只是在ram里面運(yùn)行了?所以在0x18處沒(méi)有跳轉(zhuǎn)的指令?
AREA    Init,CODE,READONLY

    ENTRY
    b ResetHandler                ;for debug    
    b HandlerUndef                ;handlerUndef        b HandlerSWI        ;SWI interrupt handler       
    b HandlerPabort                ;handlerPAbort 樸 0 0
    b HandlerDabort                ;handlerDAbort   0 0
    b .                            ;handlerReserved           subs pc,lr,#4
    subs pc,lr,#4


5樓: >>參與討論
high
44b0沒(méi)有MEMORY remap,中斷
就會(huì)跳到0x0開(kāi)始的中斷向量表。所以FLASH處一定要有向量表,最少要有跳回用戶(hù)向量表的指令。

6樓: >>參與討論
gwnpeter
44b0沒(méi)有MEMORY remap,需要在0x0處加中斷向量轉(zhuǎn)移,否則.....
剛開(kāi)始調(diào)試uCOS的時(shí)候就是怎么都進(jìn)不了定時(shí)器,后來(lái)才發(fā)現(xiàn)的這個(gè)問(wèn)題!

參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
發(fā)帖慶祝一下,自己做了一個(gè)WIGGER的小板!
44B0下載程序校驗(yàn)出錯(cuò)問(wèn)題
請(qǐng)問(wèn)一下為什么優(yōu)龍的bios要另外刷寫(xiě)中斷向量
很菜的問(wèn)題
how much do you know about linux?
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)