• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    s3c2410中斷異常處理

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

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

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

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

    Reset,Undefined

    instruction,Software Interrupt,Abort (prefetch),Abort

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

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

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

    _start:

    b

    Handle_Reset

    b HandleUndef

    b HandleSWI

    b

    HandlePrefetchAbort

    b HandleDataAbort

    b

    HandleNotUsed

    b HandleIRQ

    b

    HandleFIQ

    …..

    ..

    other

    codes

    ..

    .

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

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

    Handle_Reset”這條語句就是系統(tǒng)上電之后運(yùn)行的第一條語句。也就是說這部分代碼的二進(jìn)制碼必須位于內(nèi)存的最開始部分(這正是低端存放模式),因?yàn)樯想姾驝PU會(huì)從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個(gè)字節(jié)。

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

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

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


    上一頁 1 2 3 4 下一頁

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

    評論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 钟祥市| 定兴县| 林西县| 大渡口区| 黑水县| 裕民县| 恩平市| 上林县| 古交市| 逊克县| 宾川县| 甘泉县| 孝昌县| 南昌县| 布拖县| 方正县| 额尔古纳市| 曲周县| 五寨县| 东源县| 昌宁县| 东乡| 东港市| 永康市| 易门县| 怀柔区| 如皋市| 花莲县| 瓦房店市| 颍上县| 嫩江县| 鄂托克前旗| 宝应县| 樟树市| 临安市| 富宁县| 三台县| 邯郸市| 冷水江市| 达日县| 长岭县|