新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統基礎之:嵌入式軟件開發流程

        嵌入式系統基礎之:嵌入式軟件開發流程

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257144.htm

        這里一般將進行的主機稱為宿主機,也就是普通的通用PC,而將程序實際的運行環境稱為目標機,也就是環境。由于一般通用計算機擁有非常豐富的系統資源、使用方便的集成開發環境和調試工具等,而的系統資源非常緊缺,無法在其上運行相關的編譯工具,因此,的開發需要借助宿主機(通用計算機)來編譯出目標機的可執行代碼。

        由于編譯的過程包括編譯、鏈接等幾個階段,因此,嵌入式的也包括、交叉鏈接等過程,通常ARM的交叉編譯器為arm-elf-gcc、arm-linux-gcc等,交叉鏈接器為arm-elf-ld、arm-linux-ld等,交叉編譯過程如圖4.18所示。

        2.

        經過編譯和鏈接后即進入調試階段,調試是軟件開發過程中必不可少的一個環節,開發過程中的與通用軟件開發過程中的調試方式有很大的差別。在常見軟件開發中,調試器與被調試的程序往往運行在同一臺計算機上,調試器是一個單獨運行著的進程,它通過操作系統提供的調試接口來控制被調試的進程。而在開發中,調試時采用的是在宿主機和目標機之間進行的,調試器仍然運行在宿主機的通用操作系統之上,但被調試的進程卻是運行在基于特定硬件平臺的嵌入式操作系統中,調試器和被調試進程通過串口或者網絡進行通信,調試器可以控制、訪問被調試進程,讀取被調試進程的當前狀態,并能夠改變被調試進程的運行狀態。

        嵌入式系統的交叉調試有多種方法,主要可分為軟件方式和硬件方式兩種。它們一般都具有如下一些典型特點。

        n 調試器和被調試進程運行在不同的機器上,調試器運行在PC機(宿主機),而被調試的進程則運行在各種專業調試板上(目標板)。

        n 調試器通過某種通信方式(串口、并口、網絡、等)控制被調試進程。

        n 在目標機上一般會具備某種形式的調試代理,它負責與調試器共同配合完成對目標機上運行著的進程的調試。這種調試代理可能是某些支持調試功能的硬件設備,也可能是某些專門的調試軟件(如gdbserver)。

        n 目標機可能是某種形式的系統仿真器,通過在宿主機上運行目標機的仿真軟件,整個調試過程可以在一臺計算機上運行。此時物理上雖然只有一臺計算機,但邏輯上仍然存在著宿主機和目標機的區別。

        下面分別就軟件調試樁方式和硬件片上調試兩種方式進行詳細介紹。

        (1)軟件方式。

        軟件調試主要是通過插入調試樁的方式來進行的。調試樁方式進行調試是通過目標操作系統和調試器內分別加入某些功能模塊,二者互通信息來進行調試。該方式的典型調試器有gdb調試器。

        gdb的交叉調試器分為GdbServer和GdbClient,其中的GdbServer就作為調試樁在安裝在目標板上,GdbClient就是駐于本地的gdb調試器。它們的調試原理圖如圖4.19所示。

        gdb調試的工作流程。

        n 首先,建立調試器(本地gdb)與目標操作系統的通信連接,可通過串口、網卡、并口等多種方式。

        n 然后,在目標機上開啟GdbServer進程,并監聽對應端口。

        n 在宿主機上運行調試器gdb,這時,gdb就會自動尋找遠端的通信進程,也就是GdbServer的所在進程。

        n 在宿主機上的gdb通過GdbServer請求對目標機上的程序發出控制命令。這時,GdbServer將請求轉化為程序的地址空間或目標平臺的某些寄存器的訪問,這對于沒有虛擬存儲器的簡單的嵌入式操作系統而言,是十分容易的。

        n GdbServer把目標操作系統的所有異常處理轉向通信模塊,并告知宿主機上gdb當前有異常。

        n 宿主機上的gdb向用戶顯示被調試程序產生了哪一類異常。

        這樣就完成了調試的整個過程。這個方案的實質是用軟件接管目標機的全部異常處理及部分中斷處理,并在其中插入調試端口通信模塊,與主機的調試器進行交互。但是它只能在目標機系統初始化完畢、調試通信端口初始化完成后才能起作用,因此,一般只能用于調試運行于目標操作系統之上的應用程序,而不宜用來調試目標操作系統的內核代碼及啟動代碼。而且,它必須改變目標操作系統,因此,也就多了一個不用于正式發布的調試版。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 共和县| 赣州市| 侯马市| 平果县| 武汉市| 耒阳市| 正镶白旗| 施秉县| 遂平县| 礼泉县| 兴和县| 苍南县| 耿马| 民勤县| 营口市| 时尚| 贡嘎县| 防城港市| 同仁县| 金沙县| 延津县| 沧州市| 洛扎县| 胶州市| 久治县| 商丘市| 融水| 崇左市| 行唐县| 株洲市| 阿合奇县| 邵东县| 凯里市| 收藏| 合肥市| 临颍县| 宁乡县| 宁南县| 稻城县| 轮台县| 呼图壁县|