新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式技巧:ARM的三種中斷調試方法介紹

        嵌入式技巧:ARM的三種中斷調試方法介紹

        作者: 時間:2012-04-10 來源:網絡 收藏

        void ISR_IrqHandler(void)
        {
        IntOffSet = (unsigned int)INTOFFSET;
        Clear_PendingBit(IntOffSet>>2) ;
        (*InterruptHandlers[IntOffSet>>2])();

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

        采用動態的中斷處理方法,在中斷源較多的情況下,中斷響應時間和程序性能得到優化。另外,在調試方面,此處理方法具有便于跟蹤調試的優點,并且根據需要,可以方便變換中斷處理函數。

        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空間中斷程序入口表

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        關鍵詞: 嵌入式 ARM 中斷調試

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 敦煌市| 察雅县| 呼伦贝尔市| 武定县| 江津市| 奇台县| 安义县| 犍为县| 曲阳县| 乌拉特后旗| 龙门县| 泸定县| 丹棱县| 镇安县| 改则县| 綦江县| 桃源县| 庆云县| 淳安县| 无极县| 西乡县| 河池市| 漠河县| 黄大仙区| 邻水| 阿荣旗| 荣昌县| 怀仁县| 衡山县| 黑龙江省| 景泰县| 开封市| 麦盖提县| 绥芬河市| 荔浦县| 西昌市| 渭南市| 沙雅县| 都兰县| 阜城县| 定州市|