SIdView 嵌入式Linux集成開(kāi)發(fā)環(huán)境
建華科技經(jīng)過(guò)多年研發(fā),成功推出SldView嵌入式Linux集成開(kāi)發(fā)環(huán)境。SldView運(yùn)行于Windows系統(tǒng)中,支持μC/OS_II、μClinux和Linux三種嵌入式操作系統(tǒng)的開(kāi)發(fā);支持編輯代碼、交叉編譯和交叉調(diào)試的開(kāi)發(fā)全過(guò)程;支持Linux內(nèi)核、驅(qū)動(dòng)、任務(wù)級(jí)、模塊等動(dòng)態(tài)調(diào)試;支持內(nèi)核、驅(qū)動(dòng)、任務(wù)、模塊等同步調(diào)試。
1 當(dāng)前嵌入式Linux開(kāi)發(fā)模式
嵌入式系統(tǒng)通常為一個(gè)資源受限的系統(tǒng)。直接在嵌入式系統(tǒng)的硬件平臺(tái)上編寫軟件比較困難,有時(shí)甚至是不可能的,開(kāi)發(fā)流程如圖1所示,開(kāi)發(fā)模式如圖2所示。目前,一般采用的辦法是,先在通用計(jì)算機(jī)上編寫程序,然后通過(guò)交叉編譯,生成目標(biāo)平臺(tái)上可運(yùn)行的二進(jìn)制代碼格式,最后下載到目標(biāo)平臺(tái)上的特定位置運(yùn)行。
建立嵌入式Linux交叉開(kāi)發(fā)環(huán)境。目前,常用的交叉開(kāi)發(fā)環(huán)境主要有開(kāi)放和商業(yè)兩種類型。交叉開(kāi)發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境。它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機(jī)/目標(biāo)機(jī)模式,在宿主機(jī)上編寫好源代碼及相關(guān)的配置文件。
交叉編譯和鏈接。在完成嵌入式軟件的編碼后,就可以進(jìn)行編譯和鏈接,以生成可執(zhí)行代碼。由于開(kāi)發(fā)過(guò)程大多是在Intel公司x86系列CPU的通用計(jì)算機(jī)上進(jìn)行的,而目標(biāo)環(huán)境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonJBall等系列的微處理器,這就要求在建立好的交叉開(kāi)發(fā)環(huán)境中進(jìn)行交叉編譯和鏈接。通過(guò)編譯連接后,即可下載到目標(biāo)機(jī)運(yùn)行。
在嵌入式系統(tǒng)開(kāi)發(fā)中,完成編譯連接只是開(kāi)發(fā)工作的一小部分,而令廣大開(kāi)發(fā)人員頭痛的則是下載到目標(biāo)機(jī)進(jìn)行調(diào)試。多數(shù)的嵌入式系統(tǒng)開(kāi)發(fā)都是基于操作系統(tǒng)的,而目前大多數(shù)集成開(kāi)發(fā)環(huán)境都不支持Linux調(diào)試,僅有的幾種開(kāi)發(fā)平臺(tái)功能簡(jiǎn)單卻昂貴的讓大多企業(yè)望而卻步。
2 SldView集成開(kāi)發(fā)工具的特色
SldView除了實(shí)現(xiàn)目前常用集成開(kāi)發(fā)環(huán)境的開(kāi)發(fā)和調(diào)試功能外,還提供了Linux內(nèi)核、驅(qū)動(dòng)、任務(wù)級(jí)、模塊等動(dòng)態(tài)調(diào)試,這是廣大開(kāi)發(fā)人員最急切的需要。它完全支持OS內(nèi)核調(diào)試,并可以進(jìn)行任務(wù)級(jí)與線程的實(shí)時(shí)調(diào)試。SldView可以對(duì)多個(gè)任務(wù)同時(shí)進(jìn)行跟蹤調(diào)試,動(dòng)態(tài)檢測(cè)到任務(wù)的啟動(dòng),然后加載任務(wù)的符號(hào)表,開(kāi)發(fā)人員可完全控制任務(wù)的運(yùn)行,并可以在內(nèi)核態(tài)及任務(wù)態(tài)問(wèn)自由切換。此外,SldView還提供了內(nèi)存管理、任務(wù)綁定、Timer查看、任務(wù)Time管理、任務(wù)上下文查看等調(diào)試功能,極大方便了開(kāi)發(fā)人員的OS調(diào)試,使開(kāi)發(fā)效率大幅度提高。
在代碼級(jí)調(diào)試方面SldView也非常優(yōu)秀。SldView提供圖形和命令行兩種調(diào)試方式,并支持軟件模擬功能。設(shè)計(jì)人員可以動(dòng)態(tài)選擇程序下載地址,且下載速度快,尤其適用于用戶調(diào)試代碼量大的程序。強(qiáng)大的斷點(diǎn)設(shè)置、變量察看、寄存器查看、自定義寄存器查看、板上寄存器查看、函數(shù)堆棧顯示等功能,可以讓設(shè)計(jì)人員掌握程序運(yùn)行的每一個(gè)細(xì)節(jié)。SldView還支持源代碼窗口、匯編程序窗口和混合窗口的顯示。
SldView集成開(kāi)發(fā)環(huán)境界面直觀友好,類似于MSVisual Stduio。設(shè)計(jì)人員可以很方便的創(chuàng)建、配置工程,然后編譯、調(diào)試程序,也可以直接打開(kāi)編譯好的目標(biāo)文件來(lái)調(diào)試。SldView完全支持Rcc、ads等編譯器生成目標(biāo)代碼的調(diào)試。設(shè)計(jì)人員可以根據(jù)自己的需要制定開(kāi)發(fā)環(huán)境,也可以選擇試用英文版。
3 應(yīng)用實(shí)例
3.1 Linux應(yīng)用程序開(kāi)發(fā)
由于沒(méi)有合適的開(kāi)發(fā)環(huán)境,linux應(yīng)用程序的開(kāi)發(fā)效率往往都很低,特別是用戶進(jìn)程的調(diào)試非常困難,而SLD-View的出現(xiàn)使這些問(wèn)題得以解決。
使用SldVleW的Linux工程向?qū)Щ蚱渌募庉嬈鹘?yīng)用程序源文件和相關(guān)配置文件。在SldView配置好OS,運(yùn)行config、dep、make命令即可編譯Linux,如果沒(méi)有報(bào)錯(cuò)則會(huì)生成相關(guān)的二進(jìn)制文件。使用SldView鏈接開(kāi)發(fā)板并下載二進(jìn)制文件,這時(shí)就可以調(diào)試Linux應(yīng)用程序了。
SldView會(huì)自動(dòng)攔截Linux運(yùn)行過(guò)程中的每一個(gè)進(jìn)程,并提示開(kāi)發(fā)人員是否進(jìn)行調(diào)試。例如當(dāng)開(kāi)發(fā)人員運(yùn)行應(yīng)用程序“LCD”時(shí),該進(jìn)程被SldView攔截并掛起,同時(shí)SldView會(huì)提示是否調(diào)試該進(jìn)程,如圖3所示。
選擇“是”打開(kāi)相應(yīng)的.elf文件,如圖4所示。這樣就可以像調(diào)試普通程序一樣調(diào)試該進(jìn)程了。
3.2 設(shè)備驅(qū)動(dòng)程序調(diào)試
在嵌入式系統(tǒng)開(kāi)發(fā)中,其中很大的工作量都是為各種設(shè)備編寫驅(qū)動(dòng)程序,除非不用操作系統(tǒng)而直接控制硬件。對(duì)于任何一位內(nèi)核代碼的開(kāi)發(fā)人員來(lái)說(shuō)。最急迫的問(wèn)題之一就是如何完成調(diào)試。在調(diào)試工具缺乏和功能不完善的情況下,大多數(shù)開(kāi)發(fā)人員選擇使用打印調(diào)試的方法,這樣的缺點(diǎn)是:調(diào)試效率低、不能完全掌握變量值的變化、特別是在大型循環(huán)結(jié)構(gòu)中是無(wú)法調(diào)試的。SldView強(qiáng)大的調(diào)試功能可以讓驅(qū)動(dòng)程序和OS內(nèi)核調(diào)試像調(diào)試普通C程序一樣簡(jiǎn)單。
先編寫好驅(qū)動(dòng)程序源代碼并加入到OS內(nèi)核中,使用SldView重新編譯OS。如果沒(méi)有報(bào)錯(cuò)則會(huì)生成相應(yīng)的.elf文件。
在SldView中打開(kāi)編譯好的.elf文件并下載到目標(biāo)板,定位到編寫好的驅(qū)動(dòng)程序設(shè)置斷點(diǎn)。本例中驅(qū)動(dòng)程序原文件為sc344bOfb.c,設(shè)置斷點(diǎn)到:int__init s3c44bofb_init(void),如圖5所示。
這樣系統(tǒng)在加載sc344bOfb驅(qū)動(dòng)程序的時(shí)候,當(dāng)運(yùn)行到int_init s3c44bOfb_init(void)函數(shù)入口就會(huì)掛起,開(kāi)發(fā)人員可以單步運(yùn)行并通過(guò)自動(dòng)變量、自定義變量和寄存器窗口來(lái)查看當(dāng)前程序的運(yùn)行情況。
4 結(jié) 論
SldView集成開(kāi)發(fā)環(huán)境的出現(xiàn)為當(dāng)前大中型嵌入式系統(tǒng)開(kāi)發(fā)商提供了高效的設(shè)計(jì)調(diào)試平臺(tái),降低了操作系統(tǒng)調(diào)試難度,提高丁開(kāi)發(fā)效率。同時(shí),SldView集成開(kāi)發(fā)環(huán)境良好的界面和簡(jiǎn)單的操作也可作為各高等院校教學(xué)實(shí)驗(yàn)平臺(tái)及科研機(jī)構(gòu)的首選。
評(píng)論