要:主要分析了S3C2410芯片及它相應(yīng)的外部中斷程序。首先介紹了S3C2410的中斷原理,引出相關(guān)中斷寄存器,然后介紹了這些寄存器的功能。針對(duì)這些寄存器的功能,詳細(xì)闡述了如何設(shè)置中斷寄存器的模式。在簡(jiǎn)要介紹用戶空間和內(nèi)核空間之后,設(shè)計(jì)了一個(gè)簡(jiǎn)單的中斷程序。實(shí)驗(yàn)結(jié)果證明,在開發(fā)板上中斷程序是快速響應(yīng)的。
關(guān)鍵詞:S3C2410;中斷;ARM;嵌入式系統(tǒng)
Analysis and Design of External Interrupt Program for S3C2410
WANG Qingping
(Hubei University of Education,Wuhan,430205,China)
Abstract:The paper analyses a simple interrupt program according to S3C2410 and discusses the principle of S3C2410 and the relative interrupt register and the function of these registers.It also introduces the method of interrupt registers.The embedded system space includes the kernel space and the user′s space,which is also introduced.To end the presentation,a simple interrupt program test that the interrupt program is immediate response to interrupt.
Keywords:S3C2410;interrupt;ARM;embedded system
1 引 言
在編寫嵌入式系統(tǒng)程序的時(shí)候,少不了中斷的使用,中斷程序是做嵌入式開發(fā)一個(gè)不可或缺的環(huán)節(jié)。因?yàn)橄到y(tǒng)中,設(shè)備是有分工的,不是所有的事情都由CPU處理,而往往分配一些任務(wù)給其他資源,在硬件資源處理中,CPU不過問,只是硬件資源處理完任務(wù)之后,再向CPU做一個(gè)匯報(bào),這就是中斷的產(chǎn)生。
從系統(tǒng)的角度來看,若有中斷,如果要快速地確定中斷源,最好設(shè)置足夠多的引腳來判斷中斷的來源,使得每個(gè)中斷都單獨(dú)使用一條,然后CPU根據(jù)相應(yīng)的引腳來確定采用哪一個(gè)中斷服務(wù)程序??墒沁@在現(xiàn)有的條件下是不可能的,這就要求不可能按照系統(tǒng)角度來設(shè)計(jì)中斷。在S3C2410中采用的是共享和獨(dú)占結(jié)合的方式。
中斷模式:FIQ和IRQ。中斷有三種類型:常規(guī)中斷、外部擴(kuò)展中斷、子中斷,一共有62號(hào)中斷,具體定義見linux/include/asm-arm/arch-s3c2410/irqs.h。對(duì)于每一個(gè)中斷,根據(jù)中斷類型向不同的寄存器填寫數(shù)據(jù),具體操作在后面進(jìn)行詳細(xì)論述。如果多個(gè)硬件同時(shí)產(chǎn)生中斷,就有一個(gè)中斷優(yōu)先,優(yōu)先級(jí)高的先處理,如圖1所示。
2 相關(guān)中斷寄存器
在編寫中斷程序中,往往要對(duì)一些寄存器進(jìn)行設(shè)置,才能進(jìn)入服務(wù)程序,在此介紹一些編程中可能用到的寄存器,相關(guān)定義在文件S3C2410中。
除了0~3號(hào)中斷,其他中斷都是與其他中斷共享一個(gè)中斷源,因此在這些中斷之間,首先必須通過底層操作,屏蔽或者懸掛一些中斷,然后再在上層中與其他中斷源競(jìng)爭(zhēng)中斷服務(wù)。
PSR:程序狀態(tài)寄存器,CPU的程序狀態(tài)寄存器,含有I位和F位,如果I位置1,則不允許產(chǎn)生IRQ中斷,如果F位置1,則不允許產(chǎn)生FIQ中斷。