1 引 言 當今,在嵌入式領域,嵌入式技術已經成為新的技術熱點。嵌入式系統的最典型的特點是它同人們的日常生活緊密相關,小到MP3、PDA等微型數字化設備,大到信息家電、智能電器、車載GPS等形形色色運用了嵌入式技術的電子產品和各種新型嵌入式設備在數量上現已遠遠超過了通用計算機。在嵌入式設備發展的30多年的歷史中,嵌入式技術從來沒有像現在這樣風靡過,人類也從來沒有像現在這樣享受嵌入式技術帶來的便利。 嵌入式系統是以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適用于應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。 從整體來看,我們將嵌入式系統分為兩個部分;第一個部分是與應用相關的硬件平臺,它負責和外部環境進行交互;第二部分是在這個硬件平臺上運行的功能軟件。在過去的幾年里,微電子技術的迅速發展使得硬件部件的花費降低了很多,這使得有很多人將一些原來必須使用軟件的部分用硬件實現了出來,軟件和硬件的區分也逐漸變得模糊。然而,嵌入式系統的開發者必須在最短的時限內和最低的花費設計出高性能的系統。最重要的步驟是根據具體需求將整個系統分為硬件部分和軟件部分。在通用PC平臺上作開發,這種軟硬件的劃分是很輕松的;但是,基于嵌入式平臺,需要考慮很多的因素。例如:為了提高運行速度和減少任務切換的花費,必須將某些功能用硬件來實現。本文重點介紹了兩種嵌入式系統設計模型,以及對這兩種嵌入式系統設計模型進行了分析比較。 2 硬件優先的設計方法 硬件優先的設計方法,即傳統的系統設計方法,它是一種依靠順序控制流的做法。 這種方法首先是對整個系統的需求分析,由于嵌入式系統的特殊性,需要仔細考慮功能性、能耗、成本花費等各個方面。在完成了需求分析以后,下一步要進行的就是軟硬件部分的劃分,這一步十分重要,從這個時候起,系統將要被分為軟件和硬件兩個部分: (1) 硬件部分包括系統的硬件平臺以及某些用專用硬件(例如:ASIC和Ip-cores)實現的功能模塊; (2) 軟件部分是指經過特殊處理過的操作系統和建立在操作系統之上的一些功能模塊。 第二步是相當重要的一個步驟,它通常是由嵌入式系統設計者根據自己的經驗和直覺來做的。在這個部分完成以后,就要進行硬件的設計和實現。在硬件部分可用以后,就可以開始軟件部分的實現了。在這個序列化的設計方法的最后一步就是整合與測試,即將軟件和硬件部分融合到一起來評估整個系統的性能。 圖1硬件優先的嵌入式設計模型 盡管硬件優先的設計模型存在有一些問題(在文中第四部分詳細說明),但它依然是一種很流行的方案。在一些小型和中型復雜度的系統中,由于硬件的復雜度不高,而且技術也比較成熟,通常都會選擇這種方法;但是在一些大型的系統中,這種方法就不是很適宜了,需要更先進的設計模型。 3 軟硬件協同設計方法 軟硬件協同設計是在系統目標要求的指導下,通過綜合分析系統軟硬件功能及現有資源,最大限度地挖掘系統軟硬件之間的并發性,協同設計軟硬件體系結構,以使系統能夠工作在最佳工作狀態。它的實質就是讓軟件和硬件體系作為一個整體并行設計、找到軟硬件的最佳結合點,使它們能夠以最有效的方式相互作用,互相結合,從而使系統工作在最佳狀態。 這種方法的第一步需要用形式化的方法對系統的需求進行描述。有幾種方法可以采用:Petri網、數據流圖以及狀態機。這種設計方式試圖利用這些數學上的推理方法來對系統行為做一個全面的描述,在對系統進行形式化的描述以后,就可以將系統分解為一些功能模塊,每個模塊都實現整體功能的一部分。 在第一步中得到的功能模塊既可以用硬件也可以用軟件來實現。利用形式化的方法,我們可以采用最佳的選擇。在軟硬件劃分的過程中,通過各方面的評估,例如:時間復雜度、花費估計等得到一組最佳的選擇。在得到了最優解以后,就是實現各模塊了;但是,這里的實現僅僅只是理論上的,例如:硬件模塊用VHDL描述,軟件模塊用C或C++語言表示。 圖2 軟硬件協同設計模型 最后一步就是系統整合了。在這個過程中,將所有的模塊組合到一起,然后驗證這些模塊的組合是否符合系統的形式化說明;如果不符合,就要重新進行軟硬件的劃分。當前的研究熱點之一是對驗證算法的理論研究,利用這些理論算法,完全可以將軟硬件的劃分和模塊的驗證發展為自動化的過程。 由于軟硬件的劃分是基于理論算法的,這在設計中可以盡早的暴露問題,以減少損失。但是這種設計模型也有其局限性(在文中第四部分詳細說明)。 4 兩種模型的分析與比較 4.1 硬件優先設計模型分析 利用硬件優先這種方法設計的嵌入式系統一直到最后一步才能驗證系統設計的正確性。因此,在系統開發過程中通過反復修改、反復試驗的方法使產品達到設計要求,這在很大程度上依賴于設計者的經驗;而且設計周期長、費用開支大,產品質量難以保證;這是因為在反復修改過程中,常會在某些方面背離原始設計的要求。因此,為了降低設計的風險,設計人員會選擇采用己經成熟的模塊,而不是自己重新設計;與此同時,這種設計方法還有一個很大的缺點:在硬件部分可用之前是不能實施軟件模塊。由于以上問題,硬件優先設計方法適用于在一些小型和中型復雜度的系統中;在這些系統中,硬件的復雜度不高,而且技術也相對比較成熟;因此通常都會選擇這種方法。 4.2 軟硬件協同設計模型分析 在軟硬件協同設計模型中,由于軟硬件的劃分是基于理論算法的,這在設計中可以盡早的暴露問題,以減少損失;但是,這種設計模型也有其局限性,具體表現在: (1) 可有的信息是否足夠。若要采用形式化的方法描述整個系統,并且正確的將系統分解為多個功能模塊的組合體;設計者需要知道整個系統中的功能描述;但是,有些第三方開發的模塊,設計者是無法知道其內部功能實現的;這種情況可能會導致系統劃分過程的不準確。 (2) 軟硬件模塊互相替換的自由度。在這種設計模型中,將系統分為軟硬件模塊后,可認為各個模塊都是能夠互相轉換的:即原先被劃分為用硬件實現的模塊也可以用軟件來實現,反之亦然。從理論上來看這是沒有問題的,但在實際的應用中是不能達到這么靈活的理論高度的。 4.3 兩種模型的綜合比較 一般來說,嵌入式系統設計可以分為系統描述、系統設計、系統評價與綜合實現四個階段。上述的兩種設計模型在這四個階段中各有異同: (1) 在系統描述階段,雖然兩種設計方法都是將系統功能全面表述出來,但軟硬件協同設計的方法除了全面描述系統功能外、還深入挖掘軟硬件之間的協同性,從而使系統能夠穩定、高效地工作。 (2) 在系統設計階段,兩種設計方法都將完成軟硬件功能的分配,即確定哪些功能由硬件模塊來實現,哪些系統功能由軟件模塊來實現,以及系統映射,即根據系統描述和功能分配選擇確定系統的體系結構。在軟硬件功能分配階段,由于硬件模塊的可編程性和嵌入式系統的變異性,軟硬件的界限已經不十分清楚;因此,軟硬件的功能劃分是一個復雜而艱苦的過程;這一方面是由于軟硬件劃分的研究工作還處在初級階段;另一方面則是由于這一問題內在的復雜性。在進行軟硬件功能分配時,既要考慮市場可以提供的資源狀況,又要考慮系統造價、開發周期等因素。硬件優先的設計方法一般根據設計者的經驗來確定軟硬件的劃分,而軟硬件協同的設計方法則利用形式化的方法,通過各方面的評估,例如:時間復雜度、花費估計等得到一組最佳的選擇。在系統映射階段,就是要確定系統將采用哪些硬件模塊(如微處理器、微控制器、存儲器、FPGA、DSP等部件)、軟件模塊(操作系統、驅動程序等)以及軟硬件模塊之間的聯系媒體(如共享存儲器、總線等),在這一階段,采用硬件優先設計方法的設計者為了降低設計的風險,通常會選擇采用己經成熟的硬件模塊,而不是自己重新設計;而采用軟硬件協同設計方法的設計者則需要將軟件和硬件體系作為一個整體并行設計、找到軟硬件的最佳結合點;這一過程顯然是一個復雜而艱苦的過程,但用這種方法可以使軟硬件能夠以最有效的方式相互作用,互相結合,從而使系統工作在最佳狀態。 (3) 在系統評價階段,即檢查確認系統設計的正確性的過程。采用硬件優先方法的設計者在系統開發過程中通過反復修改、反復試驗的方法來對設計結果進行驗證評估,這在很大程度上依賴于設計者的經驗;而采用軟硬件協同的設計者則通過形式化評價技術,通過建立精確的數學模型、利用數學手段檢測系統的正確性。因此,對系統中的不確定因素及隱性指標的檢查有特殊效果。 (4) 在綜合實現階段,即軟件系統、硬件系統的具體制作的過程。硬件優先的設計方法是先進行硬件部分的實現,在硬件部分完成后再進行軟件部分的實現;而軟硬件協同的設計方法則是將軟件和硬件體系作為一個整體并行設計、通過協同設計,深入挖掘軟硬件之間的協同性,從而使設計出來的系統能夠穩定、高效地工作。 通過上述的分析與比較可以看出硬件優先的設計方法適用于一些小型和中型復雜度的系統中,在這些系統中由于硬件的復雜度不高,而且技術也比較成熟,選擇這種方法比較簡單易行;但是在一些大型的系統中,這種方法就不是很適宜了,需要更先進的設計模型。軟硬件協同的設計模型比較適合在一些大型的系統中運用,在一些大型的系統設計中,設計者的主要任務就是要在系統描述的基礎上確定功能模塊、分配系統功能、建立模塊間的聯系、規定模塊之間的作用方式。軟硬件協同設計模型與硬件優先設計模型相比,更能有效地解決好這些問題。 5 結 論 本文介紹了兩種用于嵌入式系統開發的設計模型:硬件優先和軟硬件協同設計模型。在硬件優先設計模型中,要求先根據具體的需求設計出硬件平臺,然后在這個平臺的基礎上進行軟件開發;通常,硬件平臺的開發者還要提供相應的操作系統。在另外一種設計模型中,可以利用一些理論算法對劃分的軟硬件模塊進行驗證。當然,這兩種模型并非完美,它們都有各自的優缺點,這需要在實際的應用中根據實際需要進行適當的選擇以設計出合適的滿足需要的嵌入式系統。 |