欧美另类日韩中文色综合,天堂va亚洲va欧美va国产,www.av在线播放,大香视频伊人精品75,奇米777888,欧美日本道免费二区三区,中文字幕亚洲综久久2021

中斷寄存器

時(shí)間:2023-05-01 11:03:09 資料 我要投稿
  • 相關(guān)推薦

中斷寄存器

一.

S3C2440A 中的中斷控制器接受來自60 個(gè)中斷源的請(qǐng)求。

提供這些第一文庫(kù)網(wǎng)中斷源的是內(nèi)部外設(shè),如DMA 控制器、UART、IIC 等等。在這些中斷源中,UARTn、AC97 和EINTn 中斷對(duì)于中斷控制器而言是“或”關(guān)系。

當(dāng)從內(nèi)部外設(shè)和外部中斷請(qǐng)求引腳收到多個(gè)中斷請(qǐng)求時(shí),中斷控制器在仲裁步驟后請(qǐng)求ARM920T 內(nèi)核的FIQ或IRQ。仲裁步驟由硬件優(yōu)先級(jí)邏輯決定并且寫入結(jié)果到幫助用戶通告是各種中斷源中的哪個(gè)中斷發(fā)生了的中斷掛起寄存器中

二.中斷控制器操作

用來選擇FIQ或IRQ

程序狀態(tài)寄存器(PSR)的F 位和I 位

如果ARM920T CPU 中的PSR 的F 位被置位為1,CPU 不會(huì)接受來自中斷控制器的快中斷請(qǐng)求(FIQ)。同樣的如果PSR 的I 位被置位為1,CPU 不會(huì)接受來自中斷控制器的中斷請(qǐng)求(IRQ)。因此,中斷控制器可以通過清除PSR 的F 位和I 位為0 并且設(shè)置INTMSK 的相應(yīng)位為0 來接收中斷。

.中斷控制器特殊寄存器

此處中斷控制器中有5 個(gè)控制寄存器:源掛起寄存器、中斷模式寄存器、屏蔽寄存器、優(yōu)先級(jí)寄存器和中斷掛

起寄存器。

所有來自中斷源的中斷請(qǐng)求首先被記錄到源掛起寄存器中;谥袛嗄J郊拇嫫鳎鼈儽环峙涞2 個(gè)組中,包

括快中斷請(qǐng)求(FIQ)和中斷請(qǐng)求(IRQ)。IRQ 的多仲裁過程是基于優(yōu)先級(jí)寄存器。

三.中斷掛起寄存器

S3C2440A 有兩個(gè)中斷掛起寄存器:源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND)。這些掛起寄存器表明一個(gè)中斷請(qǐng)求是否為掛起。

當(dāng)中斷源請(qǐng)求中斷服務(wù),SRCPND 寄存器的相應(yīng)位被置位為1,并且同時(shí)在仲裁步驟后INTPND 寄存器僅有1 位自動(dòng)置位為1。如果屏蔽了中斷,則SRCPND 寄存器的相應(yīng)位被置位為1。這

并不會(huì)引起INTPND 寄存器的位的改變。

當(dāng)INTPND 寄存器的掛起位為置位,每當(dāng)I 標(biāo)志或F 標(biāo)志被清除為0 中斷服務(wù)程序?qū)㈤_始。

SRCPND 和INTPND 寄存器可以被讀取和寫入,因此服務(wù)程序必須首先通過寫1 到SRCPND寄存器的相應(yīng)位來清除掛起狀態(tài)并且通過相同方法來清除INTPND 寄存器中掛起狀態(tài)。

四.中斷屏蔽寄存器

此寄存器表明如果中斷相應(yīng)的屏蔽位被置位為1 則禁止該中斷。如果某個(gè)INTMSK 的中斷屏蔽位為0,將正常服務(wù)中斷。如果INTMSK 的中斷屏蔽位為1 并且產(chǎn)生了中斷,將置位源掛起位。

源掛起(SRCPND)寄存器

SRCPND 寄存器由32 位組成,其每一位都涉及一個(gè)中斷源。如果中斷源產(chǎn)生了中斷則相應(yīng)的位被設(shè)置為1 并且等待中斷服務(wù)。因此此寄存器指示出是哪個(gè)中斷源正在等待請(qǐng)求服務(wù)。注意SRCPND 寄存器的每一位都是由中斷源自動(dòng)置位,其不顧INTMASK 寄存器中的屏蔽位。另外SRCPND 寄存器不受中斷控制器的優(yōu)先級(jí)邏輯的影響。在指定中斷源的中斷服務(wù)程序中,必須通過清除SRCPND 寄存器的相應(yīng)位來正確的獲得來自相同源的中斷請(qǐng)求。如果從ISR 中返回并且未清除相應(yīng)位,則中斷控制器的操作就好像其它中斷請(qǐng)求已經(jīng)從同一個(gè)源進(jìn)入了。換句話說,如果SRCPND 寄存器的指定位被設(shè)置為1,其通常被認(rèn)作一個(gè)有效中斷請(qǐng)求正在等待服務(wù)。清除相應(yīng)位的時(shí)間依賴于用戶的需要。如果希望收到來自相同源的其它有效請(qǐng)求,則應(yīng)該首先清除相應(yīng)位

并且接著使能中斷。

可以通過寫入一個(gè)數(shù)據(jù)到此寄存器來清除SRCPND 寄存器的指定位。其只清除那些數(shù)據(jù)中被設(shè)置為1 的相應(yīng)位置的SRCPND 位。那些數(shù)據(jù)中被設(shè)置為0 的相應(yīng)位置的位保持不變。

中斷模式(INTMOD)寄存器

此寄存器由32 位組成,其每一位都都涉及一個(gè)中斷源。如果某個(gè)指定位被設(shè)置為1,則在FIQ(快中斷)模式

中處理相應(yīng)中斷。否則則在IRQ 模式中處理。特別注意,只能有一個(gè)中斷設(shè)置為快速中斷模式。

中斷屏蔽(INTMSK)寄存器

此寄存器由32 位組成,其每一位都涉及一個(gè)中斷源。如果某個(gè)指定為被設(shè)置為1,則CPU 不會(huì)去服務(wù)來自

相應(yīng)中斷源(請(qǐng)注意即使在這種情況中,SRCPND 寄存器的相應(yīng)位也設(shè)置為1)的中斷請(qǐng)求。如果屏蔽位為0,則可以服務(wù)中斷請(qǐng)求。

中斷掛起(INTPND)寄存器

中斷掛起寄存器中32 位的每一位都表明了是否相應(yīng)未屏蔽并且正在等待中斷服務(wù)的中斷請(qǐng)求具有最高的優(yōu)先

級(jí)。當(dāng)INTPND 寄存器在優(yōu)先級(jí)邏輯后被定位了,只有1 位可以設(shè)置為1 并且產(chǎn)生中斷請(qǐng)求IRQ 給CPU。IRQ 的

中斷服務(wù)程序中可以讀取此寄存器來決定服務(wù)32 個(gè)中斷源的哪個(gè)源。

就如SRCPND 寄存器,必須在中斷服務(wù)程序中清除了SRCPND 寄存器后清除此寄存器。可以通過寫入數(shù)據(jù)

到此寄存器中來清除INTPND 寄存器的指定位。只會(huì)清除數(shù)據(jù)中設(shè)置為1 的相應(yīng)INTPND 寄存器位的位置。數(shù)據(jù)

中設(shè)置為0 的相應(yīng)位的位置則保持不變。特別注意:在清除源掛起寄存器和中斷掛起寄存器時(shí),是向寄存器中的相應(yīng)位寫1,不是寫0,這是由寄存器的硬件結(jié)構(gòu)決定的。

次級(jí)源掛起(SUBSRCPND)寄存器

可以通過寫入數(shù)據(jù)到此寄存器來清除SUBSRCPND 寄存器的指定位。只有數(shù)據(jù)中那些被設(shè)置為1 的相應(yīng)

SUBSRCPND 寄存器的位的位置才能被清除。數(shù)據(jù)中那些被設(shè)置為0 的相應(yīng)位的位置則保

持不變。

中斷次級(jí)屏蔽(INTSUBMSK)寄存器

此寄存器有11 位,其每一位都與一個(gè)中斷源相聯(lián)系。如果某個(gè)指定位被設(shè)置為1,則相應(yīng)中斷源的中斷請(qǐng)求

不會(huì)被CPU 所服務(wù)(請(qǐng)注意即使在這種情況中,SRCPND 寄存器的相應(yīng)位也設(shè)置為1)。如果屏蔽位為0,則可以

服務(wù)中斷請(qǐng)求。

還有就是清除中斷時(shí)有子中斷的要先清除子中斷位,再清除中斷位,有子中斷的要設(shè)置子中斷屏蔽寄存器打開子中斷。

中斷順序

1.設(shè)置好中斷模式以及相關(guān)的棧,可看三星提供的初始化文件。

2.在異常向量表設(shè)置好相應(yīng)的跳轉(zhuǎn)指令。那么當(dāng)產(chǎn)生中斷的時(shí)候,PC指針就會(huì)跳到該向量表處,那么就會(huì)執(zhí)行跳轉(zhuǎn)指令到相應(yīng)的服務(wù)程序入口。

3.在設(shè)置異常模式下CPU模式和相關(guān)的棧之后(三星的初始化文件),就可以用跳轉(zhuǎn)指令,跳到我們的C語言部分。

4.在C語言部分,就可以寫我們的程序啦:

中斷——>次級(jí)中斷源掛起寄存器——>*中斷次級(jí)屏蔽寄存器——>源掛起寄存器——>*中斷屏蔽寄存器——>*中斷模式控制寄存器——>*(1)優(yōu)先級(jí)寄存器——>中斷掛起寄存器——>IRQ

參考:

書籍:S3C2440手冊(cè)