發布日期:2022-04-18 點擊率:38
本文從工程的角度就嵌入式系統設計中硬件和軟件的選擇問題進行了一些討論,并給出了在嵌入式系統設計中進行軟硬件選擇時應該考慮的因素。 一、問題的提出 按照嵌入式系統的工程設計方法,嵌入式系統的設計可以粗略的分成三個階段,即:分析,設計,實現。分析階段的主要任務是確定要解決的問題及需要完成的目標。因此,分析階段也常常被稱為“需求階段”,或“系統需求階段”。設計階段主要任務是解決如何在給定的約束條件下完成用戶的要求。此階段是在分析階段的基礎上研究“如何做”。實現階段主要是解決如何在所選擇的硬件和軟件的基礎上進行整個軟、硬件系統的協調實現。按照這種設計思想,在分析階段階段結束后,通常開發者面臨的一個棘手的問題就是硬件和軟件的選擇,因為它的好壞直接影響著實現階段的任務完成。通常硬件和軟件的選擇有: 1.處理器 2.硬件部件 3.操作系統 4.編程語言 5.軟件開發工具 6.硬件調試工具 7.軟件組件 在上述選擇中,通常,處理器是最重要的,同時操作系統或編程語言也是非常關鍵的。而且有時處理器的選擇會限制操作系統的選擇,操作系統的選擇又會限制開發工具的選擇。因此本文就如何在嵌入式系統設計中選擇硬件和軟件進行了一些評判因素的分析。 二、硬件的選擇 (一)嵌入式處理器的選擇 嵌入式系統的核心部件是各種類型的嵌入式處理器,目前據不完全統計,全世界嵌入式處理器的品種總量已經超過1000多種,流行體系結構有30幾個系列。但與全球PC市場不同的是沒有一種微處理器和微處理器公司可以主導嵌入式系統,僅以32位的CPU而言,就有100種以上嵌入式微處理器。由于嵌入式系統設計的差異性極大,因此選擇是多樣化的。設計者在選擇處理器時要考慮的主要因素有: 1.調查上市的CPU供應商。有些公司如Motorola、 Intel、AMD很有名氣,而有一些小的公司如QED(Santa Clara .CA)雖然名氣很小,但也生產很優秀的微處理器。另外,有一些公司,如ARM、MIPS等,只設計但并不生產CPU,他們把生產權授予世界各地的半導體制造商。ARM是另外一種近年來在嵌入式系統有影響力的微處理器制造商,ARM的設計非常適合于小的電源供電系統。Apple在Newton 手持計算機中使用ARM,另外有幾款數字無線電話也在使用ARM。 4.處理器的低工耗。嵌入式微處理器最大并且增長最快的市場是手持設備、電子記事本、PDA、手機、GPS導航器、智能家電等消費類電子產品,這些產品中選購的微處理器典型的特點是要求高性能、低工耗。許多CPU生產廠家已經進入了這個領域。今天,用戶可以買到一顆嵌入式的微處理器 ,其速度像筆記本中的 Pentium一樣快,而它僅使用普通電池供電,并且價格不足50美元。 典型的例子有NEC、日立為HPC、Palm PC而設計的 VR4111和SH7707。Digital的 Strong ARM 1100,在一個極小的200MHz主頻封裝中集成了彩色LCD控制器、 PCMCIA觸屏接 口等6個接口(含USB、IRDA),而批量的價格也在40美元以內。 5.處理器的軟件支持工具。僅有一個處理器,沒有較好的軟件開發工具的支持,也是不行的,因此選擇合適的軟件開發工具對系統的實現會起到很好的作用。 6.處理器是否內置調試工具。處理器如果內置調試工具可以大大大的縮小調試周期,降低調試的難度。 7.處理器供應商是否提供評估板。許多處理器供應商可以提供評估板來驗證你的理論是否正確,驗證你的決策是否得當。 (二)硬件平臺的選擇 1.規模。打算做一套?多套?還是規模生產?如果你的規模比較大,這時可以自己設計和制備硬件,這樣可以降低成本。反之,最好從第三方購買主板和I/O板卡。 2.目標市場的機會。如果想使產品盡快發售,以獲得競爭力,此時要盡可能買成熟的硬件,反之,可以自己設計硬件,降低成本。 3.軟件對硬件的依賴性。是否軟件可以在硬件沒有到位的時候先行開發。 (一)操作系統的選擇
2.處理器的處理速度。一個處理器的性能取決于多個方面的因素:時鐘頻率,內部寄存器的大小,指令是否對等處理所有的寄存器等。對于許多需用處理器的嵌入式系統設計來說,目標不是在于挑選速度最快的處理器,而是在于選取能夠完成作業的處理器和I/O子系統。如果你的設計是面向高性能的應用,那么建議你考慮某些新的處理器,其價格極為低 廉,如IBM和Motorola 的Power PC。以前Intel 的 i960是銷售極好的RISC高性能芯片,但 是最近幾年卻遇到強勁的對手,讓位于MIPS、SH以及后起之星ARM。
3.技術指標。當前,許多嵌入式處理器都集成了外圍設備的功能,從而減少了芯片的數量,進而降低了整個系統的開發費用。開發人員首先考慮的是,系統所要求的一些硬件能否無需過多的膠合邏輯(GL)就可以連接到處理器上。其次是考慮該處理器的一些支持芯片,如DMA控制器,內存管理器,中斷控制器,串行設備、時鐘等的配套。值得注意的是,AMD公司最近發布了一種Am186CC的通信用處理器,內置采用國人熟悉的X86內核和四路 HDLC和一個 USB外圍控制器。,該處理器適合于多種通信應用領域,包括:ISDN終端適配器、低端路由器、數字專線(xDSL)MODEM、USB外圍設備、PBX 應用、數字電話、數字環路載波以及電話系統。
三、軟件的選擇
盡管嵌入式系統有著無比廣闊的市場需求和發展前景,但嵌入式系統的發展多年來卻經歷了一個曲折和痛苦的歷程。隨著微處理器的產生,價格低廉、結構小巧的CPU和外設連接提供了穩定可靠的硬件架構,那么限制嵌入式系統發展的瓶頸就突出表現在了軟件方面。從八十年代末開始,陸續出現了一些嵌入式操作系統,比較著名的有Tornado/VxWorkx、pSOSystem、Neculeus和Windowss CE、QNX、VRTX,以及沸沸揚揚的 “女媧計劃”,中國人自己的嵌入式操作系統HOPEN和現在談論最多的嵌入式Linux操作系統等等。可用于嵌入式系統軟件開發的操作系統很多,但關鍵是如何選擇一個適合你所開發項目的操作系統,我們認為應該從以下幾點進行考慮:
1.操作系統提供那些開發工具。有些實時操作系統(RTOS)只支持該系統拱應商的開發工具。也就是說,還必須向操作系統供應商獲取編譯器、調試器等。而有些操作系統使用廣泛且有第三方工具可用,因此,選擇的余地比較大。如PSOSystem支持的工具有:pRISM+,全集成開發環境,含源代碼調試器(SpOTLIGHT),C/C++ 編譯器(e g Diab),匯編器,連接器,C/C++ 開發環境(SNiFF+),嵌入式系統監視工具(Esp),CORBA等。而Tornado/VxWorkx支持的工具有:遠程源級調試器;瀏覽器;WindSh 命令行接口;模塊載入器;目標工具;WindConfig 板基支持包配置;大約90個第三方嵌入式開發工具和擴展。
2.操作系統向硬件接口移植的難度。操作系統到硬件的移植是一個重要的問題。它是關系到整個系統能否按期完工的一個關鍵因素。因此我們要選擇那些可移植性程度高的操作系統。從而避免操作系統難以向硬件移植而帶來的種種困難,加速系統的開發進度。
3.操作系統的內存要求。均衡考慮是否需要額外花錢去購買RAM或EEPROM來迎合操作系統對內存的較大要求。有些操作系統對內存的要求是 target dependent。如Tornado/VxWorkx,開發人員能按照應用需求分配所需的資源,而不是為操作系統分配資源。從需要幾K字節存儲區的嵌入設計到需求更多的操作系統功能的復雜的高端實時應用, 開發人員可任意選擇多達80種不同的配置。
4.開發人員是否熟悉此操作系統及其提供的API。
5.操作系統是否有提供硬件的驅動程序,如網卡等。
6.操作系統是否具有可剪裁性,即能否根據實際需要進行系統功能的剪裁。有些操作系統具有較強的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。
7.操作系統的實時性。實時性分為:軟實時和硬實時。有些嵌入式操作系統只能提供軟實時,如WindowsCE。作為微軟大名鼎鼎的“維那斯”,Microsoft Windows CE 2.0 是32位,,Windows兼容,小內核,可伸縮實時操作系統,滿足大部分嵌入式和非嵌入式應用的需要。但不夠實時,屬于軟實時嵌入式操作系統。
(二)編程語言的選擇
1.通用性。隨著微處理器技術的不斷發展,其功能越來越具體,種類越來越多,但不同種類的微處理器都有自己專用的匯編語言。這就為系統開發者設置了一個巨大的障礙,使得系統編程更加困難,軟件重用無法實現,而高級語言一般和具體機器的硬件結構聯系較少,比較流行的高級語言對多數微處理器都有良好的支持,通用性較好
2.可移植性程度。由于匯編語言和具體的微處理器密切相關,為某個微處理器設計的程序不能直接移植到另一個不同種類的微處理器上使用,因此,移植性差;而高級語言對所有微處理器都是通用的,因此,程序可以在不同的微處理器上運行,可移植性較好。這是實現軟件重用的基礎。
3.執行效率。一般來說,越是高級的語言,其編譯器和開銷就越大,應用程序也就越大、越慢。但單純依靠低級語言,如匯編語言來進行應用程序的開發,帶來的問題是編程復雜、開發周期長。因此存在一個開發時間和運行性能間的權衡。
4.可維護性。低級語言如匯編語言,可維護性不高。高級語言程序往往是模塊化設計,各個模塊之間的接口是固定的。因此,當系統出現問題時,可以很快地將問題定位到某個模塊內,并盡快得到解決。另外,模塊化設計也便于系統功能的擴充和升級。
5.基本性能。在嵌入式系統開發過程中使用的語言種類很多,比較廣泛應用的高級語言有:Ada、C/C++、Modula-2和JAVA等。 Ada語言定義嚴格,易讀易懂,有較豐富的庫程序支持,目前在國防、航空、航天等相關領域應用比較廣泛,未來仍將在這些領域占有重要地位。C語言具有廣泛的庫程序支持,目前在嵌入式系統中是應用最廣泛的編程語言,在將來很長一段時間內仍將在嵌入式系統應用領域占重要地位。C++是一種面向對象的編程語言,目前在嵌入式系統設計也得到了廣泛的應用,如GNU C++。Visual C++,是一種集成開發環境,支持可視化編程,廣泛應用于GUI程序開發。但 C與C++相比,C++的目標代碼往往比較龐大和復雜,在嵌入式系統應用中應充分考慮這一因素。Modula-2定義清晰,支持豐富,具有較好的模塊化結構,在教學科研方面有較廣泛的應用。雖然該語言的開發應用一直比較平緩,但近兩年在歐洲有所復蘇。Java語言相對年輕,但有很強的跨平臺特性,目前發展勢頭較為強勁。它的"一次編程,到處可用"的特性使得它在很多領域倍受歡迎。隨著網絡技術和嵌入式技術的不斷發展,Java及嵌入式Java的應用也將越來越廣泛[2]。
(三)開發工具的選擇
1.系統調試器的功能。系統調試特別是遠程調試是一個重要的功能。
2.支持庫函數。許多開發系統提供大量使用的庫函數和模板代碼。如大家比較熟悉的C++編譯器就帶有標準的模板庫,它提供了一套用于定義各種有用的集裝、存儲、搜尋、排序對象。
3.編譯器開發商是否持續升級編譯器。
4.連接程序是否支持所有的文件格式和符號格式。
(四)硬件調試工具的選擇
好的軟件調試程序可以有效的發現大多數的錯誤。但是如果再選擇一個好的硬件調試就會達到事半功倍的效果。常用的硬件調試工具有以下幾種。
1.實時在線仿真器(ICE)。用戶從仿真插頭向ICE看,ICE應是一個可被控制的MCU。ICE是通過一根短電纜連接到目標系統上的,該電纜的一端有一個插件,插到處理器的插座上,而處理器則插到這個插件上。ICE支持常規的調試操作,如單步運行、斷點、反匯編、內存檢查、源程序級的調試等等。
2.邏輯分析儀。邏輯分析儀最常用于硬件調試,但也可用于軟件調試。它是一種無源器件,主要用于監視系統總線的事件.
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV