ARM的三種中斷除錯方法介紹

2021-05-28 11:18:13 字數 1810 閱讀 1198

1 嵌入式軟體開發流程

參照嵌入式軟體的開發流程。第一步:工程建立和配置。第二步:編輯原始檔。第三步:工程編譯和鏈結。第四步:軟體的除錯。第五步:執行檔案的固化。

在整個流程中,使用者首先需要建立工程並對工程做初步的配置,包括配置處理器和配置除錯裝置。編輯工程檔案,包括自己編寫的彙編和c語言源程式,還有工程編譯時需要編寫的鏈結指令碼檔案,除錯過程中需要編寫儲存區映像檔案和命令指令碼檔案,以及上電復位時的程式執行入口的啟動程式檔案。

對後四種檔案的理解很重要,其作用解釋如下。

(1) 鏈結指令碼檔案:在程式編譯時起作用。該檔案描述**鏈結定位的有關資訊,包括**段,資料段,位址段等,鏈結器必須使用該檔案對整個系統的**做正確的定位。在sdram中除錯程式、在flash中除錯或固化後執行的鏈結指令碼檔案應加以區分。(在ide開發環境中使用副檔名*.ld)

(2)命令指令碼檔案:在sdram中除錯程式時起作用。在整合環境與目標連線時、軟體除錯過程中以及目標板復位後,有時需要整合環境自動完成一些特定的操作,比如復位目標板、清除看門狗、遮蔽中斷暫存器、儲存區對映等。這些操作可以通過執行一組命令序列來完成,儲存一組命令序列的文字檔案稱為命令指令碼檔案(在 ide開發環境中使用副檔名*.cs)。

(3)儲存區映像檔案:在sdram中除錯程式時起作用。在軟體除錯過程中訪問非法儲存區在部分處理器和目標板上會產生異常,如果異常沒有處理,則會導致軟體除錯過程無法繼續,為了防止以上問題並調整**器訪問速度以達到最合適的水平,提供這樣一種用於描述各個儲存區性質的檔案叫儲存區映像檔案(在ide開發環境中使用副檔名*.map)。

在程式的除錯過程中可以選擇使用儲存區映像檔案*.map和命令指令碼檔案*. cs配合程式的除錯。

(4) 啟動檔案:它主要是完成一些和硬體相關的初始化的工作,為應用程式做準備。一般,啟動**的第一步是設定中斷和異常向量;第二步是完成系統啟動所必須的暫存器配置;第三步設定看門狗及使用者設計的部分外圍電路;第四步是配置系統所使用的儲存區分配位址空間; 第五步是變數初始化;第六步是為處理器的每個工作模式設定棧指標;最後一步是進入高階語言入口函式(main函式)。

2 中斷程式設計

中斷除錯方面可以採用類似向量中斷動態處理方式,讓中斷對應的確定位址**調轉到ram的固定位址處,定義乙個函式指標指向該固定位址,就可以隨時通過替換ram固定位址處的**,實現動態改變中斷處理函式。

具體方法是:

(1)將中斷源函式指標定義在ram中相對的固定位址,建立中斷向量表;

void setinterrupt (u32 vector, void (*handler)())

(2)在程式中,呼叫具體某中斷源的中斷處理函式;

如: setinterrupt(iic_int,iicwriteisr);

/* 宣告iic中斷處理函式,其中iic_int為 iic中斷源序號,iicwriteisr為 iic的寫中斷處理函式 */

(3)在0x18處的irq或0x1c處的fiq中斷入口函式中,獲取中斷源、清除中斷掛起標誌、通過已定義的中斷源函式指標進入使用者具體某中斷處理程式。

void isr_irqhandler(void)

採用動態的中斷處理方法,在中斷源較多的情況下,中斷響應時間和程式效能得到優化。另外,在除錯方面,此處理方法具有便於跟蹤除錯的優點,並且根據需要,可以方便變換中斷處理函式。

3 中斷除錯

軟體除錯可以在sdram中或flash中進行。在sdram中,讀寫方便,訪問速度快。一般軟體除錯應在ram中完成,但當ram空間小於flash程式空間,程式只能在flash執行和除錯時,或者使用者希望了解程式在flash中實際運**況時,就可以在flash中進行程式除錯。

嵌入式技巧 ARM的三種中斷除錯方法介紹

亞嵌技術文件 1 嵌入式 軟體開發流程 在整個流程中,使用者首先需要建立工程並對工程做初步的配置,包括配置處理器和配置除錯裝置。編輯工程檔案,包括自己編寫的彙編和c語言源程式,還有工程編譯時需要編寫的鏈結指令碼檔案,除錯過程中需要編寫儲存區映像檔案和命令指令碼檔案,以及上電復位時的程式執行入口的啟動...

除錯查詢關鍵函式的三種方法

一 f8單步跟蹤到關鍵函式 比如除錯確定功能的程式,可以單步到出現程式的特定響應為止,出現響應的該條call指令的呼叫函式就是關鍵函式 二 字串檢索法 比如除錯hello world程式,最簡單的功能就是彈窗輸出helloworld,在ollydbg中搜尋關鍵字串來迅速定位關鍵函式位置 雙擊進入位置...

中斷下半部的三種機制

tasklet 工作佇列 各種機制的比較 之前提到過,之所以中斷會分成上下兩部分,linux 的上半部就是中斷處理程式,下半部採用三種機制來實現,這樣分兩部執行的策略有利於縮短響應硬體的時限。對於乙個中斷,如何劃分出上下兩部分呢?哪些處理放在上半步,哪些放在下半部?這裡有一些經驗可供借鑑 如果乙個任...