複製鏈接
請複製以下鏈接發送給好友

嵌入式系統開發

(電腦之外的所有電子設備上操作系統的開發)

鎖定
嵌入式系統開發是對於除了電腦之外的所有電子設備上操作系統的開發,開發對象有手機,掌上電腦機電系統等,一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用 户的應用程序等四個部分組成。
中文名
嵌入式系統開發
中    心
應用
基    礎
計算機技術
開發對象
手機掌上電腦機電系統

嵌入式系統開發應用定義

嵌入式系統是以應用為中心,以計算機技術為基礎,並且軟硬件可裁剪,適用於應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用 户的應用程序等四個部分組成,用於實現對其他設備的控制、監視或管理等功能
嵌入式系統一般指非PC系統,它包括硬件和軟件兩部分。硬件包括處理器/微處理器存儲器及外設器件和I/O端口、圖形控制器等。軟件部分包括操作系統軟件(OS)(要求實時和多任務操作)和應用程序編程。有時設計人員把這兩種軟件組合在一起。應用程序控制着系統的運作和行為;而操作系統控制着應用程序編程與硬件的交互作用。

嵌入式系統開發基礎知識

一、軟件方面的知識:
1、嵌入式微處理器結構與應用:
或傳統的“微機原理與接口”課程,嵌入式是軟硬件結合的技術,搞嵌入式系統的人應對ARM處理器工作原理和接口技術有充分了解,包括彙編指令系統。不瞭解處理器原理,就沒辦法寫出驅動程序。在嵌入式開發的一些關鍵部分,如Bootloader等,主要靠彙編寫程序。
2、嵌入式操作系統類課程:
從事嵌入式系統的人至少須掌握一個嵌入式操作系統(當然越多越好),目前最重要的RTOS主要包括:
(1)、傳統的經典RTOS:最主要的是Vxworks操作系統,以及其Tornado開發平台。Vxworks出現早,實時性很強,並且內核可極微,可靠性較高。特別在通信設備等實時性要求較高的系統中,有比較廣泛的應用。
(2)、嵌入式Linux操作系統:嵌入式Linux廣泛應用的原因當然是免費、開源、支持軟件多、支持者多,成本也低。
(3)、 Windows CE嵌入式操作系統:Windows CE是微軟的操作系統,也有很大的市場份額,特別是在PDA、手機等界面要求較高或者要求快速開發的場合。
3、嵌入式開發的其它相關軟件課程:
(1)、數字圖像壓縮技術:嵌入式最熱門的應用領域之一,要掌握MPEG編解碼算法和技術,如DVD、MP3、PDA、高清電視、機頂盒等都涉及MPEG高速解碼問題。
(2)、通信協議及編程技術:大多數嵌入式設備都要連入局域網或Internet,所以首先應掌握TCP/IP協議及其編程;另外,掌握無線通信協議及編程也是是很重要的。
(3)、網絡與信息安全技術:如加密技術,數字證書CA等。
二、硬件方面的知識:
模擬電路、數字電路、計算機組成原理、微處理器結構、單片機等硬件課程是從事嵌入式開發要掌握的。
嵌入式本身就是從單片機發展過來的,如今很多單片機都已經帶OS,嵌入式開發領域,驅動人才非常缺乏。寫驅動必須掌握操作系統的內部工作原理,包括相關的硬件知識,即所謂的軟硬通吃,所以這方面的人才是一將難求。

嵌入式系統開發應用特點

嵌入式計算機系統同通用型計算機系統相比具有以下特點:
1.嵌入式系統通常是面向特定應用的嵌入式CPU與通用型的最大不同就是嵌入式CPU大多工作在為特定用户羣設計的系統中,它通常都具有低功耗、體積小、集成度高等特點,能夠把通用CPU中許多由板卡完成的任務集成在芯片內部,從而有利於嵌入式系統設計趨於小型化,移動能力大大增強,跟網絡的耦合也越來越緊密。
2.嵌入式系統是將先進的計算機技術、半導體技術和電子技術與各個行業的具體應用相結合後的產物。這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創新的知識集成系統。
3.嵌入式系統的硬件和軟件都必須高效率地設計,量體裁衣、去除冗餘,力爭在同樣的硅片面積上實現更高的性能,這樣才能在具體應用中對處理器的選擇更具有競爭力。
4.嵌入式系統和具體應用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式系統產品一旦進入市場,具有較長的生命週期。
5.為了提高執行速度和系統可靠性,嵌入式系統中的軟件一般都固化在存儲器芯片或單片機本身中,而不是存貯於磁盤等載體中。
6.嵌入式系統本身不具備自舉開發能力,即使設計完成以後用户通常也是不能對其中的程序功能進行修改的,必須有一套開發工具和環境才能進行開發。

嵌入式系統開發應用要素

嵌入式處理器
嵌入式系統的功能軟件集成於硬件系統之中,系統的應用軟件與硬件一體化。在嵌入式系統的硬件設備中,嵌入處理器是整個系統的核心部件,其性能的好壞直接決定整個系統的運行效果。Pc機銷售市場中,隨着通用cPu技術的突破和工作頻率的倍增,舊款低檔cPu早已經不見蹤跡。嵌入式系統開發面向具體應用,不同領域的應用市場需要不同款式和性能指標的處理器來開發,於是在嵌入式處理器市場中,中低端的4位、8位和l6位處理器依然存在,高性能的32位處理器也有很多產品。隨着超大規模集成電路技術和微電子技術發展,包含嵌入式處理器以及部分外圍電路的微控制器產品也進入市場,片上系統soc(system on chip)產品也開始出瑚。這些產品的上市,不僅豐富了嵌入式處理器產品,而且也更加方便了工程技術人員進行嵌入式系統的技術開發和擴大嵌入式產品的應用領域。
由於嵌入式系統應用需求的多樣性,市場上基於RIsc結構的嵌入式處理器提供商也日漸增多。統計數字表明,1999年底市場銷售額排在前三位的公司分別是ARM、Motor01a和MIPs,其中ARM公司的芯片銷售量達1.5億個,市場份額超過50%。面對這樣的嵌入式處理器市場,開發設計人員應該如何選擇呢?這裏有兩個前提條件。一是深入研究具體的嵌入式系統應用需求,充分的應用需求分析後獲取應用系統的性能指標。面向應用是嵌入式系統的特色,具體的應用需求決定着嵌入式處理器的性能選型。在工業控制等特殊領域,系統需求分析員不僅需要和工作人員、上級主管親自面談,而且要到工作現場獲取第一手信息,收集充分的資料。應用需求分析後、需要定義產品具備的基本功能和性能指標,如系統處理的數據量大小和處理實時性要求、系統正常運行時的工作環境、系統運行過程中可能遇到的突發事件、系統的尺寸大小和功耗指標等。第二個前提條件是.分析研究市場上各大廠商提供的各款嵌入式處理器的性能指標,如功耗、體積、成本、可靠性、速度、處理能力、電磁兼容性等c這些參數也是各個半導體芯片廠商之間競爭的熱點。
開發人員通過應用需求分析獲取了產品的功能性和非功能性指標,研究了市場上嵌入式處理器的性能參數後,能夠對嵌入式處理器作出較好的選擇。嵌入式處理器選擇的基本原則是滿足具體功能性和非功能性指標需求的、市場應用反應良好的、硬件配置最少的嵌入式處理器。如簡單的智能儀器儀表設計考慮使用4位或者8位低檔單片機8051;和數字信號處理密切相關的選用TI公司的TMx320x系列的DsP(數字信號處理)芯片;如果產品偏重於通信功能,考慮Motorola公司的嵌入式處理器68K系列;如果產品功能比較齊全,可選用嵌入式處理器領域的後起之秀ARM公司的高性能嵌入式處理器ARM芯片系列等。除了上述的產品性能需求因素,選擇嵌入式處理器時也需要考慮開發人員對此係列處理器的熟悉程度c因為不同公司開發的嵌入式處理器差別較大,從一類處理器轉移到另一類處理器的難度比同一系列不同處理器間的轉移難度大得多,風險多得多 [1] 
以嵌入式處理器為中心,開發人員搭建好硬件電路時僅提供了裸機運行平台,要使整個系統有限的硬件資源充分利用起來,還需要(嵌入式)實時操作系統RTOs(RealTimeoperatingsystem)的軟件支持。RTos與一般商用多任務os(如unix、windows以及LInux等j有共同的…面,也有不同的一面。商用多任務os主要目的是方便用户管理計算機資源和追求系統資源的最大利用率;而RTOs重點追求的是實時性、可確定性、可靠性,當然也包括有限資源的管理。一般RTOs內核都很小,在幾KB~十幾KB之間。流行的RTOs基本上都支持基於優先級的搶佔式調度策略和時間片輪轉,具有微內核結構,有標準組件可供選用.支持虛擬存儲技術和存儲保護機制。由於具體嵌入式應用的功能需求差異以及不同RTOs問不同的性能指標,RTOs的選擇有三種方案:
  • 一是根據應用需要和公司技術實力,考慮自主開發研究(國內手機廠商寧渡波導公司部分款式的手機操作系統就是自主開發的);
  • 二是充分考慮系統需求和流行RTos的性能指標及性價比選擇商用RTOs,如wIncE、Vxworks等;
  • 三是考慮嵌入式Linux(RTLinux),RTLjnux是開放源代碼的免費自由軟件,互聯網技術論壇較多,具備較好的裁減性以支持不同的應用範疇。
當前全球範圍內商用RTos多達200多種,應用領域的多樣性使得市場反應較好的也將近有十幾種,如Vxworks、psOs、Nucleus、QNx、wincE以及中科院軟件研究中心研製的Hopen等。這些不同名稱的RTOs,核心軟件差異微妙而且難以琢磨,選擇時重點是考慮它們的性能評價指標,主要包括調度算法、RTOs本身內存開銷、RTOs內存管理模式、最大中斷禁止時間和最大任務切換時間。當然,也包括RTOs的購買成本和提供的技術支持等相關因素。針對實時性要求較高的應用,需要重點考慮RTOs的最大中斷禁止時間和最大任務切換時問。這兩個參數越小越好。減小這兩個參數值,除了選用較高工作主頻的嵌入式處理器外,還和RTOs本身任務調度和中斷處理機制密切相關。選擇RTOs時,通常還要考慮系統功能方面支持何種處理器硬件平台,何種API,是否支持核心態用户態、是否支持內存管理單元MMu、可移植性、調試支持、標準支持等。如果開發網絡應用,還需要考慮該RTOs是否支持TCP/IP的網絡組件和I/O服務等。如果開發遊戲和娛樂市場,要着重研究該RTos對多媒體的支持能力。市場應用需求的多樣性,使得RTOs本身應該支持用户自定製能力,根據應用需要在微內核的基礎上選用標準組件。
仿真器和調試器
調試是嵌入式系統開發過程的重要環節。嵌入式系統開發調試和一般pc系統開發調試有較大差別。在一般Pc機系統開發中,調試器和被調試程序是運行在相同的硬件和軟件平台上的兩個進程,而在嵌入式系統中,調試器是運行在桌面操作系統上的應用程序,被調試程序是運行在基於特定硬件平台的操作系統,兩個程序問需要實時通信。嵌入式系統調試時,主機上運行的集成開發調試工具(調試器)通過仿真器和目標機相連a仿真器處理宿主機和目標機之間所有的通信,這個通信口可以是串並行口或者高速以太網接口。仿真器通過JTAG口和目標機相連。
嵌入式系統開發調試方法有快速原型仿真法和實時在線調試法。快速原型仿真法用於硬件設備尚未完成時,直接在宿主機上對應用程序運行進行仿真分析。在此過程中系統不直接和硬件打交道,由開發調試軟件內部某一特定軟件模塊模擬硬件cPu系統執行過程,並可同時將仿真異常反饋給開發者進行錯誤定位和修改。實時在線調試法在具體的目標機平台上調試應用程序.系統在調試狀態下的執行情況和實際運行模式完全一樣,這種方式更有利於開發者實時對系統硬件和軟件故障進行定位和修改,提高產品開發速度。選用的調試器是運行在主機上的集成開發環境一般需要集編輯、彙編、編譯、鏈接和調試環境於一體,支持低級彙編語言、c和c++語言,基於友好的圖形用户界面(GuI),支持用户觀察或修改嵌入式處理器的寄存器和存儲器配置、數據變量的類型和數值,堆棧和寄存器的使用,支持程序斷點設置,單步、斷點豉者全速運行等特性。應用需求的多樣性導致市場上仿真器和調試器的提供商也較多,windriver公司的Tornado是一個很好的開發調試工具。根據實踐經驗,一般配套選擇規模較大、信譽較好公司的仿真器和調試器,雖然價格偏高,但是這些公司技術實力強,售後服務好,調試器和仿真器開發結合緊密。如果在開發調試過程遇到技術障礙,可以通過電話或者電子郵件方式及時獲取技術支持。如選用ARM系列的嵌入式處理器時,可以購買Multi—IcE仿真器.並附加ARM250集成開發調試環境等。
開發隊伍的技術水平和結構比例
嵌入式系統開發中選擇好了嵌入式處理器、RTOs、仿真器和調試器等設備外,還需要考慮開發隊伍的技術水平和結構比例。經驗豐富的開發小組都深有體會:民用產品開發中,產品能夠在預計的時間內進入市場贏得效益,其整個技術範圍內新技術比例至多隻能達到20%,超過這個界限,估算的時間期限可能會出現較大偏差。從高層規劃人員的角度分析:20%以內的新技術,公司可以集中力量,投入足夠多的人力、物力和財力進行突破性研究,正常情況下可以達到滿意效果。如果新技術超出20%這個範圍,恐怕心有餘而力不足。公司運作以市場作為嚮導,是市場賦予它們生命。
公司看重市場,付出的勞動有市場回報才能正常運轉。公司在開發過程中一般都儘量避免風險,而且整個開發過程中始終將風險分析作為重要的參考因素。公司一般都選擇保守的開發模式,基於當前開發人員的技術實力和已經達到的技術儲備,在許多種備選方案的技術論證過程,充分分析成本收益、風險大小、投入資源、開發人員的技術水平等因素,全面考慮,權衡利弊,儘量選用可靠的,風險小的設計方案。在項目開發中,分配開發人員時不僅要確保任務在給定時間期限內完成的成功性,而且也要體現在鍛鍊培養後繼人才方面。任何項目的開發,依據需求分析後,經過概要設計和詳細設計,都會形成模塊化結構,其工作難度也有一定的層次性。這樣,公司在選派項目人員時,需要合理的人員結構安排,現在~般公認的人才結構比例是1(博士或同等學歷)3(碩士或同等學歷):7(學士、大專或同等學歷)。在項目開發中,除了開發人員的技術水平和結構比例外,小組內部的民主化、科學化管理決策也是很重要的環節。

嵌入式系統開發核心技術

處理器技術
處理器技術與實現系統功能的計算引擎結構有關,很多不可編程的數字系統也可以視為處理器,這些處理器的差別在於其面向特定功能的專用化程度,導致其設計指標與其它處理器不同。
(1)通用處理器
這類處理器可用於不同類型的應用,一個重要的特徵就是存儲程序,由於設計者不知道處理器將會運行何種運算,所以無法用數字電路建立程序。另一個特徵就是通用的數據路徑,為了處理各類不同的計算,數據路徑是通用的,其數據路徑一般有大量的寄存器以及一個或多個通用的算術邏輯單元。設計者只需要對處理器的存儲器編程來執行所需的功能,即設計相關的軟件。 在嵌入式系統中使用通用處理器具有設計指標上的一些優勢。提前上市時間和NRE成本較低,因為設計者只需編寫程序,而不需要做任何數字設計,靈活性高,功能的改變通過修改程序進行即可。與自行設計處理器相比,數量少時單位成本較低。
當然,這種方式也有一些設計指標上的缺陷,數量大時的單位成本相對較高,因為數量大時,自行設計的NRE成本分攤下來,可降低單位成本。同時,對於某些應用,性能可能很差。由於包含了非必要的處理器硬件,系統的體積和功 耗可能變大。
(2)單用途處理器
單用途處理器是設計用於執行特定程序的數字電路,也指協處理器、加速器、外設等。如JPEG編碼解碼器執行單一程序,壓縮或解壓視頻信息。嵌入式系統設計者可通過設計特定的數字電路來建立單用途的處理器。設計者也可以採用預先設計好的商品化的單用途處理器。
在嵌入式系統中使用單用途處理器,在指標上有一些優缺點。這些優缺點與通用處理器基本相反,性能可能更好,體積與功率可能較小,數量大時的單位成本可能較低,而設計時間與NRE成本可能較高,靈活性較差,數量小時的單位成本較高,對某些應用性能不如通用處理器。
(3)專用處理器
專用指令集處理器(ASIP)是一個可編程處理器,針對某 一特定類型的應用進行最優化。這類特定應用具有相同的特徵,如嵌入式控制、數字信號處理等。在嵌入式系統中使用ASIP可以保證良好的性能、功率和大小的 情況下,提供更大的靈活性,但這類處理器仍需要昂貴的NRE成本建立處理器本身和編譯器,單片機數字信號處理器是兩類應用廣泛的ASIP,數字信號處理器是一種針對數字信號進行常見運算的微處理器,而單片機是一種針對嵌入式控制應用進行最佳化的微處理器,通常控制應用中的常見外設,如串行通信外設、定時 器、計數器、脈寬調製器及數/模轉換器等都集成到了微處理器芯片上,從而使得產品的體積更小、成本更低。
IC技術
(1)全定製/VLSI
在全定製IC技術中,需要根據特定的嵌入式系統的數字實現來優化各層,設計人員從晶體管的版圖尺寸、位置、連線開始設計以達到芯片面積利用率高、速度快、功耗低的最優化性能。利用掩膜在製造廠生產實際芯片,全定製的IC設計也常稱為大規模集成電路設計,具有很高的NRE成本、很長的製造時間,適用於大量或對性能要求嚴格的應用。
(2)半定製ASIC
半定製ASIC是一種約束型設計方法,包括門陣列設計法和 標準單元設計法。它是在芯片製作好一些具有通用性的單元元件和元件組的半成品硬件,設計者僅需要考慮電路的邏輯功能和各功能模塊之間的合理連接即可。這種設計方法靈活方便、性價比高,縮短了設計週期,提高了成品率。
(3)可編程ASIC
可編程器件中所有各層都已經存在,設計完成後,在實驗室裏即可燒製出設計的芯片,不需要IC廠家參與,開發週期顯著縮短。 可編程ASIC具有較低的NRE成本,單位成本較高,功耗較大,速度較慢。
設計/驗證技術
嵌入式系統的設計技術主要包括硬件設計技術和軟件設計技術兩大類。其中,硬件設計領域的技術主要包括芯片級設計技術和電路板級設計技術兩個方面。
芯片級設計技術的核心是編譯/綜合、庫/IP、測試/驗證。編譯/綜合技術使設計者用抽象的方式描述所需的功能,並自動分析和插入實現細節。庫/IP技術將預先設計好的低抽象級實現用於高級。測試/驗證技術確保每級功能正確,減少各級之間反覆設計的成本。

嵌入式系統開發開發流程

第一步:建立開發環境
操作系統一般使用Redhat Linux,選擇定製安裝或全部安裝,通過網絡下載相應的GCC交叉編譯器進行安裝(比如,arm-linux-gcc、arm-uclibc-gcc),或者安裝產品廠家提供的相關交叉編譯器;
第二步:配置開發主機
配置MINICOM,一般的參數為波特率115200 Baud/s,數據位8位,停止位為1,9,無奇偶校驗,軟件硬件流控設為無。在Windows下的超級終端的配置也是這樣。MINICOM軟件的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。配置網絡主要是配置NFS網絡文件系統,需要關閉防火牆,簡化嵌入式網絡調試環境設置過程。
第三步:建立引導裝載程序BOOTLOADER
從網絡上下載一些公開源代碼的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據具體芯片進行移植修改。有些芯片沒有內置引導裝載程序,比如,三星的ARV17、ARM9系列芯片,這樣就需要編寫開發板上FLASH的燒寫程序,可以在網上下載相應的燒寫程序,也有Linux下的公開源代碼的J-FLASH程序。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行源代碼修改。這是讓系統可以正常運行的第一步。如果用户購買了廠家的仿真器比較容易燒寫FLASH,雖然無法瞭解其中的核心技術,但對於需要迅速開發自己的應用的人來説可以極大提高開發速度。
第四步:下載已經移植好的Linux操作系統
如MCLiunx、ARM-Linux、PPC-Linux等,如果有專門針對所使用的CPU移植好的Linux操作系統那是再好不過,下載後再添加特定硬件的驅動程序,然後進行調試修改,對於帶MMU的CPU可以使用模塊方式調試驅動,而對於MCLiunx這樣的系統只能編譯內核進行調試。
第五步:建立根文件系統
下載使用BUSYBOX軟件進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他的程序。由於默認的啓動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啓動腳本,它的存放位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝文件系統的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用mkcramfs genromfs等工具產生燒寫映像文件。
第六步:建立應用程序的FLASH磁盤分區
一般使用JFFS2或YAFFS文件系統,這需要在內核中提供這些文件系統的驅動,有的系統使用一個線性FLASH(NOR型)512KB~32MB,有的系統使用非線性FLASH(NAND型)8MB~512MB,有的兩個同時使用,需要根據應用規劃FLASH的分區方案。
第七步:開發應用程序
可以放入根文件系統中,也可以放入YAFFS、JFFS2文件系統中,有的應用不使用根文件系統,直接將應用程序和內核設計在一起,這有點類似於μC/OS-II的方式。
第八步:燒寫內核
根文件系統和應用程序,發佈產品。 [2] 
參考資料