中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        44B0中斷分析(二)

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

        1.文件描述和準(zhǔn)備

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

        本文引用地址:http://www.antipu.com.cn/article/201706/348593.htm

        本程序以系統(tǒng)的Timer0中斷為例,中斷初始化程序如下:

        2.調(diào)試程序裝載后

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

        3.非矢量模式下的執(zhí)行過程

        經(jīng)過以上準(zhǔn)備工作,單擊【運行】兩次后 Timer0 中斷發(fā)生,通過事先設(shè)置好的斷點捕捉中斷,所有圖中的紅點即為運行前設(shè)置的斷點:

        ⑴PC->0x0c008000 轉(zhuǎn)到 PC->0x00000018 處,即轉(zhuǎn)到 Flash 中執(zhí)行Bootloader的代碼。

        ⑵ PC->0x00000018 轉(zhuǎn)到 PC->0x0c000018處,即又跳回到SDRAM中。

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

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

        4.矢量模式下的執(zhí)行過程

        OPTION.s中有_IRQ_BASEADDRESS EQU 0xc000000;

        在44BINIT中有如下定義:

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

        猜測地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面來看看猜想對不對。 改rINTCON=0x1進行矢量中斷過程的觀察,重新裝載程序,再單擊【運行】兩次后,Time0中斷產(chǎn)生:

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

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

        ⑶ 好,Bootloader完成使命后,跳轉(zhuǎn)到用戶的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)生效的明證。

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



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

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉