音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 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

Setup IRQ handler,不懂

作者:fm867 欄目:ARM技術(shù)
Setup IRQ handler,不懂
; *******************************************************
; * NAME    : 44BINIT.S                                    *
; * Version : 10.April.2000                                *
; * DESCRIPTION:                                        *
; *    C start up codes                                    *
; *    Configure MEMORY, Initialize ISR ,stacks            *
; *    Initialize C-variables                                *
; *    Fill zeros into zero-initialized C-variables        *
; *******************************************************

    GET ..\inc\option.s
    GET ..\inc\memcfg.s

;MEMORY Area
;GCS6 16bit(2MB) SDRAM(0xc000000-0xc1fffff)
;INTTABLE  =0xc1fff00~0xc1fffff
;STACK       =0xc7ffa00           

;Interrupt CONTROL
INTPND        EQU    0x01e00004
INTMOD        EQU    0x01e00008
INTMSK        EQU    0x01e0000c
I_ISPR        EQU    0x01e00020
I_CMST        EQU    0x01e0001c

;Watchdog timer
WTCON        EQU    0x01d30000

;Clock CONTROLler
PLLCON        EQU    0x01d80000
CLKCON        EQU    0x01d80004
LOCKTIME    EQU    0x01d8000c
    
;MEMORY CONTROLler
REFRESH        EQU 0x01c80024

;BDMA destination register
BDIDES0     EQU 0x1f80008
BDIDES1     EQU 0x1f80028

;Pre-defined constants
USERMODE    EQU    0x10
FIQMODE        EQU    0x11
IRQMODE        EQU    0x12
SVCMODE        EQU    0x13
ABORTMODE   EQU    0x17
UNDEFMODE   EQU    0x1b
MODEMASK    EQU    0x1f
NOINT        EQU    0xc0

PDATE  EQU 0x1d2002C   ;LEE
PCONE  EQU 0x1d20028     ;LEE


    
;check if tasm.exe is used.
    GBLL    THUMBCODE
    [ {CONFIG} = 16    
THUMBCODE SETL    {TRUE}
    CODE32
    |   
THUMBCODE SETL    {FALSE}
    ]

    [ THUMBCODE
    CODE32   ;for start-up code for Thumb mode
    ]

    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

    IMPORT    |Image$$RO$$Limit|  ; End of ROM code (=start of ROM data)
    IMPORT    |Image$$RW$$Base|   ; Base of RAM to initialise
    IMPORT    |Image$$ZI$$Base|   ; Base and limit of area
    IMPORT    |Image$$ZI$$Limit|  ; to zero initialise

    IMPORT  Main    ; The main entry of mon program

    AREA    Init,CODE,READONLY

    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    H/W interrupt vector table
    ldr pc,=HandlerEINT1    ;    
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567 ;
    ldr pc,=Handler
2樓: >>參與討論
kingpoo
就是安裝IRQ中斷處理程序啊!
就是安裝IRQ中斷處理程序啊!相當(dāng)于把IsrIRQ開始的地址存放到HandleIRQ這個地址上,而HandleIRQ這個地址就是IRQ中斷向量地址

3樓: >>參與討論
fm867
向量中斷VS非向量中斷
先謝謝kingpoo,我看過S3C44B0X的介紹,上面說如果是向量中斷模式的話,當(dāng)ARM7TDMI受到IRG中斷請求時,ARM7TDMI就會執(zhí)行在0x00000018的指令,然后跳到相應(yīng)中斷的服務(wù)程序。上面的程序在0x00000018的指令就是b HandlerIRQ,而這里又把HandleIRQ指向IsrIRQ這個非向量中斷處理程序。越搞越糊涂了,請kingpoo和大家再說說看怎么會事?

4樓: >>參與討論
fm867
等待回復(fù)
等待回復(fù)。。。

5樓: >>參與討論
kingpoo
說明使用的是非向量中斷啊
 
6樓: >>參與討論
fm867
謝謝kingpoo
這樣就有點(diǎn)可以理解了,謝謝kingpoo。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教:44B0X在跑uc/os時,硬件連續(xù)兩次重新啟動的問題
ATMEL的 ARM可以申請免費(fèi)樣片嗎?
用了BOOTLOADER后ucos-ii不能正常工作
我該如何選型?ARM9方案
ARM1.2 Error一問
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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