<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 44B0中斷分析(二)

44B0中斷分析(二)

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò ) 收藏

1.文件描述和準備

本文將試圖講述44B0X處理器處理中斷的具體過(guò)程,如果讀者的中斷執行不正常,請確保 FLASH 中燒錄了立宇泰 Sys's BootLoader for Linux V1.2,同時(shí)ADS開(kāi)發(fā)環(huán)境中的RO Base為0x0c0008000,RW Base為0xc5f0000。 本文采用的44BINIT.s的自敘為:

本文引用地址:http://dyxdggzs.com/article/201706/348593.htm

本程序以系統的Timer0中斷為例,中斷初始化程序如下:

2.調試程序裝載后

AXD裝載AXF調試文件后,暫時(shí)不運行,PC指針指示在bResetHandler處,用右鍵菜單中的Disassembly,可以看出初始地址實(shí)際上指示在0x0c008000,即ADS中設置的RO Base,表示程序即將從0x0c008000開(kāi)始運行。

3.非矢量模式下的執行過(guò)程

經(jīng)過(guò)以上準備工作,單擊【運行】?jì)纱魏?Timer0 中斷發(fā)生,通過(guò)事先設置好的斷點(diǎn)捕捉中斷,所有圖中的紅點(diǎn)即為運行前設置的斷點(diǎn):

⑴PC->0x0c008000 轉到 PC->0x00000018 處,即轉到 Flash 中執行Bootloader的代碼。

⑵ PC->0x00000018 轉到 PC->0x0c000018處,即又跳回到SDRAM中。

⑶ PC->0x0c000080處執行的是IsrIRQ中斷識別程序。

⑷ 識別程序段執行完后,轉到用戶(hù)的中斷服務(wù)程序Timer_ISR( )入口。

4.矢量模式下的執行過(guò)程

OPTION.s中有_IRQ_BASEADDRESS EQU 0xc000000;

在44BINIT中有如下定義:

^ (_IRQ_BASEADDRESS+0x100) ……
HandleTIMER0 # 4
……

猜測地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面來(lái)看看猜想對不對。 改rINTCON=0x1進(jìn)行矢量中斷過(guò)程的觀(guān)察,重新裝載程序,再單擊【運行】?jì)纱魏?,Time0中斷產(chǎn)生:

⑴ Timer0 中斷產(chǎn)生,跳轉到中斷矢量地址 0x00000060,而不是跳轉到 IRQ中斷入口0x00000018,這就是非矢量中斷和矢量中斷的本質(zhì)區別。

⑵ 再跳轉到0x00000334,注意還是在Flash中,因此還得歸功于Bootloader 黑體所選程序是類(lèi)似宏調用HandlerTIMER0 HANDLER HandleTIMER0 產(chǎn)生的代碼,由于這是在 Flash 中,所以不可能是調試時(shí)下載進(jìn)去的。(不相信可以把44BINIT.s中的宏HandlerTIMER0 HANDLER HandleTIMER0注釋掉試試。) 執行完0x00000348處的指令后,執行步驟⑶。

⑶ 好,Bootloader完成使命后,跳轉到用戶(hù)的Timer_ISR( ),入口地址為0x0c0087d4 ,在44B.h中有定義:#define pISR_TIMER0 (*(unsigned *)(_IRQ_BASEADDRESS+0x134))//0x54),可看出pISR_TIMER0和44B0INIT.h中定義的HandleTIMER0指向地址是一樣的,都指向0x0c000134。 下圖即pISR_TIMER0=(int)Timer_ISR;已經(jīng)生效的明證。

【心得】不管是何種中斷模式,如果中斷總是沒(méi)有執行,則可以在FLASH中的中斷分支表的相應項目上設置斷點(diǎn),再然后靈活運用STEPIN、STEPOUT、STEP等控制程序流程,以觀(guān)察問(wèn)題的根源。 在匯編級代碼中設置斷點(diǎn),需要用到右鍵菜單中的【Set PC】,設置完后,不要忘記改回初始的PC值。



關(guān)鍵詞: 44B0中斷 ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>