<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            異常概述

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

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

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

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

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

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

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

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

            當(dāng)異常中斷發(fā)生時(shí),程序計(jì)數(shù)器PC所指的位置對(duì)于各種不同的異常中斷是不同的,同樣,返回地址對(duì)于各種不同的異常中斷也是不同的。例外的是,復(fù)位異常中斷處理程序不需要返回,因?yàn)檎麄€(gè)應(yīng)用系統(tǒng)是從復(fù)位異常中斷處理程序開(kāi)始執(zhí)行的。

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

            解析程序的概念和作用

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

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


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();