《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式軟件開發流程及ARM的中斷調試方法介紹
嵌入式軟件開發流程及ARM的中斷調試方法介紹
摘要: 嵌入式軟件開發流程及ARM的中斷調試方法介紹,1嵌入式軟件開發流程參照嵌入式軟件的開發流程。第一步:工程建立和配置。第二步:編輯源文件。第三步:工程編譯和鏈接。第四步:軟件的調試。第五步:執行文件的固化。在整個流程中,用戶首先需要建立工程
Abstract:
Key words :

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)())

  {

  InterruptHandlers[Vector] = Handler;

  }

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

  如: SetInterrupt(IIC_INT,IICWriteIsr);

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

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

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一区影院| 亚洲视频欧洲视频| 99精品国产热久久91蜜凸| 一区在线电影| 国产欧美一区二区色老头| 国产精品hd| 欧美人交a欧美精品| 老司机免费视频一区二区三区 | 亚洲一区二区三区色| 99热这里只有精品8| 亚洲区第一页| 亚洲日产国产精品| 亚洲国产精品久久人人爱蜜臀| 欧美亚洲视频一区二区| 亚洲欧美日韩国产成人| 亚洲一区日韩在线| 亚洲伊人一本大道中文字幕| 亚洲午夜伦理| 亚洲免费在线观看视频| 亚洲在线黄色| 亚洲欧美日韩成人高清在线一区| 亚洲性xxxx| 亚洲免费在线看| 亚洲深夜福利视频| 国产精品99久久久久久久女警| 一本色道久久综合一区| 在线午夜精品自拍| 亚洲欧美日本日韩| 久久aⅴ乱码一区二区三区| 久久精品欧美日韩精品| 亚洲韩国日本中文字幕| 亚洲伦理在线观看| 一区二区三区四区五区精品| 亚洲视频专区在线| 欧美一区二区三区四区在线| 久久黄色级2电影| 久久深夜福利免费观看| 免费观看国产成人| 欧美区在线观看| 国产精品久久久久免费a∨| 国产精品色婷婷| 国产一区二区三区在线免费观看| 伊人久久av导航| 亚洲精品美女| 一区二区免费看| 欧美一区二区三区四区视频| 91久久久久久久久久久久久| 亚洲色图自拍| 久久av二区| 鲁大师影院一区二区三区| 欧美女同在线视频| 国产精品人人做人人爽| 国产综合色产在线精品| 亚洲精品久久| 午夜伦欧美伦电影理论片| 亚洲高清不卡| 一区二区三区精品国产| 香蕉亚洲视频| 免费中文日韩| 国产精品久久久久久久久果冻传媒 | 夜夜精品视频一区二区| 午夜天堂精品久久久久| 久久亚洲私人国产精品va媚药| 欧美精品亚洲精品| 国产伦精品一区二区三区视频黑人 | 久久久水蜜桃| 欧美巨乳在线观看| 国产精品夜夜嗨| 尤物yw午夜国产精品视频| 日韩午夜电影av| 久久大综合网| 亚洲午夜在线视频| 久久久之久亚州精品露出| 欧美视频精品在线观看| 狠狠88综合久久久久综合网| 亚洲老司机av| 久久福利影视| 99re66热这里只有精品3直播| 午夜一区不卡| 欧美高清在线播放| 国产欧美日韩一区二区三区在线观看| 亚洲第一主播视频| 午夜亚洲伦理| 在线亚洲国产精品网站| 久久久精品一区| 欧美午夜精品久久久久久久| 激情综合久久| 亚洲欧美中文字幕| 在线一区二区三区四区五区| 久热爱精品视频线路一| 国产精品欧美一区二区三区奶水| 亚洲国产精品视频| 欧美中文字幕在线观看| 亚洲综合电影一区二区三区| 欧美激情黄色片| 激情欧美国产欧美| 亚洲一区二区四区| 一区二区三区免费观看| 久久在精品线影院精品国产| 国产精品免费视频xxxx| 亚洲狼人综合| 亚洲免费高清视频| 老司机一区二区三区| 国产日韩欧美高清免费| 亚洲最新在线视频| 日韩亚洲综合在线| 免费在线一区二区| 一区二区亚洲精品| 欧美亚洲日本网站| 午夜精品久久久久| 国产精品jvid在线观看蜜臀| 亚洲毛片av在线| 亚洲每日更新| 欧美a级理论片| 黄色精品在线看| 欧美亚洲日本一区| 欧美在线观看一二区| 国产精品久久久久秋霞鲁丝| 9l国产精品久久久久麻豆| 一区二区三区精品| 欧美日韩一区二区三区视频| 日韩视频免费观看高清在线视频 | 亚洲欧美综合国产精品一区| 国产精品sm| 这里只有视频精品| 亚洲一区二区三区在线看| 欧美美女bbbb| 亚洲精品视频在线观看网站 | 欧美一区二区三区另类| 国产精品久久久久久久久| 中国成人黄色视屏| 亚洲欧美bt| 国产精品视频网| 国产精品99久久久久久白浆小说| 亚洲一区二区免费看| 国产精品高清网站| 亚洲一区二区三区四区五区黄| 亚洲欧美文学| 国产日韩欧美精品综合| 欧美制服丝袜第一页| 狂野欧美一区| 亚洲国产福利在线| 日韩一区二区精品视频| 欧美日韩激情小视频| 夜夜夜久久久| 亚洲欧美在线一区| 国产精品三上| 欧美一级网站| 女仆av观看一区| 亚洲日本在线视频观看| 亚洲婷婷在线| 国产欧美一区二区视频| 亚洲福利视频专区| 欧美精品三级日韩久久| 一本色道久久综合亚洲91| 欧美一区二区三区精品| 伊人成人在线| 一本色道久久综合| 国产精品久久久久久久久久免费 | 欧美成人在线免费视频| 亚洲精品久久视频| 午夜久久久久久| 狠狠色狠狠色综合系列| 亚洲乱码国产乱码精品精98午夜 | 欧美一级大片在线观看| 美日韩免费视频| 99成人免费视频| 欧美一区二区在线看| 激情亚洲成人| 一二三四社区欧美黄| 国产精品爽黄69| 亚洲国产欧美一区二区三区同亚洲 | 欧美日韩美女在线观看| 亚洲一区二区三区免费在线观看| 久久久99精品免费观看不卡| 亚洲国产精品va在线观看黑人| 一区二区三区视频在线观看| 国产午夜精品一区二区三区视频| 亚洲精选视频在线| 国产精品午夜电影| 亚洲精品在线电影| 国产精品免费在线| 亚洲国产日韩一区| 国产精品美女xx| 亚洲激情成人在线| 欧美午夜久久| 亚洲成色www8888| 国产精品高潮在线| 最新亚洲视频| 国产视频精品免费播放| 亚洲美女区一区| 国产视频亚洲| 亚洲性视频网站| 一区视频在线| 欧美亚洲日本国产| 日韩视频免费大全中文字幕| 久久综合伊人77777麻豆| 亚洲一区日韩| 欧美日韩一区二区在线| 亚洲国产天堂久久综合|