LPC2000系列ARM向量中斷控制器(VIC)

發(fā)布時間:2024-01-02
向量中斷控制器概述
arm7tdmi內(nèi)核具有兩個中斷輸入,分別為irq中斷和fiq中斷。但是芯片內(nèi)部有許多中斷源, 最多可以有32個中斷輸入請求。向量中斷控制器的作用就是允許哪些中斷源可以產(chǎn)生中斷、可以產(chǎn)生哪類中斷、產(chǎn)生中斷后執(zhí)行哪段服務程序。
中斷源列表
允許中斷源產(chǎn)生中斷
芯片內(nèi)部許多部件都可以作為中斷源,但并不是每個中斷源都需要在中斷情況下進行操作,也可以通過其它方法來處理各種狀態(tài)。
比如通過串口發(fā)送一段數(shù)據(jù),可以選擇在一批發(fā)送結束后產(chǎn)生中斷,然后在中斷服務程序中發(fā)送下一批數(shù)據(jù)。也可以通過查詢發(fā)送標志位來決定什么時候發(fā)送下一批數(shù)據(jù)。
允許中斷源產(chǎn)生中斷由寄存器vicintenable和vicintenclr控制,前者使能中斷,后者禁止中斷。
中斷使能寄存器(vicintenable):
寄存器中每一位控制著一個中斷源,各中斷源的位置與中斷源列表所示相同。向某位寫入1時,允許對應的中斷源產(chǎn)生中斷。
中斷使能清零寄存器(vicintenclr):
與中斷使能寄存器的功能相反,向某位寫入1時,禁止對應的中斷源產(chǎn)生中斷。
選擇產(chǎn)生中斷的類型
arm7tdmi內(nèi)核具有fiq和irq兩個中斷輸入,所有中斷源產(chǎn)生的中斷都可以選擇產(chǎn)生其中一種中斷。這通過中斷選擇寄存器完成。
中斷選擇寄存器(vicintselect):
寄存器中每一位控制著一個中斷源,各中斷源的位置與中斷源列表所示相同。向某位寫入1時,對應中斷源產(chǎn)生的中斷為fiq中斷,否則為irq中斷。
中斷類型
中斷輸入請求可以在vic中被設置為以下三類:
fiq中斷:具有最高優(yōu)先級;
向量irq中斷:具有中等優(yōu)先級;
非向量irq中斷:具有最低優(yōu)先級;
向量irq中斷
vic最多支持16個向量irq中斷,這些中斷被分為16個優(yōu)先級,并且為每個優(yōu)先級指定一個服務程序入口地址。在發(fā)生向量irq中斷后,相應優(yōu)先級的服務程序入口地址被裝入向量地址寄存器vicvectaddr中,通過一條arm指令即可跳轉到相應的服務程序入口處,所以向量irq中斷具有較快的中斷響應。
非向量irq中斷
任何中斷源都可以設置為非向量irq中斷。它與向量irq中斷的區(qū)別在于前者不能為每個非向量irq中斷源設置服務程序地址,而是所有的非向量irq中斷都共用一個相同的服務程序入口地址。
當有多個中斷源被設置為非向量irq中斷時,需要在用戶程序中識別中斷源,并分別作出處理。所以非向量irq中斷響應延時相對較長。
向量irq中斷相關寄存器
vicvectcntl0~15和vicvectaddr0~15兩類寄存器與向量irq中斷設置有關,前者為中斷源分配向量irq中斷的優(yōu)先級,后者為該中斷優(yōu)先級設置服務程序入口地址。寄存器名稱最后的數(shù)字同時也代表該寄存器控制的向量irq中斷的優(yōu)先級,數(shù)值越小優(yōu)先級越高。
注意:如果將同一個中斷源分配給多個使能的向量irq中斷,那么該中斷源發(fā)生中斷時,會使用最高優(yōu)先級(最低編號)的寄存器設置。
向量irq中斷相關寄存器
向量控制寄存器(vicvectcntl0~15):
vicvectcntlx[4:0]:分配給此優(yōu)先級向量irq中斷的中斷源序號;
vicvectcntlx[5]:該位為1,使能當前優(yōu)先級的向量irq中斷。否則為禁止。
向量地址寄存器(vicvectaddr0~15):
該寄存器中存放對應優(yōu)先級向量irq中斷服務程序的入口地址。
非向量irq中斷相關寄存器
向量地址寄存器(vicdefvectaddr):
vicdefvectaddr寄存器存放非向量中斷服務程序的入口地址,當發(fā)生非向量中斷時該寄存器中保存的地址存入vicvectaddr寄存器。
產(chǎn)生中斷后的服務程序地址
在發(fā)生向量irq中斷后,vic能將對應中斷的服務程序地址存入vicvectaddr寄存器中。如果為非向量中斷,將把vicdefvectaddr寄存器的值存入該寄存器。在異常向量表的irq異常入口處放置一條指令,將vicvectaddr寄存器的內(nèi)容裝入程序計數(shù)器(pc),就可以跳轉到當前中斷的服務函數(shù)。 這樣的設計可以減小中斷響應延時。
向量地址寄存器(vicvectaddr):
中斷狀態(tài)寄存器
如果使用了多個非向量irq中斷或多個fiq中斷,那么在發(fā)生中斷后要在程序中查找中斷源。通過irq狀態(tài)寄存器和fiq狀態(tài)寄存器可以了解到這些中斷源的中斷請求狀態(tài)。
任何在vic中使能的中斷都會把中斷請求反映在“所有中斷狀態(tài)寄存器(vicrawintr)”中。
所有中斷狀態(tài)寄存器(vicrawintr):
fiq狀態(tài)寄存器(vicfiqstatus):
irq狀態(tài)寄存器(vicirqstatus):
軟件中斷寄存器
在一些特殊場合或者調(diào)試時,可能需要使用軟件強制產(chǎn)生某個中斷請求。
軟件中斷寄存器(vicsoftint):
軟件中斷清零寄存器(vicsoftintclear):
保護使能寄存器
在某些場合可能需要禁止在用戶模式下訪問vic寄存器,以提高軟件的安全等級。
軟件中斷寄存器(vicsoftint):
irq中斷的設計實例
設置外部中斷0產(chǎn)生向量irq中斷后執(zhí)行中斷服務程序“irq_eint0( )”。
圖示irq中斷的發(fā)生過程
使用vic的注意要點
如果在片內(nèi)ram中調(diào)試程序,并使用了中斷,那么必須將存儲器映射控制設置為內(nèi)部ram模式;
將多個中斷源設置為fiq,將增加中斷響應延時,所以建議fiq中斷只有一個中斷源;
ads1.2規(guī)定在定義中斷服務函數(shù)時必須加入關鍵字“__irq”,保證函數(shù)返回時會切換處理器模式;
在退出中斷服務程序時要清零相應外設的中斷標志,以及vicvectaddr寄存器,為響應下次中斷作好準備。
vic相關啟動代碼分析
上一個:RT0402BRD0739K2L,0402 39.2KΩ 0.1% 1/16W電阻
下一個:附近有沒有電腦維修的店,附近聯(lián)想電腦維修地址

普洱茶有哪些特點呢?
華為游戲卡怎樣解決(華為手機游戲太卡怎么解決)
做資料用什么軟件好,客戶資料管理選什么軟件好
君子蘭縮短童齡期促開花管理
電腦一直響的原因(電腦會響是什么情況)
女人冬天適合喝什么茶養(yǎng)生
鏟運機具體概念是什么?
監(jiān)理對工程變更審查原則包括哪些?
出入口控制技術在弱電行業(yè)的應用與發(fā)展趨勢
新電腦新固態(tài)硬盤如何分區(qū)教程,新的固態(tài)硬盤怎么分區(qū)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos