新聞中心

        s3c2410中斷異常處理

        作者: 時間:2010-01-27 來源:網(wǎng)絡(luò) 收藏

        在進(jìn)入正題之前,我想先把ARM920T的向量表(Exception Vectors)做一個簡短的介紹。:]

        本文引用地址:http://www.104case.com/article/152114.htm

        ARM920T的向量表有兩種存放方式,一種是低端存放(從0x00000000處開始存放),另一種是高端存放(從0xfff000000處開始存放)。關(guān)于為什么要分兩種方式進(jìn)行存放這點(diǎn)我將在介紹MMU的文章中進(jìn)行說明,本文采用低端模式。ARM920T能有8個,他們分別是:

        Reset,Undefined

        instruction,Software Interrupt,Abort (prefetch),Abort

        (data),Reserved,IRQ,F(xiàn)IQ

        下面是某個采用低端模式的系統(tǒng)源碼片段:

        /*****************************************************************************

        _start:

        b

        Handle_Reset

        b HandleUndef

        b HandleSWI

        b

        HandlePrefetchAbort

        b HandleDataAbort

        b

        HandleNotUsed

        b HandleIRQ

        b

        HandleFIQ

        …..

        ..

        other

        codes

        ..

        .

        *****************************************************************************/

        上面這部分片段一般出現(xiàn)在一個名叫“head.s”的匯編文件的里,“b

        Handle_Reset”這條語句就是系統(tǒng)上電之后運(yùn)行的第一條語句。也就是說這部分代碼的二進(jìn)制碼必須位于內(nèi)存的最開始部分(這正是低端存放模式),因為上電后CPU會從SDRAM的0x00000000處取第一條指令并執(zhí)行。


        Address

        Instruct

        0x00000000: b

        Handle_Reset

        0x00000004: b

        HandleUndef

        0x00000008: b

        HandleSWI

        0x0000000C: b

        HandlePrefetchAbort

        0x00000010: b

        HandleDataAbort

        0x00000014: b

        HandleNotUsed

        0x00000018: b

        HandleIRQ

        0x0000001C: b

        HandleFIQ

        上面是該程序段在系統(tǒng)上電后加載到內(nèi)存后的分布情況,我們可以看到每條指令占用了4個字節(jié)。

        上電后,PC指針會跳轉(zhuǎn)到Handle_Reset處開始運(yùn)行。以后系統(tǒng)每當(dāng)有異常出現(xiàn),則CPU會根據(jù)異常號,從內(nèi)存的0x00000000處開始查表做相應(yīng)的,比如系統(tǒng)觸發(fā)了一個IRQ異常,IRQ為第6號異常,則CPU將把PC指向0x00000018地址(4*6=24=

        0x00000018)處運(yùn)行,該地址的指令是跳轉(zhuǎn)到“異常服務(wù)例程”(HandleIRQ)處運(yùn)行。以上就是我對異常向量表的一個簡單介紹。現(xiàn)在可以進(jìn)入我們文章的主題

        異常”,分快中斷(FIQ)和普通中斷(IRQ),我們討論的重點(diǎn)是普通中斷(IRQ)。


        上一頁 1 2 3 4 下一頁

        關(guān)鍵詞: 處理 異常 中斷 s3c2410

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 郸城县| 故城县| 秦皇岛市| 荥经县| 洞口县| 正蓝旗| 天气| 怀宁县| 邵阳县| 宣恩县| 林口县| 石台县| 阳泉市| 永登县| 库尔勒市| 衡水市| 葫芦岛市| 沈丘县| 绥芬河市| 长阳| 嘉黎县| 南平市| 威宁| 广安市| 抚顺市| 松潘县| 大洼县| 麻江县| 甘孜| 将乐县| 建水县| 浑源县| 衢州市| 鹤山市| 芒康县| 永靖县| 游戏| 酉阳| 湟中县| 美姑县| 海丰县|