新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于ARM處理器中斷處理的編程實現(xiàn)

        基于ARM處理器中斷處理的編程實現(xiàn)

        作者: 時間:2012-11-30 來源:網(wǎng)絡(luò) 收藏
          ARM編程特別是代碼的編寫中通常需要實現(xiàn)中斷的響應、解析跳轉(zhuǎn)和返回等操作,以便支持上層應用程序的開發(fā),而這往往是困擾初學者的一個難題。的編程實現(xiàn)需要深入了解ARM內(nèi)核和處理器本身的中斷特征,從而設(shè)計一種快速簡便的機制。需要說明的是,具體的上層高級語言編寫的中斷服務(wù)函數(shù)不在本文的討論范圍之內(nèi)。

          異常概述

          當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉(zhuǎn)到相應的異常中斷處理程序處執(zhí)行。當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。在進入異常中斷處理程序時,要保存被中斷的程序的執(zhí)行現(xiàn)場。從異常中斷處理程序退出時,要恢復被中斷的程序的執(zhí)行現(xiàn)場。ARM體系中通常在存儲地址的低端固化了一個32字節(jié)的硬件中斷向量表,用來指定各異常中斷及其處理程序的對應關(guān)系。當一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作:

          1)保存處理器當前狀態(tài)、中斷屏蔽位以及各條件標志位;

          2)設(shè)置當前程序狀態(tài)寄存器CPSR中相應的位;

          3)將寄存器lr_mode設(shè)置成返回地址;

          4)將程序計數(shù)器(PC)值設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應的異常中斷處理程序處執(zhí)行。

          在接收到中斷請求以后, 內(nèi)核會自動執(zhí)行以上四步,程序計數(shù)器PC總是跳轉(zhuǎn)到相應的固定地址。從異常中斷處理程序中返回包括下面兩個基本操作:

          1)恢復被屏蔽的程序的處理器狀態(tài);

          2)返回到發(fā)生異常中斷的指令的下一條指令處繼續(xù)執(zhí)行。

          當異常中斷發(fā)生時,程序計數(shù)器PC所指的位置對于各種不同的異常中斷是不同的,同樣,返回地址對于各種不同的異常中斷也是不同的。例外的是,復位異常中斷處理程序不需要返回,因為整個應用系統(tǒng)是從復位異常中斷處理程序開始執(zhí)行的。

          支持中斷跳轉(zhuǎn)的解析程序

          解析程序的概念和作用

          如前所述,響應中斷的時候,總是從固定的地址開始的,而在高級語言環(huán)境下開發(fā)中斷服務(wù)程序時,無法控制固定地址開始的跳轉(zhuǎn)流程。為了使得上層應用程序與硬件中斷跳轉(zhuǎn)聯(lián)系起來,需要編寫一段中間的服務(wù)程序來進行連接。這樣的服務(wù)程序常被稱作中斷解析程序。

          每個異常中斷對應一個4字節(jié)的空間,正好放置一條跳轉(zhuǎn)指令或者向PC寄存器賦值的數(shù)據(jù)訪問指令。理論上可以通過這兩種指令直接使得程序跳轉(zhuǎn)到對應的中斷處理程序中去。但實際上由于函數(shù)地址值為未知和其它一些問題,并不這么做。這里給出一種常用的中斷跳轉(zhuǎn)流程:


        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 忻城县| 寿阳县| 苍梧县| 岳普湖县| 莫力| 商水县| 阿克陶县| 南陵县| 湘阴县| 任丘市| 嵊州市| 黄石市| 襄樊市| 远安县| 简阳市| 泸西县| 昭平县| 绥阳县| 三亚市| 确山县| 溧水县| 酉阳| 昂仁县| 夏邑县| 金山区| 甘孜| 富宁县| 肥西县| 汉阴县| 公安县| 万荣县| 沂水县| 达日县| 济阳县| 乐都县| 淮南市| 宜城市| 留坝县| 彰化县| 依兰县| 诏安县|