嵌入式開發

在嵌入式操作系統下進行開發

嵌入式開發就是指在嵌入式操作系統下進行開發,包括在系統化設計指導下的硬體和軟體以及綜合研發。除暫且分離硬體的EDA研發以外,側重的就是在一定硬體條件下的系統化設計和軟體研發。一般常用的系統有WinCE,ucos,vxworks,linux,android等。另外,用c,c++或彙編開發;用高級處理器,arm7,arm9,arm11,powerpc,mips,mipsel等,或加上操作系統也屬於嵌入式的開發。

使用技巧


嵌入式系統(Embedded System)是指以應用為中心、以計算機技術為基礎,軟體硬體可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。舉例來說,大到油田的集散控制系統和工廠流水線,小到家用VCD機或手機,甚至組成普通PC終端設備的鍵盤、滑鼠、硬碟、Modem等均是由嵌入式處理器控制的。

開發外協


嵌入式開發在FPGA\ARM\DSP\MCU等各個方面都有了細分專業團隊進行外協設計。提供從原型樣機、頂層軟體架構到源碼的所有設計。

應用領域


嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、遊戲機、智能玩具、交換機、路由器、數控設備或儀錶、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。

高峰論壇


嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。
一類是學電子工程、通信工程等偏硬體專業出身的人,他們主要是搞硬體設計,有時要開發一些與硬體關係最密切的最底層軟體,如BootLoader、Board Support Package(像PC的BIOS一樣,往下驅動硬體,往上支持操作系統),最初級的硬體驅動程序等。他們的優勢是對硬體原理非常清楚,他們更擅長定義各種硬體介面,但對複雜軟體系統往往力不從心(例如嵌入式操作系統原理和複雜應用軟體等)。
另一類是學軟體、計算機專業出身的人,主要從事嵌入式操作系統和應用軟體的開發。學軟體的人對硬體原理和介面通常難以有較好的掌握,最多也只能寫部分BSP和硬體驅動程序。嵌入式硬體設計完后,各種功能就全靠軟體來實現了,嵌入式設備的增值很大程度上取決於嵌入式軟體,稍複雜的硬體都交給台灣或國外公司設計,國內的硬體設計力量很弱,很多嵌入式公司自己只負責開發軟體,因為公司都知道,嵌入式產品的差異很大程度在軟體上,在軟體方面是最有“花頭”可做的),所以搞軟體的人完全不用擔心自己在嵌入式市場上的用武之地,越是智能設備越是複雜系統,軟體越起關鍵作用。
而隨著發展到2013年大部分人都能包容第一類和第二類。並且第一類和第二類其實是屬於一塊的。大部分時間是連接在一起的。這類開發人員具有很強的專業綜合知識,能很好地將軟硬體結合,一般測控類專業居多。

前景


在中國,嵌入式軟體發展過程中,政府已充分認識到它的重要作用,並在政策、資金等方面給予了大力支持。 2004 年國家發改委、科技部、商務部聯合頒布的《當前優先發展的高技術產業化重點領域指南》,把嵌入式軟體產業作為國家發展的一個重要領域。
最近幾年來
中國的嵌入式軟體發展速度一直高於中國軟體產業的發展速度和全球嵌入式軟體的發展速度,在中國軟體產業和全球嵌入式軟體產業中所佔的比重越來越大。目前,中國嵌入式軟體產業在整個軟體產業中的比重已經超過了三分之一。
從2006年至2010年
中國嵌入式軟體產業規模仍將保持快速增長態勢,年均複合增長率為25.8%,到2010年將達到3339.6億元的規模。
中國嵌入式軟體產業的發展面臨著良好的發展環境與機遇,這包括政府的重視與扶植、信息產業與傳統產業的融合機遇、壟斷局面尚未形成、中國製造的良好基礎、自由軟體運動的興起等等。同時,不可否認的是長期以來,由於人才、宣傳、資金等諸多問題以及嵌入式本身所特有的軟硬結合特性,使嵌入式軟體人才一直處於供不應求的狀態。

定義


嵌入式開發是指利用分立元件或集成器件進行電路設計、結構設計,再進行軟體編程(通常是高級語言),實驗,經過多輪修改設計、製作,最終完成整個系統的開發。這種嵌入式開發,適用於未來產品比較單一,產量比較大,產品開發周期比較長,成本控制比較嚴格的系統。
嵌入式技術不是單純的軟體技術,也不是單純的硬體技術,是一門如何在一個特定的硬體環境上開發與構建特定的可編程軟體系統的綜合技術。嵌入式技術是在嵌入式系統的發展中應運而生的,它是依附於嵌入式系統,並推動嵌入式系統不斷向前發展的核心動力。嵌入式是一種專用的計算機系統,作為裝置或設備的一部分。通常,嵌入式系統是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數字介面的設備,如手錶、微波爐、錄像機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含操作系統,但大多數嵌入式系統都是是由單個程序實現整個控制邏輯。嵌入式技術近年來得到了飛速的發展,但是嵌入式產業涉及的領域非常廣泛,彼此之間的特點也相當明顯。例如,很多行業:手機、PDA、車載導航、工控、軍工、多媒體終端、網關、數字電視等。

主流平台


主流的嵌入式平台有三種:ARM平台、DSP平台和FPGA平台。
一、ARM
ARM微處理器是由ARM公司提供IP(Intellectual Property,知識產權)授權,交付多個晶元設計廠商整合生產的。在2007年,意法半導體(ST)公司成為第一個引入ARM Cortex-M授權的半導體廠商,開啟了高性能、低成本、低功耗的ARM嵌入式晶元新時代,其生產的STM32系列微處理器是最流行的Cortex-M微處理器。ARM嵌入式系統廣泛應用於自動檢測與控制、智能儀器儀錶、機電一體化設備、汽車電子及日常消費電子產品中,其優越的性能和完善的開發環境得到廣大電子工程師的青睞。
二、DSP平台
嵌入式DSP處理器(Embedded Digital Signal Processor,EDSP),是專門用於信號處理方面的處理器,其在系統結構和指令演演算法方面進行了特殊設計,晶元內部採用程序和數據分開存儲及傳輸的哈佛結構,具有專門硬體乘法器,採用流水線操作,提供特殊的DSP指令,可用來快速地實現各種數字信號處理演演算法,具有很高的編譯效率和指令的執行速度,在數字濾波、FFT、譜分析等各種儀器上獲得了大規模的應用。
三、FPGA平台
隨著平台級FPGA產品的出現和EDA設計工具軟體的不斷發展,利用現有的FPGA和EDA工具,人們也可以很方便地在FPGA中嵌入RISC(Reduced Instruction Set Computer,精簡指令集)處理器內核、DSP演演算法、存儲器、專用ASIC模塊、其它數字IP Core以及用戶定製邏輯等,構建成一個可編程的片上系統(SOPC),把原來需要在PCB上採用處理器、DSP、若干ASIC晶元才能實現的功能全都集成到了單片FPGA上。
FPGA內部嵌入了豐富的乘法器(DSP)資源、高速收發器(GTP/GTX)資源、乙太網MAC資源、嵌入式處理器(Power PC)資源、時鐘及鎖相環資源、存儲器(BRAM)資源等,甚至在Xilinx公司最新推出的Zynq-7000系列晶元之中嵌入了ARM資源,將傳統的FPGA演變成了ARM+FPGA的擴展開發平台。這些嵌入的硬體資源極大地增強了傳統FPGA的功能,提升了FPGA的工作效率和靈活性,使得一塊FPGA平台就可適用於多種產品,進行各種擴展。開發者只需要掌握Verilog HDL等硬體描述語言和嵌入式系統開發的相關知識,就可對整個系統進行編程和控制。

硬體環境


(1)嵌入式處理器:MPU、DSP。
(2)存儲器系統:Flash+RAM+MEM card+mini HD。
嵌入式系統有別於一般的通用計算機系統,它不具備像硬碟那樣大容量的存儲介質,而用靜態易失型存儲器(RAM、SRAM)、動態存儲器(DRAM)和非易失型存儲器(ROM、EPROM、EEPROM、FLASH)作為存儲介質,其中FLASH憑藉其可擦寫次數多、存儲速度快、存儲容量大、價格便宜等優點,在嵌入式領域內得到了廣泛應用。
(3)輸入設備:鍵盤,視/音頻輸入,A/D。
(4)輸出設備:顯示(LED/LCD/OLED)裝置,視/音頻輸出,A/D。
(5)通訊介面:Ehternet(802.3),WIFI(802.11)。
(6)匯流排介面:RS232/RS485,USB,1394(Firewire)。
(7)電源管理:待機、休眠、功耗管理等。
嵌入式開發的硬體平台選擇主要是嵌入式處理器的選擇。在具體應用中處理器的選擇決定了其市場競爭力。在一個系統中使用什麼樣的嵌入式處理器主要取決於應用領域、用戶的需求、成本、開發的難易程度等因素。在開發過程中,選擇最適用的硬體平台是一項很複雜的工作,包括要考慮其他工程的影響以及缺乏完整或準確的信息等。

開發結構


標準嵌入式開發架構有兩大體系:CISC(Complex Instruction Set Computer,複雜指令集計算機)和RISC(Reduced Instruction Set Computer,精簡指令集計算機)。
早期的CPU全部是CISC架構,它的設計目的主要用最少的機器語言指令來完成所需的計算任務。這種架構會增加CPU結構的複雜性和對CPU工藝的要求,但對於編譯器的開發十分有利。只有Intel及其兼容CPU還在使用CISC架構。RISC架構要求軟體來指定各個操作步驟,可以降低CPU的複雜性以及允許在同樣的工藝水平下生產功能更強大的CPU,但對於編譯器的設計有更高的要求。佔主要地位的是RISC處理器。
RISC體系的陣營非常廣泛,從ARM、MIPS到PowerPC、ARC、Tensilica等,都是屬於RISC處理器範疇。不過這些處理器雖然同樣是屬於RISC體系,但是在指令設計與處理單元的結構上都各有不同,因此彼此完全不能兼容,在特定平台上所開發的軟體無法直接為另一硬體平台所用,而必須重新經過編譯。CISC和RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一個明顯的例子,它們的內核都是基於RISC體系結構的,它們接受CISC指令后將其分類成RISC指令以便在同一時間內能夠執行多餘指令。

開發流程


當前,嵌入式開發已經逐步規範化,在遵循一般工程開發流程的基礎上,嵌入式開發有其自身的一些特點。主要包括系統需求分析(要求有嚴格規範的技術要求)、體系結構設計、軟硬體及機械系統設計、系統集成、系統測試,最終得到產品。
(1)系統需求分析。確定設計任務和設計目標,並提煉出設計規格說明書,作為正式設計指導和驗收的標準。系統的需求一般分功能性需求和非功能性需求兩方面。功能性需求是系統的基本功能,如輸入輸出信號、操作方式等;非功能性需求包括系統性能、成本、功耗、體積、重量等因素。
(2)體系結構設計。描述系統如何實現所述的功能和非功能性需求,包括對硬體、軟體和執行裝置的功能劃分,以及系統的軟體、硬體選型等。一個好的體系結構是設計成功與否的關鍵。
(3)硬體/軟體協同設計。基於體系結構,對系統的軟體、硬體進行詳細設計。為了縮短產品開發周期,設計往往是并行的。嵌入式系統設計的工作大部分都集中在軟體設計上,面向對象技術、軟體組件技術、模塊化設計是現代軟體工程經常採用的方法。
(4)系統集成。把系統的軟體、硬體和執行裝置集成在一起,進行調試,發現並改進單元設計過程中的錯誤。
(5)系統測試。對設計好的系統進行測試,看其是否滿足規格說明書中給定的功能要求。
嵌入式系統開發模式最大特點是軟體、硬體綜合開發。這是因為嵌入式產品是軟硬體的結合體,軟體針對硬體開發、固化、不可修改。

主要特徵


嵌入式系統國內普遍認同的定義是:以計算機技術為基礎,以應用為中心,軟體、硬體可剪裁,適合應用系統對功能可靠性、成本、體積、功耗嚴格要求的專業計算機系統。在構成上,嵌入式系統以微處理器及軟體為核心部件,兩者缺一不可;在特徵上,嵌入式系統具有方便、靈活地嵌入到其他應用系統的特徵,即具有很強的嵌入性。
按嵌入式微處理器類型劃分,嵌入式系統可分為以單片機為核心的嵌入式單片機系統;以工業計算機為核心的嵌入式計算機系統;以DSP為核心組成的嵌入式數字信號處理器系統;以FPGA為核心的嵌入式SOPC(System On a Programmable Chip,可編程片上系統)系統等。
嵌入式系統在含義上與傳統的單片機系統和計算機系統有很多重疊部分。為了方便區分,在實際應用中,嵌入式系統還應該具備下述三個特徵:
(1)嵌入式系統的微處理器通常是由32位及以上的RISC(Reduced Instruction Set Computer,精簡指令集計算機處理器)組成,例如ARM、MIPS等。
(2)嵌入式系統的軟體系統通常是以嵌入式操作系統為核心,外加用戶應用程序。
(3)嵌入式系統在特徵上具有明顯的的嵌入。

關鍵技術


1.開發過程中的相關技術
在嵌入式系統開發過程中,主要包括宿主機與目標機兩個部分的開發,宿主機能夠對嵌入式系統中的代碼編譯、定址及鏈接進行執行,而目標機則是嵌入式系統中的硬體平台。在對嵌入式系統進行開發時,需要將應用程序轉換成相應的二進位代碼,這些二進位代碼能夠在目標機中運行。在上述開發過程中,主要可分為三個步驟,分別是編譯過程;鏈接過程與定址過程,其中,嵌入式系統中的交叉編譯器能夠進行編譯,交叉編譯器屬於一種計算機平台中的代碼生成編譯器,較為常見的交叉編譯器是GNU C/C++(gcc),它會將所有編譯完成的目標文件均和一個目標文件進行鏈接,這便是鏈接過程。而定址過程則會在目標文件的各個偏移位置對相應的物理存儲器地址進行指定,在定址過程中所生成的文件便是二進位文件。在嵌入式系統調試過程中,主要是利用交叉調試器來進行,其調試方式通常採用宿主機-目標機形式形式主機與目標機之間的連接是通過乙太網或串列口線來實現的,在交叉調試任務中,主要包括任務級調試、彙編級調試與源碼級調試,在調試過程中需要將宿主機中存儲的系統內核與應用程序分別下載到目標機當中的RAM或ROM當中。當目標機運行后,會對宿主機中的調試器控制命令進行接收,同時配合調試器來對應用程序進行下載、運行與調試,然後將調試信息發送到宿主機當中。
2.軟體移植技術
在嵌入式系統開發中,軟體移植技術無疑是其中的一項關鍵技術,其是以移植協議來完成軟體功能移植的,在移植協議中主要包括三個部分,分別是位元組順序、位元組對齊與位段空間分配。在位元組順序中,現有的位元組順序主要包括小段位元組與大段位元組兩種方式,小段位元組順序是依據存儲地址中的數據排列順序來實現的,也就是低地址用於存儲低位元組數據,高地址則用於存儲高位元組數據。而大段位元組則恰好與小段位元組的排序順序是對調的。在位元組對齊方面,現有的位元組對齊方式非常多,其主要是以GCC中的MakeFile命令來編譯位元組,然後對這些位元組進行對齊,不過這種對齊方式會存在一些缺陷,因此需要在收數據包位置與發數據位置中分別加入相應的拆包函數與組包函數,以此提高嵌入式系統中軟體的互通性與移植性。位段空間分配也是軟體移植技術中的重要因素,通常在對位段進行分配時,其順序應從左至右進行,也有一部分系統是從右向左進行的。通過位段排序來確保嵌入式系統對數據進行準確保存,並利用編程方法來編譯位段排序,這樣在位段排序過程中只需要將對應的程序進行直接調用即可。

考慮因素


嵌入式系統是以實際應用為主要考慮對象的專用計算機系統,嵌入式的特點就是軟硬體可配置、功能可靠、成本低、體積小、功耗低、實時性強。因此,嵌入式系統受功能和具體應用環境的約束,其開發流程就不同於一般的通用計算機系統。在嵌入式系統設計開發時必須考慮以下因素:
·功能可靠實用,便於升級;
·實時併發處理,及時響應;
·體積符合要求,結構緊湊;
·介面符合規範,易於操作;
·配置精簡穩定,維護便利;
·功耗嚴格管理,成本低廉。