何立軍 高楊 高毅
摘要:中斷是指某一外設(shè)在數(shù)據(jù)準(zhǔn)備就緒后,向CPU發(fā)出請(qǐng)求中斷信號(hào),請(qǐng)求CPU暫時(shí)中斷目前的工作而進(jìn)行數(shù)據(jù)交換。中斷是嵌入式系統(tǒng)必不可少的重要組成部分,是嵌入式系統(tǒng)中外設(shè)功能實(shí)現(xiàn)的一種重要方法。該文介紹了TI公司常用DSP芯片TMS320F240的中斷機(jī)制及其編程,文章從中斷源,中斷內(nèi)部結(jié)構(gòu)和中斷流程這三個(gè)方面對(duì)TMS320F240的中斷機(jī)制進(jìn)行了詳細(xì)說(shuō)明,同時(shí)給出了具體的在工程中得到驗(yàn)證的中斷編程實(shí)例。
關(guān)鍵詞:DSP;TMS320F240;中斷;嵌入式系統(tǒng);中斷服務(wù)程序
中圖分類號(hào):TP332 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1009-3044(2014)21-5095-04
中斷是指某一外設(shè)在數(shù)據(jù)準(zhǔn)備就緒后,向CPU發(fā)出請(qǐng)求中斷信號(hào),請(qǐng)求CPU暫時(shí)中斷目前的工作而進(jìn)行數(shù)據(jù)交換。當(dāng)CPU響應(yīng)這個(gè)中斷時(shí),便暫停運(yùn)行主程序,并自動(dòng)轉(zhuǎn)移到該設(shè)備的中斷服務(wù)程序。直到中斷服務(wù)程序結(jié)束后,CPU又回到原來(lái)的主程序。中斷是嵌入式系統(tǒng)必不可少的重要組成部分,是嵌入式系統(tǒng)中外設(shè)功能實(shí)現(xiàn)的一種重要方法。中斷對(duì)輸入輸出處理、多道程序和分時(shí)操作、實(shí)時(shí)處理和人機(jī)聯(lián)系等方面都起著重要的作用。
1 TMS320F240芯片簡(jiǎn)介
TMS320F240芯片是TI公司生產(chǎn)的用于數(shù)字發(fā)動(dòng)機(jī)控制和嵌入式系統(tǒng)研發(fā)的DSP芯片,采用TMS320系列特有的專為實(shí)時(shí)信號(hào)處理所設(shè)計(jì)的體系結(jié)構(gòu),是DSP C2000平臺(tái)的成員之一,并針對(duì)控制功能應(yīng)用進(jìn)行了優(yōu)化。TMS320F240在擁有強(qiáng)大的實(shí)時(shí)處理能力的同時(shí),將控制器的各種外設(shè)功能集成于一身,在控制系統(tǒng)領(lǐng)域得到了很好的應(yīng)用。TMS320F240的主要技術(shù)指標(biāo)為:32位中央算術(shù)邏輯單元、32位累加器、16位*16位并行硬件乘法器,并帶有32位結(jié)果寄存器、3個(gè)定標(biāo)移位寄存器和8個(gè)輔助寄存器;片上544W的數(shù)據(jù)RAM和16KW的程序FLASH;帶有軟件等待狀態(tài)產(chǎn)生器的外部存儲(chǔ)器接口;4級(jí)流水線,8級(jí)硬件堆棧,6個(gè)外部中斷;單指令周期為62.5ns,絕大多數(shù)指令可在單周期內(nèi)完成;片上集成事件管理器、鎖相環(huán)時(shí)鐘發(fā)生器;具有在線調(diào)試功能,使用JTAG接口來(lái)調(diào)試DSP。
2 TMS320F240芯片的中斷機(jī)制
2.1 中斷源
F240內(nèi)部可以處理三種類型的中斷源,分別是:
1)復(fù)位:復(fù)位操作確保設(shè)備按照確定的序列來(lái)運(yùn)行,設(shè)備不會(huì)進(jìn)入非法狀態(tài)。復(fù)位源有5種,它們分別是看門狗定時(shí)器復(fù)位,軟復(fù)位,非法地址復(fù)位,外部硬件引腳RS復(fù)位和外部硬件引腳PORESET復(fù)位。其中,看門狗定時(shí)器復(fù)位:當(dāng)看門狗定時(shí)器溢出或者看門狗寄存器寫入非法值時(shí),F(xiàn)240產(chǎn)生看門狗定時(shí)器復(fù)位;軟復(fù)位:清除系統(tǒng)控制寄存器(SYSCR)中RESET0位和RESET1位將產(chǎn)生系統(tǒng)復(fù)位;非法地址復(fù)位:F240的存儲(chǔ)器空間中有一部分存儲(chǔ)器空間標(biāo)注為非法空間(即未實(shí)現(xiàn)的地址空間),對(duì)非法空間的任何訪問(wèn)都會(huì)產(chǎn)生非法地址復(fù)位;外部硬件引腳RS復(fù)位:在RS引腳上輸入外部復(fù)位脈沖即可;外部硬件引腳PORESET復(fù)位:在RS引腳上產(chǎn)生上電復(fù)位脈沖。其中前3種復(fù)位源由F240內(nèi)部產(chǎn)生,最后兩種復(fù)位源由外部控制的。復(fù)位發(fā)生后,F(xiàn)240停止運(yùn)行程序。在復(fù)位期間,RAM的數(shù)據(jù)保持不變,所有受復(fù)位控制的寄存器被復(fù)位。復(fù)位后,程序可以檢查上電復(fù)位標(biāo)志、非法地址標(biāo)志、軟復(fù)位標(biāo)志和看門狗復(fù)位標(biāo)志以確定復(fù)位原因;
2)硬件中斷:硬件中斷有兩種類型,一是F240硬件中斷信號(hào),二是片內(nèi)硬件產(chǎn)生中斷。其中,硬件中斷信號(hào):F240有5個(gè)外部硬件中斷信號(hào),它們分別是XINT1,XINT2,XINT3,PDPINT和NMI。其中XINT1,XINT2,XINT3和NMI這四個(gè)中斷都具有各自的中斷控制寄存器和中斷狀態(tài)寄存器,可以通過(guò)設(shè)置它們各自的中斷控制寄存器來(lái)觸發(fā)一個(gè)上升沿的中斷或者下降沿的中斷。硬件產(chǎn)生的中斷:F240片內(nèi)外圍設(shè)備模塊(包括事件管理器,SPI,SCI,看門狗和ADC)通過(guò)內(nèi)核產(chǎn)生中斷;
3)軟件中斷:F240可以通過(guò)INTR指令,NMI指令和TRAP指令產(chǎn)生。其中,INTR指令:這條指令允許軟件對(duì)F240中斷的任何初始化。這條指令的操作碼是CPU 程序分支中斷向量的位置,同時(shí),這條指令禁止了可屏蔽中斷。NMI指令:這條指令將強(qiáng)制程序跳轉(zhuǎn)到中斷向量24h的中斷復(fù)位程序處。TRAP指令:這條指令將強(qiáng)制程序跳轉(zhuǎn)到中斷向量22h的中斷復(fù)位程序處。TRAP指令不禁止其他的可屏蔽中斷,因此,非屏蔽中斷可中斷TRAP指令的中斷服務(wù)程序。
2.2 TMS320F240芯片的中斷結(jié)構(gòu)
F240提供了32個(gè)中斷向量位置(0000-003E),這些向量包括硬件中斷向量和軟件中斷向量。F240 內(nèi)核對(duì)所有硬件中斷線指定了從1到10(1是最高優(yōu)先級(jí))的優(yōu)先級(jí)。當(dāng)F240識(shí)別到中斷時(shí),首先處理高優(yōu)先級(jí)的中斷,然后按照順序處理其它中斷。
F240提供6個(gè)可屏蔽中斷級(jí)(INT1,INT2,INT3,INT4,INT5和INT6) ,因?yàn)镕240有超過(guò)6個(gè)的可屏蔽中斷源,因此每個(gè)中斷級(jí)可被多個(gè)中斷源共享。圖1說(shuō)明了CPU的INT1中斷及接收和識(shí)別可屏蔽中斷的結(jié)構(gòu)過(guò)程,圖中表示出了7個(gè)中斷源(XINT1, XINT2, XINT3, SPI, SCIRX, SCITX和RTI)共享INT1中斷級(jí)的結(jié)構(gòu)。INT2-INT6與INT1的結(jié)構(gòu)控制相似。
每個(gè)中斷源都有自己的控制寄存器,控制寄存器中包括1個(gè)中斷標(biāo)志位和一個(gè)可屏蔽位。當(dāng)F240內(nèi)核接收到中斷信號(hào)后,將相應(yīng)控制寄存器的標(biāo)志位置為‘1以表示有中斷請(qǐng)求。如果可屏蔽位被置‘1,中斷信號(hào)會(huì)被送到中斷仲裁邏輯處。仲裁邏輯對(duì)發(fā)出請(qǐng)求的中斷的優(yōu)先級(jí)進(jìn)行比較,將發(fā)出請(qǐng)求的最高優(yōu)先級(jí)的中斷傳遞到CPU處,CPU便對(duì)該中斷進(jìn)行處理。
2.3 TMS320F240芯片的中斷流程
當(dāng)F240識(shí)別到可屏蔽中斷,將按照如下的序列進(jìn)行操作:
1) 設(shè)置相應(yīng)中斷控制寄存器的標(biāo)志位,如果同時(shí)設(shè)置了掩碼,那么相應(yīng)的IFR位也會(huì)被設(shè)置;
2) 一旦IFR位被設(shè)置,就會(huì)判斷確認(rèn)條件(INTM位=0且IMR位=1) 。如果條件成立,CPU就會(huì)處理中斷,并產(chǎn)生一個(gè)中斷應(yīng)答信號(hào);否則即忽略中斷并繼續(xù)處理現(xiàn)行的代碼序列;
3) 中斷被處理之后,IFR位就會(huì)被清零且INTM位被置為1(用以過(guò)濾其它可屏蔽中斷)。但相應(yīng)的控制寄存器的標(biāo)志位不會(huì)被清除;
4) 返回地址(增加的PC值)被存儲(chǔ)在堆棧內(nèi);
5) CPU會(huì)轉(zhuǎn)向并執(zhí)行中斷服務(wù)程序(ISR)。當(dāng)遇到一個(gè)返回指令時(shí),ISR即告結(jié)束,同時(shí)將返回地址從堆棧中彈出。CPU會(huì)繼續(xù)處理中斷代碼序列。
當(dāng)F240識(shí)別到非屏蔽中斷,F(xiàn)240將按照如下的序列進(jìn)行操作:
1) CPU立刻響應(yīng)中斷,并產(chǎn)生一個(gè)中斷應(yīng)答信號(hào);
2) 如果是由RS管腳、NMI管腳、NMI指令或者INTR指令產(chǎn)生的中斷,INTM位會(huì)被設(shè)置為1以阻止可屏蔽的硬件中斷。如果是由TRAP指令產(chǎn)生的中斷,則INTM位不會(huì)被設(shè)為1;
3) 返回地址(增加的PC值)被存儲(chǔ)在堆棧內(nèi);
4) CPU會(huì)轉(zhuǎn)向并執(zhí)行中斷服務(wù)程序(ISR)。當(dāng)遇到一個(gè)返回指令時(shí),ISR即告結(jié)束,同時(shí)將返回地址從堆棧中彈出。CPU會(huì)繼續(xù)處理中斷代碼序列。
3 TMS320F240芯片的中斷編程
TMS320F240芯片的中斷編程主要包括中斷服務(wù)程序的連接,中斷寄存器的初始化和中斷服務(wù)程序的編寫。其中,中斷服務(wù)程序的連接是在中斷和中斷服務(wù)程序上建立對(duì)應(yīng)關(guān)系;中斷寄存器的初始化包括對(duì)事件管理控制寄存器,中斷控制寄存器和中斷屏蔽寄存器的控制;中斷服務(wù)程序是中斷的核心,是用戶功能的實(shí)現(xiàn)。下面通過(guò)某型號(hào)課題已經(jīng)通過(guò)驗(yàn)證的實(shí)例對(duì)F240的中斷編程進(jìn)行說(shuō)明。
改實(shí)例中包括三個(gè)主要的中斷復(fù)位程序Timer_isr(), Host_isr()和Watchdog_isr(),它們的占用的中斷分別是INT3, INT6 和NMI,它們的中斷源分別是定時(shí)器,XINT3和外部NMI中斷信號(hào)。
下面中斷服務(wù)程序的連接,也是程序的最開始部分,對(duì)中斷的初始化也可以寫在程序段START段內(nèi)。這里的START是F240復(fù)位后程序運(yùn)行的起始點(diǎn)。
4 結(jié)束語(yǔ)
本文闡述了TMS320F240的中斷機(jī)制,并從工程應(yīng)用的角度闡述F240中斷編程的實(shí)現(xiàn)方法,該應(yīng)用已經(jīng)在某型號(hào)機(jī)載計(jì)算機(jī)上得到了驗(yàn)證,因此,文中所介紹的方法可以為不同情況下的TMS320F240中斷編程提供參考。
參考文獻(xiàn):
[1] TMS320F/C240 DSP Controllers Reference Guide.pdf[EB/OL].TI公司官方網(wǎng)站 www.ti.com.
[2] 文全剛,苗雨.S3C2410芯片的中斷機(jī)制及編程[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006(16):36-38.
[3] 徐佩.高性能DSP芯片TMS320F2812應(yīng)用技術(shù)研究[J].航空計(jì)算技術(shù),2007,37(5):86-88.