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

    EEPW首頁 > 嵌入式系統 > 設計應用 > s3c2410中斷異常處理流程

    s3c2410中斷異常處理流程

    作者: 時間:2011-12-05 來源:網絡 收藏

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

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

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

    Reset,

    Undefined instruction,

    Software Interrupt,

    Abort (prefetch),

    Abort(data),

    Reserved,

    IRQ,

    FIQ

    下面是某個采用低端模式的系統源碼片段:

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

    _start:

    b

    Handle_Reset

    b HandleUndef

    b HandleSWI

    b

    HandlePrefetchAbort

    b HandleDataAbort

    b

    HandleNotUsed

    b HandleIRQ

    b

    HandleFIQ

    …..

    ..

    other

    codes

    ..

    .

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

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

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


    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

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

    上電后,PC指針會跳轉到Handle_Reset處開始運行。以后系統每當有異常出現,則CPU會根據異常號,從內存的0x00000000處開始查表做相應的,比如系統觸發了一個IRQ異常,IRQ為第6號異常,則CPU將把PC指向0x00000018地址(4*6=24=

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

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


    上一頁 1 2 3 4 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 成都市| 阜康市| 黄浦区| 吉安市| 兰西县| 益阳市| 文安县| 呈贡县| 孙吴县| 北安市| 泰兴市| 保靖县| 万州区| 伽师县| 红安县| 明水县| 唐山市| 郴州市| 廊坊市| 富民县| 马鞍山市| 定兴县| 称多县| 婺源县| 额济纳旗| 自贡市| 大新县| 河西区| 定襄县| 闸北区| 逊克县| 乌恰县| 山阳县| 新野县| 体育| 宜君县| 罗山县| 咸丰县| 昭平县| 虹口区| 龙岩市|