<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM的三種中斷調試方法簡(jiǎn)介

ARM的三種中斷調試方法簡(jiǎn)介

作者: 時(shí)間:2010-12-13 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/151209.htm

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

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

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

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

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

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

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

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

2 程序設計

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

  具體是:

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

  void SetInterrupt (U32 vector, void (*handler)())

  {

  InterruptHandlers[vector] = handler;

  }

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

  如: SetInterrupt(IIC_INT,IICWriteIsr);

  /* 聲明IIC中斷處理函數,其中IIC_INT為 IIC中斷源序號,IICWriteIsr為 IIC的寫(xiě)中斷處理函數 */

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

  void ISR_IrqHandler(void)

  {

  IntOffSet = (unsigned int)INTOFFSET;

  Clear_PendingBit(IntOffSet>>2) ;

  (*InterruptHandlers[IntOffSet>>2])();

  // 調用具體某中斷處理程序

  }

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

3 中斷調試

  軟件調試可以在SDRAM中或FLASH中進(jìn)行。在SDRAM中,讀寫(xiě)方便,訪(fǎng)問(wèn)速度快。一般軟件調試應在RAM中完成,但當RAM空間小于FLASH程序空間,程序只能在FLASH運行和調試時(shí),或者用戶(hù)希望了解程序在FLASH中實(shí)際運行情況時(shí),就可以在FLASH中進(jìn)行程序調試。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 簡(jiǎn)介 方法 調試 中斷 ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>