嵌入式ARM如何中斷調試

姓名:劉爍爍 ;學號:20181213904驳癌;學院:廣州研究院

原鏈接:https://zhuanlan.zhihu.com/p/87718923

【嵌牛導讀】學習嵌入式逆害,它的流程是什么。

【嵌牛鼻子】嵌入式磷雇,ARM,中斷

【嵌牛提問】什么是中斷躏救?嵌入式ARM如何中斷調試唯笙?

【嵌牛正文】

嵌入式軟件開發(fā)流程

參照嵌入式軟件的開發(fā)流程。第一步:工程建立和配置盒使。第二步:編輯源文件崩掘。第三步:工程編譯和鏈接。第四步:軟件的調試少办。第五步:執(zhí)行文件的固化苞慢。

在整個流程中,用戶首先需要建立工程并對工程做初步的配置英妓,包括配置處理器和配置調試設備挽放。編輯工程文件,包括自己編寫的匯編和C語言源程序蔓纠,還有工程編譯時需要編寫的鏈接腳本文件辑畦,調試過程中需要編寫存儲區(qū)映像文件和命令腳本文件,以及上電復位時的程序運行入口的啟動程序文件腿倚。

對后四種文件的理解很重要纯出,其作用解釋如下。

(1) 鏈接腳本文件:在程序編譯時起作用。該文件描述代碼鏈接定位的有關信息暂筝,包括代碼段箩言,數(shù)據(jù)段,地址段等焕襟,鏈接器必須使用該文件對整個系統(tǒng)的代碼做正確的定位分扎。在SDRAM中調試程序、在FLASH中調試或固化后運行的鏈接腳本文件應加以區(qū)分胧洒。(在IDE開發(fā)環(huán)境中使用擴展名*.ld)

(2)命令腳本文件:在SDRAM中調試程序時起作用畏吓。在集成環(huán)境與目標連接時、軟件調試過程中以及目標板復位后卫漫,有時需要集成環(huán)境自動完成一些特定的操作菲饼,比如復位目標板、清除看門狗列赎、屏蔽中斷寄存器宏悦、存儲區(qū)映射等。這些操作可以通過執(zhí)行一組命令序列來完成包吝,保存一組命令序列的文本文件稱為命令腳本文件(在 IDE開發(fā)環(huán)境中使用擴展名*.cs)饼煞。

(3)存儲區(qū)映像文件:在SDRAM中調試程序時起作用。在軟件調試過程中訪問非法存儲區(qū)在部分處理器和目標板上會產(chǎn)生異常诗越,如果異常沒有處理砖瞧,則會導致軟件調試過程無法繼續(xù),為了防止以上問題并調整仿真器訪問速度以達到最合適的水平嚷狞,提供這樣一種用于描述各個存儲區(qū)性質的文件叫存儲區(qū)映像文件(在IDE開發(fā)環(huán)境中使用擴展名*.map)块促。

在程序的調試過程中可以選擇使用存儲區(qū)映像文件*.map和命令腳本文件*. cs配合程序的調試。

(4) 啟動文件:它主要是完成一些和硬件相關的初始化的工作床未,為應用程序做準備竭翠。一般,啟動代碼的第一步是設置中斷和異常向量薇搁;第二步是完成系統(tǒng)啟動所必須的寄存器配置斋扰;第三步設置看門狗及用戶設計的部分外圍電路;第四步是配置系統(tǒng)所使用的存儲區(qū)分配地址空間啃洋; 第五步是變量初始化传货;第六步是為處理器的每個工作模式設置棧指針;最后一步是進入高級語言入口函數(shù)(Main函數(shù))裂允。

中斷程序設計

中斷調試方面可以采用類似矢量中斷動態(tài)處理方式损离,讓中斷對應的確定地址代碼調轉到RAM的固定地址處哥艇,定義一個函數(shù)指針指向該固定地址绝编,就可以隨時通過替換RAM固定地址處的代碼,實現(xiàn)動態(tài)改變中斷處理函數(shù)。

具體方法是:

(1)將中斷源函數(shù)指針定義在RAM中相對的固定地址十饥,建立中斷矢量表窟勃;

void SetInterrupt (U32 vector, void (*handler)()){ InterruptHandlers[vector] = handler;}

(2)在程序中逗堵,調用具體某中斷源的中斷處理函數(shù)秉氧;

如: SeTInterrupt(IIC_INT,IICWriteIsr);

/* 聲明IIC中斷處理函數(shù)蜒秤,其中IIC_INT為 IIC中斷源序號汁咏,IICWriteIsr為 IIC的寫中斷處理函數(shù) */

(3)在0x18處的IRQ或0x1C處的FIQ中斷入口函數(shù)中,獲取中斷源作媚、清除中斷掛起標志攘滩、通過已定義的中斷源函數(shù)指針進入用戶具體某中斷處理程序。

void ISR_IrqHandler(void){ IntOffSet = (unsigned int)INTOFFSET; Clear_PendingBit(IntOffSet》》2) ;(*InterruptHandlers[IntOffSet》》2])();// 調用具體某中斷處理程序}

采用動態(tài)的中斷處理方法纸泡,在中斷源較多的情況下漂问,中斷響應時間和程序性能得到優(yōu)化。另外女揭,在調試方面蚤假,此處理方法具有便于跟蹤調試的優(yōu)點,并且根據(jù)需要吧兔,可以方便變換中斷處理函數(shù)磷仰。

中斷調試

軟件調試可以在SDRAM中或FLASH中進行。在SDRAM中境蔼,讀寫方便芒划,訪問速度快。一般軟件調試應在RAM中完成欧穴,但當RAM空間小于FLASH程序空間民逼,程序只能在FLASH運行和調試時,或者用戶希望了解程序在FLASH中實際運行情況時涮帘,就可以在FLASH中進行程序調試拼苍。

進行中斷調試時,應注意中斷入口位于SDRAM中或FLASH中0x18或0x1c地址调缨,鏈接腳本文件必須使整個系統(tǒng)的代碼正確定位于0x0起始處疮鲫,但SDRAM或FLASH對應的鏈接腳本文件及工程配置注意區(qū)別。

(1)程序在SDRAM中運行

在SDRAM中調試弦叶,使用SDRAM對應的鏈接腳本文件俊犯。調試過程需要以下幾步:編譯、鏈接工程伤哺;連接仿真器和電路板燕侠;下載程序(在IDE開發(fā)環(huán)境中使用擴展名*.elf)者祖;調試。

下載程序前必須啟動命令腳本文件完成前述的一些特定的操作绢彤,命令腳本文件的啟動在連接仿真器時自動進行七问,其中存儲區(qū)映射應與程序在SDRAM中運行時相同,保證整個系統(tǒng)的代碼正確定位于0x0起始處茫舶。下載程序的起始地址也為0x0械巡,下載成功后便可進行調試工作。

(2)程序在FLASH中運行

在FLASH中調試饶氏,使用FLASH對應的鏈接腳本文件讥耗。調試過程需要以下幾步:編譯、鏈接工程疹启;連接仿真器和電路板葛账;程序格式轉換(*.elf轉換為*.bin);固化*.bin程序皮仁;調試籍琳。

連接仿真器后不需要下載程序,存儲區(qū)映射由本身工程中啟動文件運行完成贷祈,不需要命令腳本文件趋急。在本環(huán)境調試過程中,可以設置兩個硬件斷點势誊。

(3)程序從FLASH中調到SDRAM中運行

在某些應用場合呜达,強調程序運行速度的情況下,希望程序在SDRAM中運行粟耻,這樣就需要將FLASH中存儲的程序查近,在系統(tǒng)上電后搬運到SDRAM某空間位置,然后自動運行挤忙。這種所謂的Bootloader技術霜威,在DSP系統(tǒng)中常被采用。

調試過程分兩步:

(a)首先將用戶程序在SDRAM中調試通過册烈,然后將*.bin文件固化到FLASH某一非0扇區(qū)地址空間戈泼;

(b) 將自己編寫的Bootloader搬運程序調試通過并將Bootloader.bin文件固化到FLASH的 0扇區(qū)地址空間,搬運程序在系統(tǒng)上電后赏僧,將(a)中FLASH某一非0扇區(qū)地址空間存儲的程序大猛,搬運到在SDRAM調試中同樣的空間位置,實現(xiàn)程序在SDRAM中運行的目的淀零。

另外注意挽绩,因為用戶實際的程序中斷入口必須位于FLASH的0x18或0x1c地址,所以Bootloader搬運程序還應具有中斷入口的跳轉功能驾中,即把PC指針由此轉向處于SDRAM空間的中斷程序入口表唉堪,就是整個用戶程序被搬運到SDRAM的那一位置模聋。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市巨坊,隨后出現(xiàn)的幾起案子撬槽,更是在濱河造成了極大的恐慌此改,老刑警劉巖趾撵,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異共啃,居然都是意外死亡占调,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門移剪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來究珊,“玉大人,你說我怎么就攤上這事纵苛〗虽蹋” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵攻人,是天一觀的道長取试。 經(jīng)常有香客問我,道長怀吻,這世上最難降的妖魔是什么瞬浓? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮蓬坡,結果婚禮上猿棉,老公的妹妹穿的比我還像新娘。我一直安慰自己屑咳,他們只是感情好萨赁,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兆龙,像睡著了一般位迂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上详瑞,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天掂林,我揣著相機與錄音,去河邊找鬼坝橡。 笑死泻帮,一個胖子當著我的面吹牛,可吹牛的內容都是我干的计寇。 我是一名探鬼主播锣杂,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼脂倦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了元莫?” 一聲冷哼從身側響起赖阻,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎踱蠢,沒想到半個月后火欧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡茎截,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年苇侵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片企锌。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡榆浓,死狀恐怖,靈堂內的尸體忽然破棺而出撕攒,到底是詐尸還是另有隱情陡鹃,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布抖坪,位于F島的核電站萍鲸,受9級特大地震影響,放射性物質發(fā)生泄漏柳击。R本人自食惡果不足惜猿推,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捌肴。 院中可真熱鬧蹬叭,春花似錦、人聲如沸状知。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饥悴。三九已至坦喘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間西设,已是汗流浹背瓣铣。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贷揽,地道東北人棠笑。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像禽绪,于是被迫代替她去往敵國和親蓖救。 傳聞我的和親對象是個殘疾皇子洪规,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內容