1 S3C4480X中斷系統(tǒng)
圖1所示為S3C44BOX的中斷系統(tǒng)結(jié)構(gòu)框圖。中斷控制器的任務(wù)是在片內(nèi)差模電感外圍和片外中斷源組成的多重中斷發(fā)生時(shí),經(jīng)過優(yōu)先級(jí)判斷、選擇其中一個(gè)中斷;通過IRQ或FIQ向ARM7內(nèi)核發(fā)出IRQ或FIQ中斷請(qǐng)求,ARM7內(nèi)核從中斷控制器中獲取中斷信息,然后對(duì)中斷進(jìn)行處理,控制中斷設(shè)備的操作過程。
當(dāng)ARM7內(nèi)核接收到中斷控制器的中斷請(qǐng)求時(shí)會(huì)自動(dòng)執(zhí)行以下幾步操作,以實(shí)現(xiàn)中斷環(huán)境保護(hù)和程序跳轉(zhuǎn):
①將程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的中斷模式的程序狀態(tài)保存寄存器SPSR中,以實(shí)現(xiàn)對(duì)處理器當(dāng)前狀0603電感態(tài)、中斷屏蔽位和各條件標(biāo)志位的保存。
②設(shè)置當(dāng)前CPSR中的相應(yīng)位,屏蔽相應(yīng)中斷并切換處理器模式。
③將引起中斷指令的下一條指令的地址(斷點(diǎn)地址)保存到中斷模式的子程序鏈接寄存器LR中,使中斷服務(wù)程序執(zhí)行完后能正確返回原程序。
④給程序計(jì)數(shù)器PC強(qiáng)制賦值,使程序從相應(yīng)的向量地址開始執(zhí)行中斷服務(wù)程序。
當(dāng)中斷服務(wù)程序執(zhí)行完后,需要執(zhí)行以下幾步操作從中斷服務(wù)程序中返回:
①?gòu)闹袛嗄J蕉褩V谢謴?fù)所有修改過的通用寄存器(RO~R12)。
②將中斷模式SPSR寄存器的內(nèi)容復(fù)制到CPSR中,恢復(fù)被中斷模式程序的工作狀態(tài)。
③將LR的內(nèi)容賦給PC,使PC返回到相應(yīng)的指令處。
④清除CPSR中的中斷禁止標(biāo)志位。
在中斷返回的過程中,②和③需要同時(shí)完成。
2 μC/OS-II中斷處理過程
μC/OS-II提供了函數(shù)OSIntEnter()和OSIntExit(),用于中斷處理。函數(shù)OSIntEnter()通知操作系統(tǒng)進(jìn)入中斷服務(wù)程序,函數(shù)OSIntExit()在中斷服務(wù)程序返回時(shí)進(jìn)行相應(yīng)的處理。μC/OS-II的中斷響應(yīng)過程如圖2所示。進(jìn)入中斷服務(wù)程序時(shí),首先將全部CPU寄存器存入當(dāng)前任務(wù)棧,然后調(diào)用函數(shù)OSIntEnter(),或者將中斷嵌套層數(shù)計(jì)數(shù)器,即全局變量OSIntNesting直接加1,通知μC/OS-II進(jìn)入中斷服務(wù)程序,執(zhí)行用戶代碼進(jìn)行中斷服務(wù)。中斷服務(wù)完成后調(diào)用函數(shù)OSIntExit(),將變量
OSIntNesting減1。當(dāng)OSIntNesting減到O時(shí),所有中斷執(zhí)行完畢,此時(shí)μC/OS-II要判斷是否有優(yōu)先級(jí)較高的任務(wù)被中斷服務(wù)程序喚醒。如果有優(yōu)先級(jí)高的任務(wù)進(jìn)入就緒態(tài),μC/OS-II就返回到優(yōu)先級(jí)高的任務(wù)執(zhí)行;否則,返回到當(dāng)前任務(wù)繼續(xù)執(zhí)行。
通過對(duì)μC/OS-II中斷處理過程的分析可知,μC/OS-II只是提供繞行電感了簡(jiǎn)單的中斷管理機(jī)制差模電感器,對(duì)于中斷進(jìn)入時(shí)的中斷環(huán)境保護(hù)、中斷退出時(shí)的中斷環(huán)境恢復(fù)、中斷嵌套處理和堆棧分配等問題沒有給出具體的處理方法。另外,對(duì)于不同的處理器,其中斷處理的方法也不一樣,所以在不同的處理器上移植μC/OS-II后,要根據(jù)處理器的具體特點(diǎn),進(jìn)行中斷系統(tǒng)的設(shè)計(jì)。
3 中斷系統(tǒng)設(shè)計(jì)
在中斷系統(tǒng)設(shè)計(jì)過程中,所有的IRQ中斷納入操作系統(tǒng)的管理范圍,由操作系統(tǒng)統(tǒng)一管理;FIQ中斷獨(dú)立于操作系統(tǒng)之外,不受操作系統(tǒng)管理。因此,中斷系統(tǒng)的設(shè)計(jì)包括兩部分:IRQ中斷和FIQ中斷。
3.1 中斷系統(tǒng)結(jié)構(gòu)
S3C44BOX提供了IRQ和FIQ兩種中斷方式。ARM中設(shè)計(jì)FIQ中斷是為了在快速處理的場(chǎng)合使用,但是進(jìn)入操作系統(tǒng)進(jìn)行管理的任何中斷都需做一些同樣的前期準(zhǔn)備工作和后期結(jié)束工作,包括為被中一體電感器斷的任務(wù)保存環(huán)境等。如果把FIQ中斷納入操作系統(tǒng)進(jìn)行管理,則FIQ中斷的優(yōu)勢(shì)并不明顯,因此,在中斷系統(tǒng)的設(shè)計(jì)過程中沒有將FIQ中斷納入操作系統(tǒng)的管理范圍,而是由用戶單獨(dú)進(jìn)行FIQ中斷服務(wù)程序的設(shè)計(jì)。
大功率電感廠家 |大電流電感工廠