ARM中斷調試方法
ARM中斷調試方法
1、嵌入式軟件開發流程
參照嵌入式軟件的開發流程。第一步:工程建立和配置。第二步:編輯源文件。第三步:工程編譯和鏈接。第四步:軟件的調試。第五步:執行文件的固化。
在整個流程中,用戶首先需要建立工程並對工程做初步的配置,包括配置處理器和配置調試設備。編輯工程文件,包括自己編寫的彙編和C語言源程序,還有工程編譯時需要編寫的鏈接腳本文件,調試過程中需要編寫存儲區映像文件和命令腳本文件,以及上電複位時的程序運行入口的啟動程序文件。
對後四種文件的理解很重要,其作用解釋如下:
(1) 鏈接腳本文件:在程序編譯時起作用。該文件描述代碼鏈接定位的有關信息,包括代碼段,數據段,地址段等,鏈接器必須使用該文件對整個係統的代碼做正確的定位。在SDRAM中調試程序、在FLASH中調試或固化後運行的鏈接腳本文件應加以區分。(在IDE開發環境中使用擴展名*.ld)
(2)命令腳本文件:在SDRAM中調試程序時起作用。在集成環境與目標連接時、軟件調試過程中以及目標板複位後,有時需要集成環境自動完成一些特定的操作,比如複位目標板、清除看門狗、屏蔽中斷寄存器、存儲區映射等。這些操作可以通過執行一組命令序列來完成,保存一組命令序列的文本文件稱為命令腳本文件(在 IDE開發環境中使用擴展名*.cs)。
(3)存儲區映像文件:在SDRAM中調試程序時起作用。在軟件調試過程中訪問非法存儲區在部分處理器和目標板上會產生異常,如果異常沒有處理,則會導致軟件調試過程無法繼續,為了防止以上問題並調整仿真器訪問速度以達到最合適的水平,提供這樣一種用於描述各個存儲區性質的文件叫存儲區映像文件(在IDE開發環境中使用擴展名*.map)。在程序的調試過程中可以選擇使用存儲區映像文件*.map和命令腳本文件*. cs配合程序的調試。
(4) 啟動文件:它主要是完成一些和硬件相關的初始化的工作,為應用程序做準備。一般,啟動代碼的第一步是設置中斷和異常向量;第二步是完成係統啟動所必須的寄存器配置;第三步設置看門狗及用戶設計的部分外圍電路;第四步是配置係統所使用的存儲區分配地址空間; 第五步是變量初始化;第六步是為處理器的每個工作模式設置棧指針;最後一步是進入高級語言入口函數(Main函數)。
2、中斷程序設計
中斷調試方麵可以采用類似矢量中斷動態處理方式,讓中斷對應的確定地址代碼調轉到RAM的固定地址處,定義一個函數指針指向該固定地址,就可以隨時通過替換RAM固定地址處的代碼,實現動態改變中斷處理函數。
具體方法是:
(1)將中斷源函數指針定義在RAM中相對的固定地址,建立中斷矢量表;
(2)在程序中,調用具體某中斷源的中斷處理函數;
如: SetInterrupt(IIC_INT,IICWriteIsr); /* 聲明IIC中斷處理函數,其中IIC_INT為 IIC中斷源序號,IICWriteIsr為 IIC的寫中斷處理函數 */
(3)在0x18處的IRQ或0x1C處的FIQ中斷入口函數中,獲取中斷源、清除中斷掛起標誌、通過已定義的中斷源函數指針進入用戶具體某中斷處理程序。
采用動態的中斷處理方法,在中斷源較多的情況下,中斷響應時間和程序性能得到優化。另外,在調試方麵,此處理方法具有便於跟蹤調試的優點,並且根據需要,可以方便變換中斷處理函數。
3、中斷調試
軟件調試可以在SDRAM中或FLASH中進行。在SDRAM中,讀寫方便,訪問速度快。一般軟件調試應在RAM中完成,但當RAM空間小於FLASH程序空間,程序隻能在FLASH運行和調試時,或者用戶希望了解程序在FLASH中實際運行情況時,就可以在FLASH中進行程序調試。
進行中斷調試時,應注意中斷入口位於SDRAM中或FLASH中0x18或0x1c地址,鏈接腳本文件必須使整個係統的代碼正確定位於0x0起始處,但SDRAM或FLASH對應的鏈接腳本文件及工程配置注意區別。
(1)程序在SDRAM中運行
在SDRAM中調試,使用SDRAM對應的鏈接腳本文件。調試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;下載程序(在IDE開發環境中使用擴展名*.elf);調試。
下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進行,其中存儲區映射應與程序在SDRAM中運行時相同,保證整個係統的代碼正確定位於0x0起始處。下載程序的起始地址也為0x0,下載成功後便可進行調試工作。
(2)程序在FLASH中運行
在FLASH中調試,使用FLASH對應的鏈接腳本文件。調試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;程序格式轉換(*.elf轉換為*.bin);固化*.bin程序;調試。
連接仿真器後不需要下載程序,存儲區映射由本身工程中啟動文件運行完成,不需要命令腳本文件。在本環境調試過程中,可以設置兩個硬件斷點。
(3)程序從FLASH中調到SDRAM中運行
在某些應用場合,強調程序運行速度的情況下,希望程序在SDRAM中運行,這樣就需要將FLASH中存儲的程序,在係統上電後搬運到SDRAM某空間位置,然後自動運行。這種所謂的Bootloader技術,在DSP係統中常被采用。
調試過程分兩步:
(a)首先將用戶程序在SDRAM中調試通過,然後將*.bin文件固化到FLASH某一非0扇區地址空間;
(b) 將自己編寫的Bootloader搬運程序調試通過並將Bootloader.bin文件固化到FLASH的 0扇區地址空間,搬運程序在係統上電後,將(a)中FLASH某一非0扇區地址空間存儲的程序,搬運到在SDRAM調試中同樣的空間位置,實現程序在SDRAM中運行的目的。
另外注意,因為用戶實際的程序中斷入口必須位於FLASH的0x18或0x1c地址,所以Bootloader搬運程序還應具有中斷入口的跳轉功能,即把PC指針由此轉向處於SDRAM空間的中斷程序入口表,就是整個用戶程序被搬運到SDRAM的那一位置。
如:LDR PC, =HandleIRQ // HandleIRQ位於SDRAM空間中斷程序入口表
關於CAN總線的一些事情 | |
CAN總線是各種總線中使用比較廣泛的一種通信技術,它在單片機控製技術中和PLC控製技術中會常常使用這種通信技術。下麵我們來說說關於CAN總線的一些事情。 什麼叫CAN總線 CAN總線它是控製器局域網絡(Controller Area Network, CAN)的簡稱,是由德國博世(BOSC... |
iic總線為什麼需要上拉電阻 | |
II總線是當今電子係統中應用最廣泛的芯片間通信標準,它是一種開漏通信標準,需要上拉電阻將總線電平拉到Vdd 在設計中需要增加上拉電阻,但關鍵是上拉電阻阻值取多少合適呢?通常芯片手冊中會有推薦的上拉阻值,所以在設計時按推薦的取值就可以了。下圖是一... |
組態王HTConvertTime函數年份上限2019怎麼 | |
如下圖:組態王HTConvertTime使用2019年 相信用過組態王軟件的人都會知道,組態王HTConvertTime這個函數到了現在2020年已經不能用了,那以前做的項目怎麼辦能,接下來我來為大家介紹以下2種解決方案,如果適用,請采納。 方案1.致電組態王,要求組態王廠家發... |
電子開發中如何確定使用I2C總線還是SPI總線 | |
電子項目開發中經常用到通訊功能,包括板子上芯片間的通訊和設備間的通訊。而常用的有線通訊方式無非就這幾種,如I2C、SPI、RS232、RS485接口、CAN、USB等。其中I2C也叫IIC,對於題目中提到的幾種通訊方式,I2C和SPI是芯片間的短距離通訊,無法長距離通訊。... |
can協議是什麼 | |
CAN總線是德國公司BOSCH公司為解決現代汽車中眾多控製和測試儀器之間的數據交換而開發的一種串行數據通信協議,即控製器局域網總線。 其是一種多主總線,通信介質可以是雙絞線、同軸電纜、光纖,通信速率可達1Mb/s,通信距離可達10Km。此協議的最大特點是廢... |
- 提高RS485總線通信可靠性的解決辦法
- PROFIBUS的地址設定
- PROFIBUS的令牌傳遞
- profibus和profinet的區別及性能比較
- 西門子Profibus DP通訊故障診斷實用方法
- 微機常用接口和總線設計介紹
- can總線電壓是多少
- 電子開發中如何確定使用I2C總線還是SPI總
- DP通信協議詳解
- DP主站和從站設備類型
- PROFIBUSPA總線配置方案和硬件需求
- 寶馬汽車can總線故障排除實例分析
- 嵌入式係統CAN接口電路及軟件設計
- minipcie接口定義圖解
- Profibus總線幹擾類型及處理方法
- 寶馬汽車can總線測量方法
- can總線的工作原理及應用
- CAN總線協議基本規則
- CAN總線行車記錄儀設計和實現探討
- 嵌入式操作係統中斷機製詳解