嵌入式開發(fā)工具發(fā)展趨勢(shì)
近年來嵌入式領(lǐng)域得到了迅猛發(fā)展,嵌入式系統(tǒng)已經(jīng)無處不在,嵌入式系統(tǒng)的開發(fā)也變得越來越復(fù)雜,軟硬件的復(fù)雜度都大幅度增加。而市場(chǎng)對(duì)于嵌入式系統(tǒng)的開發(fā)周期要求也越來越高,這對(duì)于嵌入式開發(fā)工具提出了新的挑戰(zhàn)。
1 嵌入式開發(fā)工具面臨的挑戰(zhàn)
嵌入式開發(fā)過程相對(duì)PC應(yīng)用程序開發(fā)而言,具有其特殊的復(fù)雜性,涉及更多的硬件以及操作系統(tǒng)底層的知識(shí),缺乏統(tǒng)一的軟硬件平臺(tái),系統(tǒng)建模、工程管理和項(xiàng)目管理的工具也非常缺乏。隨著32位嵌入式處理器的應(yīng)用越來越廣泛,市場(chǎng)對(duì)于嵌入式系統(tǒng)的性能要求不斷提高。當(dāng)前嵌入式系統(tǒng)的復(fù)雜程度已不是過去8位單片機(jī)系統(tǒng)所能比擬的了,這對(duì)項(xiàng)目的開發(fā)、測(cè)試、管理都提出了新的要求,過去的嵌入式開發(fā)工具已經(jīng)越來越無法適應(yīng)新的需求??傮w上講,當(dāng)前的嵌入式開發(fā)對(duì)工具提出了以下新需求:
(1)如何從4/8/16位處理器過渡到32位處理器?
中國(guó)很多嵌入式工程師都具有8位處理器的開發(fā)經(jīng)驗(yàn),多數(shù)高校畢業(yè)生在學(xué)校也是接受8位處理器的培訓(xùn)。目前,8位處理器在微控制器領(lǐng)域仍具有重要的地位,但是2008年32位微控制器的全球出貨量第一次超過了8位。引起這一市場(chǎng)變化的原因有兩個(gè):其一是市場(chǎng)需要性能更高、功能更復(fù)雜的產(chǎn)品,8位處理器在功能上已經(jīng)無法滿足要求;其二是32位RISC微處理器價(jià)格已經(jīng)非常便宜了,例如ST公司基于Cortex—M3的STM32處理器,最便宜的僅僅1美元。
32位處理器與8位處理器在體系結(jié)構(gòu)上還是有著很大區(qū)別的,如何讓熟悉8位處理器的工程師迅速熟悉并能進(jìn)行32位處理器的開發(fā)非常重要。這就需要為那些熟悉8位處理器開發(fā)的工程師提供一種界面、接口他們都熟悉的32位處理器開發(fā)工具。ARM公司推出的RealViewMDK是一個(gè)典型范例:MDK的IDE采用了中國(guó)工程師非常熟悉的μVision(Keil),內(nèi)部則使用了ARM公司的專業(yè)編譯工具RVCT,這樣熟悉8位處理器的工程師可以非常平滑地過渡到32位處理器開發(fā)中。
(2)如何加快開發(fā)周期?
嵌入式系統(tǒng)現(xiàn)在越來越復(fù)雜,硬件復(fù)雜性和軟件復(fù)雜性大大增加。由于很多硬件已經(jīng)高度集成,這導(dǎo)致在目前的嵌入式系統(tǒng)開發(fā)中,軟件開發(fā)占80%以上的工作量。因此現(xiàn)在某些嵌入式軟件開發(fā)已經(jīng)逐步達(dá)到中型軟件項(xiàng)目的程度,而隨著軟件規(guī)模的增大,軟件按時(shí)交付率將會(huì)下降。但是市場(chǎng)對(duì)嵌入式系統(tǒng)開發(fā)周期要求卻越來越短。
嵌入式開發(fā)中軟件和硬件的依賴性非常高,軟件開發(fā)和硬件開發(fā)需要協(xié)同進(jìn)行。如果能減少兩者之間的依賴性,尤其是軟件開發(fā)對(duì)硬件開發(fā)的依賴,那么將可以大大加快開發(fā)周期。
(3)各類工具之間如何配合?
嵌入式開發(fā)過程中會(huì)使用到各種工具,包括IDE環(huán)境、編譯工具、軟硬件調(diào)試工具、操作系統(tǒng)等。根據(jù)項(xiàng)目的需求,往往會(huì)選擇來自不同廠商的工具進(jìn)行組合。如果能非常方便地將這些不同廠商的工具無縫地配合起來,則可以大大減少不必要的工作,這對(duì)于開發(fā)人員而言很重要。
(4)如何調(diào)試復(fù)雜的系統(tǒng)?
嵌入式系統(tǒng)越來越復(fù)雜,很多嵌入式系統(tǒng)都開始使用各種操作系統(tǒng),并使用多核結(jié)構(gòu)。但是傳統(tǒng)的JTAG調(diào)試方法能力非常有限,尤其是當(dāng)目標(biāo)設(shè)備實(shí)時(shí)運(yùn)行的時(shí)候,開發(fā)人員通常只能使用串口打印輸出的方法來做調(diào)試。當(dāng)需要分析內(nèi)存錯(cuò)誤、多任務(wù)之間關(guān)系、異常或中斷處理、睡眠模式等情況時(shí),目前的調(diào)試方法基本無效,系統(tǒng)實(shí)時(shí)運(yùn)行時(shí)基本是黑箱運(yùn)行。這就需要更加強(qiáng)大的調(diào)試工具和手段來為開發(fā)復(fù)雜的嵌入式應(yīng)用提供支持。
(5)如何提高編譯性能?
新的商業(yè)應(yīng)用嵌入式系統(tǒng)中,多處理器系統(tǒng)和各種多核處理器已經(jīng)成為趨勢(shì),這些新的硬件架構(gòu)會(huì)帶來非??捎^的效益。但是這種多核和多處理器的結(jié)構(gòu)給編譯系統(tǒng)提出了非常高的要求。例如一個(gè)ARM+DSP的系統(tǒng),如何將工作合理地分配給ARM處理器和DSP處理器,這非常重要。優(yōu)秀的編譯工具,應(yīng)該能使它們能實(shí)現(xiàn)“1+1>2”。
(6)如何實(shí)現(xiàn)圖形化開發(fā)?
圖形化開發(fā)在計(jì)算機(jī)軟硬件開發(fā)中已不是新問題了。圖形化的開發(fā)方法能大大減少開發(fā)工作量和復(fù)雜程度。[!--empirenews.page--]
2 基于Eclipse平臺(tái)的開發(fā)工具
2001年11月IBM將新一代開發(fā)工具項(xiàng)目Eclipse開源,并建立了Eclipse社區(qū)。Eclipse是替代IBM VisualAge for Java的下一代IDE開發(fā)環(huán)境,但其目標(biāo)不僅是成為專門開發(fā)Java程序的IDE環(huán)境,而是用戶可以根據(jù)Eclipse的體系結(jié)構(gòu),通過開發(fā)插件,擴(kuò)展到任何語言的開發(fā),甚至成為圖片繪制的工具。
Eclipse最有魅力的地方就是其插件體系結(jié)構(gòu)。E—clipse平臺(tái)類似PC機(jī)的主板,插件類似于PC機(jī)的擴(kuò)展卡。由于Eclipse這種開發(fā)的積木式體系結(jié)構(gòu),使其發(fā)展得非常迅猛。很多行業(yè)軟件提供商,例如IBM、Intel、Sybase、Borland、BEA、WindRiver等公司都成為了Eclipse會(huì)員;Eclipse下載量已經(jīng)超過3 000萬人次,遍布120個(gè)國(guó)家;50個(gè)著名IT企業(yè)已經(jīng)提供了超過600個(gè)各種插件,有了C、Ja—va、COBOL、Perl、Python、XML等語言開發(fā)插件,還有建模、數(shù)據(jù)庫、GUI等開發(fā)插件,甚至圖形編輯的插件;在J2EE開發(fā)方面,Eclipse更是以90%的速度增長(zhǎng)。
嵌入式系統(tǒng)開發(fā)往往需要多種工具配合,如果采用Eclipse平臺(tái),各種工具都以插件的方式出現(xiàn),則開發(fā)人員非常容易定制自己的開發(fā)工具集。從編輯、建模、編譯、仿真、調(diào)試、測(cè)試工具到操作系統(tǒng)定制、版本管理、項(xiàng)目管理工具都可以無縫集成,構(gòu)建成一個(gè)界面風(fēng)格完全統(tǒng)一的開發(fā)工具集合。
目前,嵌入式工具提供商已經(jīng)開始提供大量的嵌入式開發(fā)Eclipse插件。例如,ARM公司的RVDS 3.2模塊就有很大部分是Eclipse插件;MIPS公司的開發(fā)環(huán)境Sourecery G++基于GNU工具鏈和Eclipse IDE;WindRiver公司的WindRiver Workbench 2.O則完全基于E—clipse平臺(tái),該IDE同時(shí)支持VxWorks、Linux和其他專用操作系統(tǒng);很多芯片廠商例如ADl、TI、Xilinx等公司都開始提供各種針對(duì)自已芯片的Eclipse插件工具;著名的CPLD/FPGA開發(fā)工具商Altera推出的Nios II IDE也是基于Eclipse平臺(tái)的;而Nokia也推出了稱為Nokia Widget的Eclipse插件,用于開發(fā)Nokia手機(jī)上的應(yīng)用程序。另外,國(guó)內(nèi)嵌入式工具公司Embest也推出了完全基于Eclipse的ADl處理器開發(fā)工具BDT??傊?,在整個(gè)嵌入式系統(tǒng)開發(fā)的領(lǐng)域中,從硬件FPGA的設(shè)計(jì)工具到軟件的編譯工具、應(yīng)用層開發(fā)工具已經(jīng)都有了相應(yīng)的Eclipse插件,而且這一趨勢(shì)正在迅猛擴(kuò)展。預(yù)計(jì),在未來的2~3年內(nèi)中國(guó)的嵌入式開發(fā)工程師也將開始普遍使用基于Eclipse平臺(tái)的開發(fā)工具,定制適合自身的開發(fā)工具,進(jìn)行更加復(fù)雜的嵌入式系統(tǒng)開發(fā)。
3 CoreSight調(diào)試體系結(jié)構(gòu)
2004年ARM公司推出了一種新的調(diào)試體系結(jié)構(gòu)CoreSight,以獲得更為強(qiáng)大的調(diào)試能力。CoreSight體系結(jié)構(gòu)支持多核系統(tǒng)的調(diào)試,能對(duì)全系統(tǒng)進(jìn)行高帶寬的實(shí)時(shí)跟蹤,包括對(duì)系統(tǒng)總線的跟蹤與監(jiān)視。CoreSight體系結(jié)構(gòu)非常靈活,其中各個(gè)部件可以根據(jù)處理器廠商的需要進(jìn)行組合。圖1是一個(gè)典型的CoreSight調(diào)試結(jié)構(gòu),其組成部分很多,主要分為4類。
(1)控制訪問部件
用于配置和控制跟蹤數(shù)據(jù)流的產(chǎn)生、獲取跟蹤數(shù)據(jù)流,但不產(chǎn)生也不處理跟蹤數(shù)據(jù)流,典型的有:
①DAP(Debug Access Port),可以實(shí)時(shí)訪問AMBA總線上的系統(tǒng)內(nèi)存、外設(shè)寄存器,以及所有調(diào)試配置寄存器,而無需掛起系統(tǒng);
②ECT(Embedded CrOSS Trigger),包含CTI(CrossTrigger Interface)和CTM(Cross Trigger Matrix),為ETM(Embedded Trace Macrocell)提供一個(gè)接口,用于將一個(gè)處理器的調(diào)試事件傳遞到另一個(gè)處理器。
(2)源部件
用于產(chǎn)生向ATB(AMBA Trace Bus)發(fā)送的跟蹤數(shù)據(jù),典型的有:
①HTM(AHB Trace Maerocell),用于獲取AHB總線跟蹤信息,包括總線的層次、存儲(chǔ)結(jié)構(gòu)、時(shí)序、數(shù)據(jù)流和控制流等;
②ETM(Embedded Trace Macrocell),用于獲取處理器核的跟蹤信息;
③ITM(Instrumentation Trace Macrocell),是一個(gè)由軟件驅(qū)動(dòng)跟蹤源,其輸出的跟蹤信息可以由軟件設(shè)置,包括Printf類型的調(diào)試信息、操作系統(tǒng)以及應(yīng)用程序的事件信息等。
(3)連接部件
用于實(shí)現(xiàn)跟蹤數(shù)據(jù)的連接、觸發(fā)和傳輸,典型的有:
①ATB 1:1 bridge,具有2個(gè)ATB接口,用于傳遞跟蹤源發(fā)出的控制信號(hào);
②Replicator,可以讓來自同一跟蹤源的數(shù)據(jù)同時(shí)寫到2個(gè)不同的匯集點(diǎn)去;
③Trace Funnel,用于將多個(gè)跟蹤數(shù)據(jù)流組合起來,在ATB總線上傳輸。
(4)匯集點(diǎn)
是芯片上跟蹤數(shù)據(jù)的終點(diǎn),典型的有:
①TPIU(Trace Port Interface Unit),將片內(nèi)各種跟蹤源獲取的信息按照TPIU幀的格式進(jìn)行組裝,然后通過Trace Port傳送到片外;
②ETB(Embedded Trace Buffer),一個(gè)32位的RAM,作為片內(nèi)跟蹤信息緩沖區(qū);
③SWO(Serial wire Output),類似TPIU,但僅輸出ITM單元的跟蹤信息,只需要一個(gè)引腳來實(shí)現(xiàn)。
對(duì)于帶有CoreSight調(diào)試體系結(jié)構(gòu)的處理器,工程師可以實(shí)現(xiàn)實(shí)時(shí)調(diào)試,當(dāng)應(yīng)用程序在處理器上全速運(yùn)行時(shí),可以透明地觀察并記錄處理器中的各種事件,包括內(nèi)存單元讀寫、中斷異常的發(fā)生與處理、操作系統(tǒng)任務(wù)之間的觸發(fā)關(guān)系與運(yùn)行過程等等。這一新的調(diào)試體系結(jié)構(gòu)將嵌入式系統(tǒng)調(diào)試從黑盒變成了白盒,使工程師有能力應(yīng)付更復(fù)雜系統(tǒng)的設(shè)計(jì)與調(diào)試。
使用Trace Port接口進(jìn)行調(diào)試還需要專用的跟蹤器(Tracer)。如圖2所示,ARM公司的開發(fā)工具RVDS中RVT(RealView Tracer)就是這種跟蹤器,其價(jià)格較為昂貴,因此RVDS更適合SoC的設(shè)計(jì)和開發(fā)。如圖3所示,為了提供廉價(jià)的實(shí)時(shí)調(diào)試工具,ARM公司在其針對(duì)MCU的開發(fā)工具RealView MDK中,增加了圖l中的SWO接口完成實(shí)時(shí)跟蹤的功能;使用仿真器ULINK 2的JTAG接口中的2根引腳作為SWO接口,可以對(duì)Correx—M3處理器實(shí)時(shí)調(diào)試分析,能從ITM單元中實(shí)時(shí)獲取內(nèi)存單元讀寫信息、Printf打印信息、操作系統(tǒng)任務(wù)信息等。
[!--empirenews.page--]4 軟件仿真技術(shù)
通過軟件仿真的方式來進(jìn)行嵌入式系統(tǒng)的設(shè)計(jì)一直是嵌入式開發(fā)工具的重點(diǎn)發(fā)展方向。軟件仿真可以加快軟件開發(fā)進(jìn)度,使得軟件工程師對(duì)硬件工程師的依賴減弱,同時(shí)還減少了對(duì)硬件損傷的機(jī)會(huì)。另外給學(xué)習(xí)者提供了廉價(jià)的學(xué)習(xí)方法,降低了學(xué)習(xí)門檻。目前,軟件仿真技術(shù)在嵌入式的各個(gè)層面都取得了長(zhǎng)足的發(fā)展。
(1)OPLD/FPGA設(shè)計(jì)的仿真
CPLD/FPGA的設(shè)計(jì)是嵌入式系統(tǒng)硬件設(shè)計(jì)的重要部分,而且隨著SoC系統(tǒng)設(shè)計(jì)的增長(zhǎng),EDA在硬件設(shè)計(jì)中所占的比例將越來越大,也越來越復(fù)雜。目前的商用EDA設(shè)計(jì)軟件已普遍具有功能強(qiáng)大的邏輯仿真工具,能進(jìn)行完備的電路功能仿真和時(shí)序邏輯仿真,對(duì)時(shí)序和關(guān)鍵路徑延時(shí)分析已經(jīng)非常精確。
例如,Altera公司的設(shè)計(jì)工具Quartus II就具備以下強(qiáng)大的仿真及驗(yàn)證工具:TimeQuest時(shí)序分析器、PowerPlay功耗分析器、芯片規(guī)劃器、SignalTap II嵌入式邏輯分析器、RTL查看器/技術(shù)映射查看器,還能對(duì)第三方驗(yàn)證工具提供支持。
(2)單元模塊設(shè)計(jì)的仿真
單元模塊的驅(qū)動(dòng)設(shè)計(jì)是嵌入式系統(tǒng)軟件設(shè)計(jì)的最底層,是嵌入式系統(tǒng)軟硬件結(jié)合處。過去的嵌入式開發(fā)工具所具備的仿真功能都只是局限于對(duì)處理器內(nèi)和指令集的仿真。而近年來出現(xiàn)的一些仿真工具,已經(jīng)大大擴(kuò)大了仿真范圍,能仿真各種處理器片上單元模塊,支持各種外部輸入信號(hào)的仿真,并可以根據(jù)仿真的結(jié)果對(duì)應(yīng)用程序進(jìn)行性能分析,幫助程序員優(yōu)化軟件設(shè)計(jì)。
例如ARM公司的RealView MDK,充分發(fā)揮了Keil公司μVision的模塊仿真優(yōu)勢(shì),支持外部信號(hào)仿真、快速指令集仿真、中斷仿真、片上外設(shè)(ADC、DAC、EBI、Tim—ers、UART、CAN、I2C等)仿真等功能,并可將仿真結(jié)果以圖形化的方式呈現(xiàn)出來,例如邏輯分析儀、通信終端等。
(3)操作系統(tǒng)設(shè)計(jì)的仿真
操作系統(tǒng)在嵌入式系統(tǒng)軟件中占有重要地位,操作系統(tǒng)之上的應(yīng)用層軟件設(shè)計(jì)往往與PC機(jī)上的應(yīng)用軟件設(shè)計(jì)區(qū)別不大。嵌入式系統(tǒng)的操作系統(tǒng)通常需要根據(jù)處理器以及硬件來進(jìn)行定制。目前,嵌入式操作系統(tǒng)的移植工作都需要在對(duì)硬件細(xì)節(jié)充分了解的情況下才能進(jìn)行,這使研發(fā)工作常常會(huì)陷入具體硬件細(xì)節(jié)中不能自拔,硬件不穩(wěn)定的情況,所花費(fèi)的時(shí)間更是無法預(yù)計(jì)。
如果能建立一個(gè)嵌入式操作系統(tǒng)仿真平臺(tái),使嵌入式操作系統(tǒng)的設(shè)計(jì)和移植工作不用過于考慮底層硬件的細(xì)節(jié),只需要知道處理器的體系結(jié)構(gòu)即可開始工作,這將大大加快嵌入式操作系統(tǒng)設(shè)計(jì)移植和應(yīng)用層軟件開發(fā)的進(jìn)度,也可以為初學(xué)者提供一個(gè)良好的平臺(tái)。在x86結(jié)構(gòu)的PC機(jī)上,已經(jīng)出現(xiàn)了一些商業(yè)的操作系統(tǒng)仿真軟件,例如vmware和virtualPC等,能完全仿真一個(gè)真實(shí)的PC,用戶可以在其上安裝各種操作系統(tǒng)。目前,在嵌入式領(lǐng)域還沒有出現(xiàn)商業(yè)的操作系統(tǒng)仿真平臺(tái),但已經(jīng)出現(xiàn)了一些嵌入式操作系統(tǒng)仿真平臺(tái)的自由軟件。
例如,清華大學(xué)陳渝博士于2002年底開始組建的開源項(xiàng)目SkyEye,已經(jīng)可以模擬基于ARM內(nèi)核的CPU,包括ARM7TDMI、ARM720T、ARM9TDMI、ARM9xx、ARMlOxx、StrongARM、XScale等,并擴(kuò)展了一些處理器的內(nèi)存控制和各種I/O控制器,μClinux、μC/OS—II等多種嵌入式操作系統(tǒng)和各種系統(tǒng)軟件(如TCP/IP、圖形子系統(tǒng)、文件子系統(tǒng)等)可以在該平臺(tái)上進(jìn)行仿真運(yùn)行,并能對(duì)它們進(jìn)行源碼級(jí)的分析和測(cè)試。SkyEye項(xiàng)目組,近期已經(jīng)開始了加入MIPS處理器內(nèi)核的工作。
5 圖形化設(shè)計(jì)方法
圖形化開發(fā)在嵌入式領(lǐng)域已經(jīng)越來越多,從硬件設(shè)計(jì)到軟件編程的各個(gè)環(huán)節(jié)都已經(jīng)有了非常多的優(yōu)秀工具。例如RealView MDK的啟動(dòng)代碼生成器,通過圖形對(duì)話框可以非常容易地生成上百行的匯編代碼,大大提高了效率,尤其是對(duì)于新手而言。但是這些圖形化設(shè)計(jì)工具都是針對(duì)嵌入式系統(tǒng)設(shè)計(jì)的某個(gè)環(huán)節(jié)而言的。
將整個(gè)嵌入式系統(tǒng)的設(shè)計(jì)圖形化是未來嵌入式系統(tǒng)設(shè)計(jì)的另一個(gè)新趨勢(shì)。加州大學(xué)伯克利分校的EdwardLee提出,現(xiàn)在嵌入式系統(tǒng)的開發(fā)手段——如基于文本編程和面向?qū)ο蟮墓ぞ摺茧y以用來構(gòu)建嵌入式實(shí)時(shí)系統(tǒng),因?yàn)槊嫦驅(qū)ο蠛茈y直觀地表達(dá)時(shí)間和并行性,而時(shí)間和并行性在現(xiàn)在的嵌入式系統(tǒng)中是必不可少的。EdwardLee因此提出了面向角色的圖形化方法,它能夠更好地表達(dá)整個(gè)系統(tǒng),減少與特定硬件以及操作系統(tǒng)的相關(guān)性,這使更多的軟件設(shè)計(jì)和算法易于理解并被重復(fù)使用,更適合嵌入式系統(tǒng)設(shè)計(jì)。
結(jié) 語
綜上所述,可以預(yù)計(jì)在未來2~3年內(nèi),Eclipse將成為嵌入式工具的通用平臺(tái),多種嵌入式工具將在其上無縫結(jié)合,用戶可以定制自己的開發(fā)工具、管理工具;Core—Sight調(diào)試體系結(jié)構(gòu)帶來的實(shí)時(shí)調(diào)試分析手段,將成為開發(fā)更復(fù)雜嵌入式系統(tǒng)的技術(shù)保障;軟件仿真技術(shù)和圖形化開發(fā)方法目前盡管還只是在部分層面和部分環(huán)節(jié)上有效,但是它們已經(jīng)開始改變嵌入式設(shè)計(jì)的過程,而這一趨勢(shì)終將帶來嵌入式系統(tǒng)設(shè)計(jì)方法及過程的重大變革。