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