久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    矢量中斷

     黃南山 2018-01-23

     某個中斷源產生中斷時,由硬件直接跳到中斷服務程序的入口(有些cpu,如s3c440box內部有外部中斷的中斷向量表,因而支持矢量中斷,而S3C2440等沒有硬件向量表,不支持矢量中斷。固定中斷向量表中裝的不是中斷或異常服務程序的入口地址,而是一條轉到異常或中斷處理程序的轉移指令

    硬件中斷向量表

    軟件中斷向量表:在ram區的_ISR_STARTADDRESS處開辟一段空間,設置一張軟件設定的中斷向量表,用來存放中斷和異常的服務程序入口地址。

     

     

    非矢量中斷

    產生中斷源時,先跳到一個總入口,再有軟件查詢中斷掛起寄存器判斷是哪個中斷源,然后跳到入口服務程序。例如;arm接受到中斷控制器的IRQ請求,cpu響應中斷后,將在中斷服務寄存器的對應位置位,cpu轉到0x18處執行。在0x18處,放置一條轉移指令:

    B ISR_IRQ

    ISR_IRQ為中斷服務程序的總入口地址,也是非矢量中斷模式的中斷源判別及散轉程序。在ISR_IRQ中通過查詢中斷服務寄存器的對應位判別出中斷源,然后轉至對應的中斷服務程序。

    ISR_IRQ:

    STMDB R13!,{R0-R8,R12,R14}  ;保護現場(進入異常時已自動將斷點保存到LR)

    此處的R14用于異常返回

    BL IRQ                         ; 此處的R14用于子程序返回

    LDMIA R13!,{ R0-R8,R12,R14};恢復現場

    SUBS PC,R14,#4;返回中斷斷點處繼續執行(CPSR 也自動恢復)

    IRQ:

    SUB SP,SP,#4;騰出一個字以存放中斷服務程序入口地址

    STMFD SP!,{R8-R9};

    LDR R9,=I_ISPR;中斷服務寄存器地址送到R9  I_ISPR EQU 0X????????

    LDR R9,[R9];ISPR 的內容送r9

    MOV R8,#0;設置r8為地址偏移量,并初始化為0

    10:          MOVS R9,R9,LSR #1;R9左移一位,移除位送到C

    BCS 11

    ADD R8,R8,#4

    B 10

    11:              LDR R9,=HANDLEADC;找到了,軟件中斷向量表的首項中的地址送R9

    ; HANDLEADC EQU _ISR_STARTADDRESS+4*8

    ADD R9,R9,R8

    LDR R9,[R9];將相應的中斷服務程序入口地址送R9

    STR R9,[SP,#8];中斷服務程序入口入棧

    LDMFD SP! ,{R8-R9,PC};轉向執行中斷服務程序

    中斷服務程序運行完畢,則返回到標記出,回到原來斷點繼續執行(中斷服務程序中已經完成了返回到BL后一條指令的操作)相當于發生了兩級跳轉!

     

     

     

     

     

    如果采用向量中斷模式,cpu發生異常或響應或中斷源后,將轉到硬件固有中斷向量表,自動轉入相應的一次或中斷向量地址處執行。以ENIT 4567為例

    0x30:LDR PC,=HANDLERENT4567

    ............

    HANDLERENT4567:

    HANDLER HANDLEEINT4567; HANDLEEINT4567為軟件設定的中斷向量中中斷入口的地址標號

    HANDLER 宏的作用:將HANDLEEINT4567的內容賦給PC

    MACRO HANDLER HANDLELABEL

    SUB SP,SP,#4

    STMFD SP!,{R0}

    LDR R0,=HANDLELABEL

    LDR R0,[R0]

    STR R0,[SP,#4]

    LDMFD SP!,{R0,PC}

    ENDM

     

    中斷及異常的響應過程

    程序裝在ROM中斷中斷和異常相應情況:

    對于簡單的應用系統,通常將初始化和應用程序下載在0x0處,即在ROM或flash中,在硬件固定向量表中斷對應位置放置轉移指令,轉到相應異常或中斷服務程序進行處理。

    由于RAM區程序執行速度快,而且可以修改,所以對于大多數系統和復雜程序,通常將具體的異常或中斷處理程序下載到RAM區執行。

     

    程序裝在高端RAM中斷中斷或異常響應

    (1)       軟件實現地址映射

    若程序下載到高端RAM,當異常中斷發生時,S3C440B0X自動轉到硬件固定向量表的歌地址處,所以需要在0x0開始的區域放置一個bootloader,它主要完成系統硬件初始化和地址映射工作。地址映射包含兩部分,首先完成從0x0開始的固定向量表到0x0c000000(ram起始區,不同的系統不同)的轉移,然后應用程序中的Isr_Init()函數完成到代碼下載區RAM處的向量轉移。

    Bootloader地址映射:

    在硬件固定表的各向量地址處放指令:ldr pc,=0x0000??,實現0x0000??->0x0c0000??的映射。

    注意:若IRQ異常采用非向量模式,在開始地址區不必進行中斷源的映射;復位異常發生,硬件初始化后,直接映射到代碼下載區的0x0c008000處,并執行應用系統初始化。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲精品男男一区二区| 国产亚洲精品中文字幕| 欧美乱码伦视频免费| 麻豆国产AV剧情偷闻女邻居内裤| 成人无码潮喷在线观看| 亚洲高清揄拍自拍| 久久精品不卡一区二区| 久久亚洲中文字幕伊人久久大| 被拉到野外强要好爽| 日韩欧美亚洲综合久久| 国产一区二区三区在线视頻 | 99久久无色码中文字幕| 国产suv精品一区二区四| 国产精品亚洲А∨怡红院| 免费人成在线观看| 在国产线视频A在线视频| 亚洲精品欧美二区三区中文字幕| 国产AV福利第一精品| 国产精品久久毛片| 成人午夜电影福利免费| 国产 亚洲 制服 无码 中文| 男女激情一区二区三区| 美女乱子伦高潮在线观看完整片| 国产成人亚洲欧美二区综合| 99久久免费精品国产72精品九九 | 亚洲欧美日韩中文在线制服| 丁香五月婷激情综合第九色| 色8激情欧美成人久久综合电影| 国产成人综合95精品视频 | 欧美极品色午夜在线视频| 国产又粗又猛又爽又黄的视频在线观看动漫| 2020国产欧洲精品网站| 国产又大又硬又粗| 日韩国产亚洲一区二区三区| 中国女人熟毛茸茸A毛片| 日本高清视频网站www| 国产精品福利自产拍在线观看 | 亚洲最大成人在线播放| 精品人妻少妇嫩草AV无码专区| 免费人成在线观看成人片| 少妇人妻偷人偷人精品|