
嵌入式技巧:深度理解三種中斷調(diào)試方法
發(fā)布時間:2016-09-27 責(zé)任編輯:susan
【導(dǎo)讀】參照嵌入式軟件的開發(fā)流程。第一步:工程建立和配置。第二步:編輯源文件。第三步:工程編譯和鏈接。第四步:軟件的調(diào)試。第五步:執(zhí)行文件的固化。

在整個流程中,用戶首先需要建立工程并對工程做初步的配置,包括配置處理器和配置調(diào)試設(shè)備。編輯工程文件,包括自己編寫的匯編和C語言源程序,還有工程編譯時需要編寫的鏈接腳本文件,調(diào)試過程中需要編寫存儲區(qū)映像文件和命令腳本文件,以及上電復(fù)位時的程序運行入口的啟動程序文件。
對后四種文件的理解很重要,其作用解釋如下。
(1) 鏈接腳本文件:在程序編譯時起作用。該文件描述代碼鏈接定位的有關(guān)信息,包括代碼段,數(shù)據(jù)段,地址段等,鏈接器必須使用該文件對整個系統(tǒng)的代碼做正確的定位。在SDRAM中調(diào)試程序、在FLASH中調(diào)試或固化后運行的鏈接腳本文件應(yīng)加以區(qū)分。(在IDE開發(fā)環(huán)境中使用擴(kuò)展名*.ld)
(2)命令腳本文件:在SDRAM中調(diào)試程序時起作用。在集成環(huán)境與目標(biāo)連接時、軟件調(diào)試過程中以及目標(biāo)板復(fù)位后,有時需要集成環(huán)境自動完成一些特定的操作,比如復(fù)位目標(biāo)板、清除看門狗、屏蔽中斷寄存器、存儲區(qū)映射等。這些操作可以通過執(zhí)行一組命令序列來完成,保存一組命令序列的文本文件稱為命令腳本文件(在 IDE開發(fā)環(huán)境中使用擴(kuò)展名*.cs)。
(3)存儲區(qū)映像文件:在SDRAM中調(diào)試程序時起作用。在軟件調(diào)試過程中訪問非法存儲區(qū)在部分處理器和目標(biāo)板上會產(chǎn)生異常,如果異常沒有處理,則會導(dǎo)致軟件調(diào)試過程無法繼續(xù),為了防止以上問題并調(diào)整仿真器訪問速度以達(dá)到最合適的水平,提供這樣一種用于描述各個存儲區(qū)性質(zhì)的文件叫存儲區(qū)映像文件(在IDE開發(fā)環(huán)境中使用擴(kuò)展名*.map)。
在程序的調(diào)試過程中可以選擇使用存儲區(qū)映像文件*.map和命令腳本文件*. cs配合程序的調(diào)試。
(4) 啟動文件:它主要是完成一些和硬件相關(guān)的初始化的工作,為應(yīng)用程序做準(zhǔn)備。一般,啟動代碼的第一步是設(shè)置中斷和異常向量;第二步是完成系統(tǒng)啟動所必須的寄存器配置;第三步設(shè)置看門狗及用戶設(shè)計的部分外圍電路;第四步是配置系統(tǒng)所使用的存儲區(qū)分配地址空間; 第五步是變量初始化;第六步是為處理器的每個工作模式設(shè)置棧指針;最后一步是進(jìn)入高級語言入口函數(shù)(Main函數(shù))。
中斷程序設(shè)計
中斷調(diào)試方面可以采用類似矢量中斷動態(tài)處理方式,讓中斷對應(yīng)的確定地址代碼調(diào)轉(zhuǎn)到RAM的固定地址處,定義一個函數(shù)指針指向該固定地址,就可以隨時通過替換RAM固定地址處的代碼,實現(xiàn)動態(tài)改變中斷處理函數(shù)。
具體方法是:
(1)將中斷源函數(shù)指針定義在RAM中相對的固定地址,建立中斷矢量表;
void SetInterrupt (U32 vector, void (*handler)()){ InterruptHandlers[vector] = handler;}
(2)在程序中,調(diào)用具體某中斷源的中斷處理函數(shù);
如: SetInterrupt(IIC_INT,IICWriteIsr);
/* 聲明IIC中斷處理函數(shù),其中IIC_INT為 IIC中斷源序號,IICWriteIsr為 IIC的寫中斷處理函數(shù) */
(3)在0x18處的IRQ或0x1C處的FIQ中斷入口函數(shù)中,獲取中斷源、清除中斷掛起標(biāo)志、通過已定義的中斷源函數(shù)指針進(jìn)入用戶具體某中斷處理程序。
void ISR_IrqHandler(void){ IntOffSet = (unsigned int)INTOFFSET; Clear_PendingBit(IntOffSet>>2) ;(*InterruptHandlers[IntOffSet>>2])();// 調(diào)用具體某中斷處理程序}
采用動態(tài)的中斷處理方法,在中斷源較多的情況下,中斷響應(yīng)時間和程序性能得到優(yōu)化。另外,在調(diào)試方面,此處理方法具有便于跟蹤調(diào)試的優(yōu)點,并且根據(jù)需要,可以方便變換中斷處理函數(shù)。
中斷調(diào)試
軟件調(diào)試可以在SDRAM中或FLASH中進(jìn)行。在SDRAM中,讀寫方便,訪問速度快。一般軟件調(diào)試應(yīng)在RAM中完成,但當(dāng)RAM空間小于FLASH程序空間,程序只能在FLASH運行和調(diào)試時,或者用戶希望了解程序在FLASH中實際運行情況時,就可以在FLASH中進(jìn)行程序調(diào)試。
進(jìn)行中斷調(diào)試時,應(yīng)注意中斷入口位于SDRAM中或FLASH中0x18或0x1c地址,鏈接腳本文件必須使整個系統(tǒng)的代碼正確定位于0x0起始處,但SDRAM或FLASH對應(yīng)的鏈接腳本文件及工程配置注意區(qū)別。
(1)程序在SDRAM中運行
在SDRAM中調(diào)試,使用SDRAM對應(yīng)的鏈接腳本文件。調(diào)試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;下載程序(在IDE開發(fā)環(huán)境中使用擴(kuò)展名*.elf);調(diào)試。
下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進(jìn)行,其中存儲區(qū)映射應(yīng)與程序在SDRAM中運行時相同,保證整個系統(tǒng)的代碼正確定位于0x0起始處。下載程序的起始地址也為0x0,下載成功后便可進(jìn)行調(diào)試工作。
(2)程序在FLASH中運行
在FLASH中調(diào)試,使用FLASH對應(yīng)的鏈接腳本文件。調(diào)試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;程序格式轉(zhuǎn)換(*.elf轉(zhuǎn)換為*.bin);固化*.bin程序;調(diào)試。
連接仿真器后不需要下載程序,存儲區(qū)映射由本身工程中啟動文件運行完成,不需要命令腳本文件。在本環(huán)境調(diào)試過程中,可以設(shè)置兩個硬件斷點。
(3)程序從FLASH中調(diào)到SDRAM中運行
在某些應(yīng)用場合,強(qiáng)調(diào)程序運行速度的情況下,希望程序在SDRAM中運行,這樣就需要將FLASH中存儲的程序,在系統(tǒng)上電后搬運到SDRAM某空間位置,然后自動運行。這種所謂的Bootloader技術(shù),在DSP系統(tǒng)中常被采用。
調(diào)試過程分兩步:
(a)首先將用戶程序在SDRAM中調(diào)試通過,然后將*.bin文件固化到FLASH某一非0扇區(qū)地址空間;
(b) 將自己編寫的Bootloader搬運程序調(diào)試通過并將Bootloader.bin文件固化到FLASH的 0扇區(qū)地址空間,搬運程序在系統(tǒng)上電后,將(a)中FLASH某一非0扇區(qū)地址空間存儲的程序,搬運到在SDRAM調(diào)試中同樣的空間位置,實現(xiàn)程序在SDRAM中運行的目的。
另外注意,因為用戶實際的程序中斷入口必須位于FLASH的0x18或0x1c地址,所以Bootloader搬運程序還應(yīng)具有中斷入口的跳轉(zhuǎn)功能,即把PC指針由此轉(zhuǎn)向處于SDRAM空間的中斷程序入口表,就是整個用戶程序被搬運到SDRAM的那一位置。
如:LDR PC, =HandleIRQ
// HandleIRQ位于SDRAM空間中斷程序入口表
特別推薦
- 智能終端的進(jìn)化論:邊緣AI突破能耗與安全隱私的雙重困局
- 水泥電阻技術(shù)深度解析:選型指南與成本對比
- 滑動分壓器的技術(shù)解析與選型指南
- 如何通過 LLC 串聯(lián)諧振轉(zhuǎn)換器優(yōu)化LLC-SRC設(shè)計?
- 超聲波清洗暗藏"芯片密碼":二氧化硅顆粒撞擊機(jī)理揭秘
- 運動追蹤+沖擊檢測雙感知!意法半導(dǎo)體微型AI傳感器開啟智能設(shè)備新維度
- 線繞電阻與金屬氧化物電阻技術(shù)對比及選型指南
技術(shù)文章更多>>
- 拓?fù)鋬?yōu)化:解鎖電池供電設(shè)備高效設(shè)計密碼
- 鋁殼電阻技術(shù)解析:原理、優(yōu)勢與產(chǎn)業(yè)生態(tài)全景
- 厚膜電阻在消費電子電源管理及家電控制中的技術(shù)應(yīng)用與創(chuàng)新
- 從光伏到充電樁,線繞電阻破解新能源設(shè)備浪涌防護(hù)難題
- GMSL雙模解析:像素模式和隧道模式如何突破傳輸瓶頸
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
江蘇商絡(luò)
交流電機(jī)
腳踏開關(guān)
接觸器接線
接近開關(guān)
接口IC
介質(zhì)電容
介質(zhì)諧振器
金屬膜電阻
晶體濾波器
晶體諧振器
晶體振蕩器
晶閘管
精密電阻
精密工具
景佑能源
聚合物電容
君耀電子
開發(fā)工具
開關(guān)
開關(guān)電源
開關(guān)電源電路
開關(guān)二極管
開關(guān)三極管
科通
可變電容
可調(diào)電感
可控硅
空心線圈
控制變壓器