最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

嵌入式Arm的中斷調(diào)試方法

出處:互聯(lián)網(wǎng) 發(fā)布于:2020-05-19 15:24:06

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

  參照嵌入式軟件的開發(fā)流程。步:工程建立和配置。第二步:編輯源文件。第三步:工程編譯和鏈接。第四步:軟件的調(diào)試。第五步:執(zhí)行文件的固化。

  在整個(gè)流程中,用戶首先需要建立工程并對(duì)工程做初步的配置,包括配置處理器和配置調(diào)試設(shè)備。編輯工程文件,包括自己編寫的匯編和 C 語(yǔ)言源程序,還有工程編譯時(shí)需要編寫的鏈接腳本文件,調(diào)試過程中需要編寫存儲(chǔ)區(qū)映像文件和命令腳本文件,以及上電復(fù)位時(shí)的程序運(yùn)行入口的啟動(dòng)程序文件。

  對(duì)后四種文件的理解很重要,其作用解釋如下。

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

  (2)命令腳本文件:在 SDRAM 中調(diào)試程序時(shí)起作用。在集成環(huán)境與目標(biāo)連接時(shí)、軟件調(diào)試過程中以及目標(biāo)板復(fù)位后,有時(shí)需要集成環(huán)境自動(dòng)完成一些特定的操作,比如復(fù)位目標(biāo)板、清除看門狗、屏蔽中斷寄存器、存儲(chǔ)區(qū)映射等。這些操作可以通過執(zhí)行一組命令序列來(lái)完成,保存一組命令序列的文本文件稱為命令腳本文件(在 IDE 開發(fā)環(huán)境中使用擴(kuò)展名*.cs)。

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

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

  (4) 啟動(dòng)文件:它主要是完成一些和硬件相關(guān)的初始化的工作,為應(yīng)用程序做準(zhǔn)備。一般,啟動(dòng)代碼的步是設(shè)置中斷和異常向量;第二步是完成系統(tǒng)啟動(dòng)所必須的寄存器配置;第三步設(shè)置看門狗及用戶設(shè)計(jì)的部分外圍電路;第四步是配置系統(tǒng)所使用的存儲(chǔ)區(qū)分配地址空間;第五步是變量初始化;第六步是為處理器的每個(gè)工作模式設(shè)置棧指針;一步是進(jìn)入語(yǔ)言入口函數(shù)(Main 函數(shù))。

  中斷程序設(shè)計(jì)

  中斷調(diào)試方面可以采用類似矢量中斷動(dòng)態(tài)處理方式,讓中斷對(duì)應(yīng)的確定地址代碼調(diào)轉(zhuǎn)到 RAM 的固定地址處,定義一個(gè)函數(shù)指針指向該固定地址,就可以隨時(shí)通過替換 RAM 固定地址處的代碼,實(shí)現(xiàn)動(dòng)態(tài)改變中斷處理函數(shù)。

  具體方法是:

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

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

  (2)在程序中,調(diào)用具體某中斷源的中斷處理函數(shù);

  如:SetInterrupt(IIC_INT,IICWriteIsr);

  /* 聲明 IIC 中斷處理函數(shù),其中 IIC_INT 為 IIC 中斷源序號(hào),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)用具體某中斷處理程序}

  采用動(dòng)態(tài)的中斷處理方法,在中斷源較多的情況下,中斷響應(yīng)時(shí)間和程序性能得到優(yōu)化。另外,在調(diào)試方面,此處理方法具有便于跟蹤調(diào)試的優(yōu)點(diǎn),并且根據(jù)需要,可以方便變換中斷處理函數(shù)。

  中斷調(diào)試

  軟件調(diào)試可以在 SDRAM 中或 FLASH 中進(jìn)行。在 SDRAM 中,讀寫方便,訪問速度快。一般軟件調(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)試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;程序(在 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)試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;程序格式轉(zhuǎn)換(*.elf 轉(zhuǎn)換為*.bin);固化*.bin 程序;調(diào)試。

  連接仿真器后不需要程序,存儲(chǔ)區(qū)映射由本身工程中啟動(dòng)文件運(yùn)行完成,不需要命令腳本文件。在本環(huán)境調(diào)試過程中,可以設(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)試過程分兩步:

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

  (b) 將自己編寫的 Bootloader 搬運(yùn)程序調(diào)試通過并將 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 空間中斷程序入口表


關(guān)鍵詞:嵌入式Arm的中斷調(diào)試方法嵌入式

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

2023全國(guó)大學(xué)生嵌入式芯片與系統(tǒng)設(shè)計(jì)競(jìng)賽,海思賽道,工程機(jī)械遠(yuǎn)程管理與安全檢測(cè)系統(tǒng)
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見,您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!