嵌入式技巧:ARM的三種中斷調(diào)試方法介紹
void ISR_IrqHandler(void)
{
IntOffSet = (unsigned int)INTOFFSET;
Clear_PendingBit(IntOffSet>>2) ;
(*InterruptHandlers[IntOffSet>>2])();
// 調(diào)用具體某中斷處理程序
}
采用動(dòng)態(tài)的中斷處理方法,在中斷源較多的情況下,中斷響應(yīng)時(shí)間和程序性能得到優(yōu)化。另外,在調(diào)試方面,此處理方法具有便于跟蹤調(diào)試的優(yōu)點(diǎn),并且根據(jù)需要,可以方便變換中斷處理函數(shù)。
軟件調(diào)試可以在SDRAM中或FLASH中進(jìn)行。在SDRAM中,讀寫方便,訪問(wèn)速度快。一般軟件調(diào)試應(yīng)在RAM中完成,但當(dāng)RAM空間小于FLASH程序空間,程序只能在FLASH運(yùn)行和調(diào)試時(shí),或者用戶希望了解程序在FLASH中實(shí)際運(yùn)行情況時(shí),就可以在FLASH中進(jìn)行程序調(diào)試。
進(jìn)行中斷調(diào)試時(shí),應(yīng)注意中斷入口位于SDRAM中或FLASH中0x18或0x1c地址,鏈接腳本文件必須使整個(gè)系統(tǒng)的代碼正確定位于0x0起始處,但SDRAM或FLASH對(duì)應(yīng)的鏈接腳本文件及工程配置注意區(qū)別。
(1)程序在SDRAM中運(yùn)行
在SDRAM中調(diào)試,使用SDRAM對(duì)應(yīng)的鏈接腳本文件。調(diào)試過(guò)程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;下載程序(在IDE開發(fā)環(huán)境中使用擴(kuò)展名*.elf);調(diào)試。
下載程序前必須啟動(dòng)命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動(dòng)在連接仿真器時(shí)自動(dòng)進(jìn)行,其中存儲(chǔ)區(qū)映射應(yīng)與程序在SDRAM中運(yùn)行時(shí)相同,保證整個(gè)系統(tǒng)的代碼正確定位于0x0起始處。下載程序的起始地址也為0x0,下載成功后便可進(jìn)行調(diào)試工作。
(2)程序在FLASH中運(yùn)行
在FLASH中調(diào)試,使用FLASH對(duì)應(yīng)的鏈接腳本文件。調(diào)試過(guò)程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;程序格式轉(zhuǎn)換(*.elf轉(zhuǎn)換為*.bin);固化*.bin程序;調(diào)試。
連接仿真器后不需要下載程序,存儲(chǔ)區(qū)映射由本身工程中啟動(dòng)文件運(yùn)行完成,不需要命令腳本文件。在本環(huán)境調(diào)試過(guò)程中,可以設(shè)置兩個(gè)硬件斷點(diǎn)。
(3)程序從FLASH中調(diào)到SDRAM中運(yùn)行
在某些應(yīng)用場(chǎng)合,強(qiáng)調(diào)程序運(yùn)行速度的情況下,希望程序在SDRAM中運(yùn)行,這樣就需要將FLASH中存儲(chǔ)的程序,在系統(tǒng)上電后搬運(yùn)到SDRAM某空間位置,然后自動(dòng)運(yùn)行。這種所謂的Bootloader技術(shù),在DSP系統(tǒng)中常被采用。
調(diào)試過(guò)程分兩步:
(a)首先將用戶程序在SDRAM中調(diào)試通過(guò),然后將*.bin文件固化到FLASH某一非0扇區(qū)地址空間;
(b) 將自己編寫的Bootloader搬運(yùn)程序調(diào)試通過(guò)并將Bootloader.bin文件固化到FLASH的 0扇區(qū)地址空間,搬運(yùn)程序在系統(tǒng)上電后,將(a)中FLASH某一非0扇區(qū)地址空間存儲(chǔ)的程序,搬運(yùn)到在SDRAM調(diào)試中同樣的空間位置,實(shí)現(xiàn)程序在SDRAM中運(yùn)行的目的。
另外注意,因?yàn)橛脩魧?shí)際的程序中斷入口必須位于FLASH的0x18或0x1c地址,所以Bootloader搬運(yùn)程序還應(yīng)具有中斷入口的跳轉(zhuǎn)功能,即把PC指針由此轉(zhuǎn)向處于SDRAM空間的中斷程序入口表,就是整個(gè)用戶程序被搬運(yùn)到SDRAM的那一位置。
如:LDR PC, =HandleIRQ
// HandleIRQ位于SDRAM空間中斷程序入口表
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論