中斷處理模式: 外部中斷處理和內(nèi)部中斷處理的差異性
在現(xiàn)今SOC設(shè)計(jì)中,當(dāng)周邊裝置(Peripheral IP)想要和中央處理器(CPU)溝通時(shí),最常使用的機(jī)制是透過(guò)中斷(Interrupt)。周邊裝置可觸發(fā)中斷給中央處理器,當(dāng)中央處理器接收到中斷后,則可判斷是由那個(gè)周邊裝置觸發(fā)些中斷,接著處理相對(duì)應(yīng)的中斷處理程序(ISR,Interrupt Service Routine),藉此達(dá)到彼此溝通的目的。
本文引用地址:http://butianyuan.cn/article/170443.htm而AndesCore™在中斷處理方面,共支持兩種模式:內(nèi)部中斷處理器(IVIC Mode,Internal Vector Interrupt Controller)和外部中斷處理器(EVIC Mode,External Vector Interrupt Controller)。其中最大的差異性,即是中斷控制器所存在的位置。在內(nèi)部中斷處理模式下,AndesCore™本身即設(shè)置了一個(gè)中斷控制器存在于CPU內(nèi)部,經(jīng)由此中斷控制器來(lái)處理相關(guān)中斷的工作。而在外部中斷處理模式下,用戶(hù)必須在CPU外部實(shí)做一個(gè)中斷控制器來(lái)處理相關(guān)中斷工作。
除了上述的差異性之外,在硬件方面的整合和軟件方面的應(yīng)用,也存在些許差異性。本文之目的除了介紹這些差異性外,也提供一個(gè)簡(jiǎn)單的設(shè)計(jì)平臺(tái)供使用者參考。期望能對(duì)使用者有所幫助,也希望讀者不吝指教提供您寶貴的意見(jiàn)。
1. 中斷處理模式介紹
AndesCore™共支持兩種中斷處理模式:內(nèi)部中斷處理器(IVIC Mode,Internal Vector Interrupt Controller)和外部中斷處理器(EVIC Mode,External Vector Interrupt Controller)。以下的介紹將架構(gòu)于AndesCore™ N968A-S這顆中央處理器。帶領(lǐng)使用者循序漸進(jìn)地,了解這兩種中斷處理模式的差異。
1.1 Definition
AndesCore™ N968A-S支持兩種中斷處理模式,首先,我們先介紹關(guān)于這兩種模式的定義。
1.1.1 IVIC Mode
AndesCore™ N968A-S內(nèi)部設(shè)計(jì)了一個(gè)中斷控制器,所支持的中斷來(lái)源數(shù)目可透過(guò)配置來(lái)決定。目前最大可支持16個(gè)中斷來(lái)源,但可擴(kuò)充至32個(gè)。請(qǐng)參考圖表 1。若使用這存在于CPU內(nèi)部的中斷控制器來(lái)處理相關(guān)中斷工作時(shí),則為IVIC模式。假若SOC的中斷來(lái)源大于32個(gè)時(shí),使用者還是可以使用IVIC模式,但是需要將多個(gè)中斷來(lái)源合為一個(gè)中斷訊號(hào)線(xiàn)(ex: OR function),且中斷處理程序(ISR)在該中斷訊號(hào)線(xiàn)觸發(fā)時(shí),需要去判斷是由那個(gè)中斷來(lái)源所觸發(fā)。在N968A-S的IVIC mode之下,每個(gè)中斷來(lái)源可以選定值為0~3的優(yōu)先權(quán) (priority). 優(yōu)先權(quán)高的中斷來(lái)源可以打斷優(yōu)先權(quán)低的中斷來(lái)源。
1.1.2 EVIC Mode
假若IVIC模式不符合用戶(hù)所設(shè)計(jì)的系統(tǒng),用戶(hù)就需要選用EVIC模式。在此模式下,用戶(hù)需要額外設(shè)計(jì)一個(gè)中斷控制器,用來(lái)處理周邊裝置和中央處理器之間相關(guān)中斷的工作,作為兩者間溝通的橋梁。
圖表 1. AndesCore™ N968A-S 所支持中斷來(lái)源數(shù)目
1.1.1 Interruption Vector Entry Points
為了加速中斷處理的時(shí)間,AndesCore™ N968A-S內(nèi)部實(shí)做了一個(gè)Interruption Vector Table。將不同的中斷事件分別對(duì)應(yīng)到不同的Vector Entry,當(dāng)中斷發(fā)生時(shí),CPU即可判斷中斷是由那個(gè)周邊裝置所觸發(fā),并跳到該中斷所對(duì)應(yīng)的Vector Entry,進(jìn)而執(zhí)行相關(guān)的中斷處理程序(ISR)。
在前面章節(jié)有介紹AndesCore™ N968A-S支持兩種不同的中斷處理模式。因此,在不同的中斷處理模式下,也對(duì)應(yīng)了不同的Interruption Vector Table。
1.1.1.1 Interruption Vector Table of IVIC Mode
在IVIC模式下,所支持的中斷來(lái)源可由用戶(hù)來(lái)配置,支持的數(shù)目由2個(gè)到32個(gè)。Interruption Vector Table相關(guān)信息如下:
l 41 entry points (9 exceptions + 32 interrupts)
l Address = IVB.IVBASE + (entry number) * IVB.ESZ
(VEP: Vector Entry Point)
圖表2. Interruption Vector Table of IVIC Mode
1.1.1.1 Interruption Vector Table of EVIC Mode
在EVIC模式下,所支持的中斷來(lái)源數(shù)目可達(dá)到64個(gè)中斷。Interruption Vector Table相關(guān)信息如下:
l 73 entry points (9 exceptions + 64 interrupts)
l Address = IVB.IVBASE + (entry number) * IVB.ESZ
圖表3. Interruption Vector Table of EVIC Mode
1.2 Signal Descriptions
AndesCore™ N968A-S 提供相關(guān)中斷訊號(hào)線(xiàn),使得CPU可與周邊裝置或是外部中斷控制器溝通。在EVIC模式下,除了中斷來(lái)源訊號(hào)線(xiàn)之外,還包含了和外部中斷控制器相互溝通的訊號(hào)線(xiàn),詳細(xì)訊號(hào)線(xiàn)敘述如下:
其中,evic_ireqval和evic_ireqack這兩個(gè)訊號(hào)線(xiàn)用來(lái)和外部中斷控制器溝通。在IVIC模式下,周邊裝置的中斷訊號(hào)可和int_req[N:0]直接整合。當(dāng)周邊裝置觸發(fā)中斷時(shí),相對(duì)應(yīng)的int_req訊號(hào)會(huì)拉起,告知CPU該周邊裝置觸發(fā)了中斷,CPU即會(huì)跳到所對(duì)應(yīng)的Vector Entry來(lái)執(zhí)行相關(guān)的中斷處理程序。
而在EVIC模式下,外部中斷控制器會(huì)負(fù)責(zé)處理周邊裝置的中斷訊號(hào)。當(dāng)周邊裝置觸發(fā)中斷時(shí),外部中斷處理器會(huì)負(fù)責(zé)和周邊裝置溝通,并將相對(duì)應(yīng)的中斷訊號(hào)(int_req)和中斷需求訊號(hào)(evic_ireqval)發(fā)給CPU,當(dāng)CPU接收到中斷時(shí),會(huì)將中斷接收訊號(hào)(evic_ireqack)拉起,告知外部中斷處理器收到中斷,并去處理相關(guān)中斷處理程序。
水位傳感器相關(guān)文章:水位傳感器原理
評(píng)論