新聞中心

        ARM中的軟件中斷

        作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
        中斷的工作原理及ARM中中斷控制器的工作模式

        1. 首先介紹ARM內(nèi)核的中斷控制器的幾種工作模式:

        1.

        快中斷是為支持?jǐn)?shù)據(jù)傳輸或快速數(shù)據(jù)通道而設(shè)計(jì)的,為快速處理快中斷。①快中斷被設(shè)為最高中斷優(yōu)先級(jí);②在快中斷模式增設(shè)了7個(gè)私有工作寄存器,從而避免了由于主工作寄存器數(shù)據(jù)的保存和恢復(fù)而帶來(lái)了額外開(kāi)銷(xiāo);③快中斷處理程序處于異常向量表的最后位置,因此可緊接異常向量表書(shū)寫(xiě)快中斷處理程序,而不必進(jìn)行程序跳轉(zhuǎn)操作,避免了刷新指令流水線和高速緩存。

        軟件中斷是一種由用戶設(shè)置的同步中斷,由程序指令產(chǎn)生,不像硬件中斷那樣由外部事件觸發(fā)。軟件中斷允許運(yùn)行在用戶模式的程序進(jìn)入監(jiān)督模式,并運(yùn)行監(jiān)督態(tài)下的函數(shù)。在 ARM7TDMI的硬件調(diào)試系統(tǒng)中,應(yīng)用程序可利用軟件中斷來(lái)申請(qǐng)半自主式操作,例如,打開(kāi)主機(jī)中的一個(gè)文件、向調(diào)試通道發(fā)送一個(gè)字符等等(這些操作必須依賴(lài)主機(jī)中C程序庫(kù)才能運(yùn)行,因此被稱(chēng)為半自主式的)。利用軟件中斷機(jī)制,可以直觀和高效地仿真調(diào)試應(yīng)用程序。另外,軟件中斷也可用于一般性的程序控制。

        2 .響應(yīng)中斷和中斷返回
        (1)中斷響應(yīng)過(guò)程
        1) 保存CPSR到將要執(zhí)行的異常中斷的SPSR;
        2)設(shè)置CPSR的值:設(shè)置CPSR相應(yīng)位的值使處理器進(jìn)入特定的處理器模式,按要求屏蔽中斷;
        3)設(shè)置LR寄存器:將中斷相應(yīng)模式的LR寄存器的值設(shè)置為異常中斷的返回地址;
        4)處理程序計(jì)數(shù)器PC:將PC值設(shè)為相應(yīng)的中斷向量的地址。
        (2)中斷返回過(guò)程
        1)恢復(fù)CPSR:將保存在中斷模式中的SPSR值賦給當(dāng)前的CPSR;
        2)將返回地址復(fù)制到PC:這樣程序?qū)⒎祷氐疆惓V袛喈a(chǎn)生的下一條指令或出現(xiàn)問(wèn)題的指令處執(zhí)行。

        *中斷的響應(yīng)-返回流程圖

        系統(tǒng)通常使用一個(gè)中斷控制器把設(shè)備的中斷集合在一起,然后再把信號(hào)傳送到CPU的一個(gè)單一的中斷管腳。這樣可以節(jié)省CPU的中斷管腳,也給系統(tǒng)設(shè)計(jì)帶來(lái)了靈活性。中斷控制器有掩碼和狀態(tài)寄存器,用于控制這些中斷。設(shè)置掩碼寄存器中相應(yīng)的位,可以打開(kāi)和禁止一個(gè)中斷,讀取狀態(tài)寄存器可以返回系統(tǒng)中當(dāng)前活動(dòng)的中斷。
        一些系統(tǒng)中的中斷可能是硬連接的,例如實(shí)時(shí)時(shí)鐘的間隔計(jì)時(shí)器可能永久地連接到中斷控制器的第3管腳。但是,另一些管腳連接什么可能取決于在特定的ISA或者PCI插槽上插入的是什么控制卡。例如,中斷控制器的第4管腳可能和第0號(hào)PCI插槽相連,某一天該槽上可能插的是一塊以太網(wǎng)卡,另一天該槽上可能插的是一塊SCSI控制卡。每一個(gè)系統(tǒng)都有它自己的中斷中轉(zhuǎn)機(jī)制,操作系統(tǒng)必須足夠靈活才能處理它們。
        大多數(shù)現(xiàn)代的通用目的微處理器都用相同的方式處理中斷。當(dāng)發(fā)生硬件中斷時(shí),CPU停止它正在運(yùn)行的指令,跳到內(nèi)存中一個(gè)位置運(yùn)行,這里或者就是中斷處理代碼,或者是一條指令,通過(guò)它可以跳到中斷處理代碼。這種代碼通常在CPU的特殊模式(中斷模式)下工作,通常,在這種模式下其它中斷不能再產(chǎn)生。當(dāng)然也有例外:一些CPU將中斷劃分級(jí)別,更高級(jí)別的中斷可以中斷低級(jí)的中斷。這意味著必須非常小心地寫(xiě)第一級(jí)的中斷處理程序。一般的中斷處理程序通常都有自己的堆棧,當(dāng)它被再次中斷而進(jìn)入另一個(gè)中斷處理程序之前,用它來(lái)存放CPU的執(zhí)行狀態(tài)(CPU所有的通用寄存器和上下文)。一些CPU有一組只在中斷模式下存在的寄存器,中斷處理代碼可以使用這些寄存器來(lái)存儲(chǔ)它需要保存的大部分上下文信息。


        關(guān)鍵詞: ARM軟件中

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 正宁县| 沙湾县| 富锦市| 德江县| 常州市| 贵溪市| 乌兰察布市| 江川县| 梅河口市| 栾川县| 稻城县| 苗栗县| 莫力| 容城县| 乌恰县| 文水县| 新营市| 岳阳县| 台前县| 山阴县| 绥滨县| 太白县| 长葛市| 青铜峡市| 辽宁省| 黄陵县| 怀远县| 洮南市| 岑巩县| 永安市| 迭部县| 屯留县| 磐安县| 拉孜县| 宁城县| 香河县| 阿巴嘎旗| 兴国县| 黄梅县| 垫江县| 德江县|