官术网_书友最值得收藏!

1.5.1 交叉開發環境

交叉開發環境一般由運行于宿主機上的交叉開發軟件和宿主機到目標機的調試通道組成。

作為嵌入式系統常用的ARM處理器,其應用程序的開發屬于跨平臺開發,因此需要一個交叉開發環境。交叉開發是指在一臺通用計算機上進行軟件的編輯編譯,然后下載到嵌入式設備中進行運行調試的開發方式。用來開發的通用計算機可以選用比較常見的PC、工作站等,運行通用的Windows操作系統。開發計算機一般稱宿主機,嵌入式設備稱為目標機,在宿主機上編譯好的程序,下載到目標機上運行。交叉開發環境提供調試工具對目標機上運行的程序進行調試。

1.交叉開發軟件

運行于宿主機上的交叉開發軟件必須包含編譯調試模塊,其編譯器為交叉編譯器。作為宿主機的一般為基于x86體系的通用計算機,而編譯出的代碼必須在ARM體系結構的目標機上運行,這就是交叉編譯。在宿主機上編譯好目標代碼后,通過宿主機到目標機的調試通道將代碼下載到目標機,然后由運行于宿主機的調試軟件控制代碼在目標機上運行調試。為了方便調試開發,交叉開發軟件一般為一個整合編輯、編譯匯編鏈接、調試、工程管理及函數庫等功能模塊的集成開發環境(Integrated Development Environment,IDE)。

2.宿主機到目標機的調試通道

組成ARM交叉開發環境的宿主機到目標機的調試通道一般有以下3種。

(1)基于JTAG的在線調試器(In-Circuit Debugger,ICD)

聯合測試工作組(Joint Test Action Group,JTAG)的在線調試器也稱為JTAG仿真器,是通過ARM芯片的JTAG邊界掃描口進行調試的設備。JTAG仿真器通過ARM處理器的JTAG調試接口與目標機通信,通過并口或串口、網口、USB口與宿主機通信。JTAG仿真器比較便宜,連接比較方便。通過現有的JTAG邊界掃描口與ARM的CPU通信,屬于完全非插入式(不使用片上資源)調試,它無須目標存儲器,不占用目標系統的任何應用端口。通過JTAG方式可以完成以下功能。

● 讀出/寫入CPU的寄存器,訪問控制ARM處理器內核。

● 讀出/寫入內存,訪問系統中的存儲器。

● 訪問ASIC系統。

● 訪問I/O系統。

● 控制程序單步執行和實時執行。

● 實時地設置基于指令地址值或者基于數據值的斷點。

基于JTAG仿真器的調試是目前ARM開發中采用最多的一種方式。

(2)Angel調試監控軟件

Angel調試監控軟件也稱為駐留監控軟件,是一組運行在目標機上的程序,可以接收宿主機上調試器發送的命令,執行諸如設置斷點、單步執行目標程序、讀寫存儲器、查看或修改寄存器等操作。宿主機上的調試軟件一般通過串行端口、以太網口、并行端口等通信端口與Angel調試監控軟件進行通信。與基于JTAG的調試不同,Angel調試監控程序需要占用一定的系統資源,如內存、通信端口等。駐留監控軟件是一種比較低廉有效的調試方式,不需要任何其他的硬件調試和仿真設備。

Angel調試監控軟件的不便之處在于它對硬件設備的要求比較高,一般在硬件穩定之后才能進行應用程序的開發,同時它占用目標機上的一部分資源,如內存、通信端口等,而且不能對程序的全速運行進行完全仿真,所以對一些要求嚴格的情況不是很適合。

(3)在線仿真器(In-Circuit Emulator,ICE)

在線仿真器是一種模擬CPU的設備,它使用仿真頭完全取代目標機上的CPU,可以完全仿真ARM芯片的行為,提供更加深入的調試功能。在和宿主機連接的接口上,在線仿真器也是通過串行端口或并行端口、網口、USB口通信。在線仿真器為了能夠全速仿真時鐘速度很高的ARM處理器,通常必須采用極其復雜的設計和工藝,因而其價格比較昂貴。在線仿真器通常用在ARM的硬件開發中,在軟件的開發中較少使用。

主站蜘蛛池模板: 任丘市| 新平| 西乌| 天柱县| 寿阳县| 锦州市| 南澳县| 金门县| 新余市| 平度市| 彰化市| 永德县| 凤凰县| 沁阳市| 临湘市| 徐州市| 五指山市| 岢岚县| 鹤峰县| 江陵县| 房山区| 冷水江市| 凤城市| 珠海市| 马龙县| 肇东市| 泰安市| 哈密市| 青冈县| 广州市| 慈利县| 抚州市| 竹山县| 利津县| 三明市| 油尖旺区| 诏安县| 阳原县| 呼伦贝尔市| 中山市| 察雅县|