隨著現(xiàn)代社會信息化進程的加快,嵌入式系統(tǒng)被廣泛的地應(yīng)用于軍事、家用、工業(yè)、商業(yè)、辦公、醫(yī)療等社會各個方面,表現(xiàn)出很強的投資價值。從國際范圍來看,作為數(shù)字化電子信息產(chǎn)品核心的嵌入式系統(tǒng)目前其硬件和軟件開發(fā)工具市場已經(jīng)突破2000億美元,嵌入式系統(tǒng)帶來的全球工業(yè)年產(chǎn)值更是達到了一萬億美元,隨著全球經(jīng)濟的持續(xù)增長以及信息化的加速發(fā)展,嵌入式系統(tǒng)市場必將進一步增長。
學(xué)習(xí)嵌入式系統(tǒng),首先應(yīng)該明確什么是嵌入式系統(tǒng),否則費力去學(xué),卻不知所學(xué)為何物,豈不惘然?嵌入式系統(tǒng)的定義很多,這也是困擾嵌入式系統(tǒng)學(xué)習(xí)的一個因素。筆者根據(jù)自己開發(fā)和教學(xué)過程中的理解,以及對各種嵌入式系統(tǒng)的應(yīng)用進行總結(jié),提出了嵌入式系統(tǒng)的簡單定義:嵌入式系統(tǒng)是嵌入式計算機系統(tǒng)的簡稱,這個定義突出嵌入式計算機系統(tǒng)和普通計算機系統(tǒng)的共性。下表列出了嵌入式系統(tǒng)的一些典型的應(yīng)用:
娛樂和消費電子(Gameboy Advance,SonyPSP)
網(wǎng)絡(luò)通信產(chǎn)品(Smartphone)
軍用設(shè)備(軍用PDA )
汽車(車載導(dǎo)航,自動駕駛,娛樂系統(tǒng))
智能儀器(虛擬儀器)
安全防護(防火,防盜)
環(huán)境保護(探空氣球)
銀行和商業(yè)消費(ATM)
以火星登陸車為例來分析一下嵌入式系統(tǒng)的定義。火星登陸車雖然聽起來感覺在技術(shù)上有些高不可測,但是本質(zhì)就是嵌入式計算機系統(tǒng)的應(yīng)用,其核心就是一個計算機系統(tǒng),而這個計算機系統(tǒng)的組成同傳統(tǒng)的計算機系統(tǒng)在本質(zhì)上沒有什么差別。兩者的顯著不同之處就在于,用于火星登陸車的計算機系統(tǒng)被安裝到了火星登陸車上。當(dāng)然,一個計算機系統(tǒng)能夠被安裝在火星登陸車上,是需要進行很多特殊設(shè)計的。但是從本質(zhì)上講,嵌入式系統(tǒng)的核心概念還在計算機系統(tǒng)。嵌入式系統(tǒng)學(xué)習(xí)的重點也在計算機系統(tǒng)上。一方面,學(xué)習(xí)者需要牢固掌握計算機系統(tǒng)本身的概念,更重要的是學(xué)習(xí)嵌入系統(tǒng)的開發(fā)過程同傳統(tǒng)計算機系統(tǒng)開發(fā)過程的差別。這里需要指出的是,很多學(xué)習(xí)者本來就沒有從事過完整計算機系統(tǒng)的開發(fā),高校的教學(xué)是以程序設(shè)計為中心的,計算機系統(tǒng)的構(gòu)成,操作系統(tǒng)的原理,編程語言等課程都是為了能夠讓學(xué)生更好的使用計算機系統(tǒng)進行程序設(shè)計,在現(xiàn)有的計算平臺上來設(shè)計實現(xiàn)各種應(yīng)用,學(xué)生一般沒有機會學(xué)習(xí)一個完整的計算機系統(tǒng)是如何構(gòu)建,并親身參與到構(gòu)建的每一個過程。而對于嵌入式系統(tǒng)而言,從事平臺開發(fā)的人就是要親自去開發(fā)出一個完整的計算機系統(tǒng),這個過程包括
1. 需求分析
2 硬件設(shè)計
3 驅(qū)動程序
4 Bootloader & BSP (板級支持包)
5 操作系統(tǒng)的移植
6 應(yīng)用程序的開發(fā)
7 性能檢查
嵌入式系統(tǒng)教學(xué)的目的就是教會學(xué)生如何根據(jù)需求去建立滿足某種特殊行業(yè)需求的嵌入式計算機系統(tǒng)。讓學(xué)生學(xué)會如何構(gòu)件硬件平臺,進行硬件設(shè)計,選擇能夠滿足應(yīng)用要求的最佳的嵌入式操作系統(tǒng),并完成Bootloader,BSP和驅(qū)動程序的編寫,移植,調(diào)試等過程。為了滿足行業(yè)需求,最終要在所建立的系統(tǒng)上編寫調(diào)試相應(yīng)的應(yīng)用程序,并進行性能的測試和檢查。
你是誰,你需要學(xué)習(xí)哪些東西?
如果你的工作只是需要在PC 機上編寫一個圖片瀏覽程序,那么你就沒有必要去了解當(dāng)系統(tǒng)收到一個ARP請求包后應(yīng)該如何回應(yīng)。同樣的道理,嵌入式系統(tǒng)的學(xué)習(xí)也是有很多方面的。就嵌入式系統(tǒng)的設(shè)計和實現(xiàn)而言,基本上需要四種不同的工作:系統(tǒng)設(shè)計工作,硬件設(shè)計工作,驅(qū)動程序和操作系統(tǒng)移植工作和應(yīng)用程序設(shè)計開發(fā)工作。
1.系統(tǒng)設(shè)計工作
在系統(tǒng)的設(shè)計階段,系統(tǒng)分析師將根據(jù)需求確定系統(tǒng)的硬件的基本構(gòu)成,根據(jù)系統(tǒng)的需求選擇使用那種處理器,使用哪種操作系統(tǒng),使用那些軟件開發(fā)工具。系統(tǒng)分析師往往是較為完整的參與過嵌入式系統(tǒng)設(shè)計的全過程,對于系統(tǒng)應(yīng)用的行業(yè)較為了解,對于嵌入式系統(tǒng)本身的開發(fā)流程十分清楚的人。
2.硬件設(shè)計工作
系統(tǒng)硬件設(shè)計人員需要根據(jù)系統(tǒng)分析師的設(shè)計結(jié)果,進行硬件原理圖的設(shè)計。通常需要硬件設(shè)計人員熟悉嵌入式系統(tǒng)的硬件構(gòu)成。硬件設(shè)計人員需要了解常用的嵌入式系統(tǒng)處理器,存儲器(Flash,SDRAM),以太網(wǎng)MAC芯片,音頻/視頻編解碼芯片,電源管理芯片,總線接口電路 (USB,PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無線網(wǎng)絡(luò)通信模塊(Bluetooth,WLAN,GPRS)等硬件電路構(gòu)成元素的基本工作原理,連接使用方法,使用注意事項,基本調(diào)試方法等內(nèi)容。在網(wǎng)絡(luò)上能找到很多公司的評估板的原理圖,對于這些原理圖要仔細研究,摸清處理器同存儲器,網(wǎng)卡,液晶模塊等器件的連接方法和原因。通過對這些電路的研究,能夠較快地了解整個嵌入式系統(tǒng)的構(gòu)成,這些電路同實際產(chǎn)品中的電路雖有一定差別的,特別是對于手持設(shè)備,但這些差別不影響初學(xué)者學(xué)習(xí)嵌入式系統(tǒng)的硬件設(shè)計基本構(gòu)成。
以上這些知識,往往需要較長時間的學(xué)習(xí)和積累,需要親自參與實踐的機會。對于剛剛接觸嵌入式系統(tǒng)硬件開發(fā)的學(xué)生來講,一般不可能全部了解這些知識,但也不會是通通一無所知。筆者結(jié)合自己開發(fā)和教學(xué)的經(jīng)驗認為:首先應(yīng)該選定一款主流且較為簡單的嵌入式系統(tǒng)處理器,比如基于ARM7TDMI 內(nèi)核的AT91M40800,S3C44B0 等嵌入式系統(tǒng)處理器,學(xué)習(xí)32 位RISC處理器的編程模型,指令集。高校教學(xué)中,單片計算機課程一般以8051系列單片為核心講解,由于現(xiàn)代32位處理器的結(jié)構(gòu)和開發(fā)方式同8位單片機有著較大的差別,學(xué)習(xí)者還是需要花一點力氣來研究以下32位處理器的。以ARM處理器為例,學(xué)習(xí)者就需要理解處理器的多種工作模式,備份寄存器,RISC 指令集的特點,MMU 和虛擬地址,中斷處理過程等內(nèi)容。在學(xué)習(xí)指令集的過程中,最好能夠每學(xué)習(xí)幾條指令,就使用這幾條指令在模擬器上實驗以下,觀察處理器執(zhí)行的結(jié)果。這個過程一方面是學(xué)習(xí)者對于指令本身的學(xué)習(xí)能夠取得一個比較好的效果,另外也是對開發(fā)工具本身的一種學(xué)習(xí)。接著,就可以開始學(xué)習(xí)片上資源的使用和配置方法。這時就需要一個方便使用的開發(fā)板,學(xué)習(xí)者能夠通過JTAG仿真器將開發(fā)板同調(diào)試PC機相連,進行程序的下載,調(diào)試。特別是要仔細研究系統(tǒng)的初始化過程和中斷處理的過程。在開發(fā)過程中如果遇到問題,應(yīng)自己分析問題產(chǎn)生的原因,通過分析縮小問題可能產(chǎn)生的范圍,最終找到問題的所在。最重要的就是要保持一種解決問題的信心,面對困難如何處理,往往能夠決定最終系統(tǒng)是否能夠調(diào)試成功。然后,學(xué)習(xí)者可以開始仔細學(xué)習(xí)處理器同存儲器的連接,存儲空間的配置,各種外擴器件,如網(wǎng)卡,AC97聲卡的工作原理和使用方法。嵌入式系統(tǒng)硬件設(shè)計中往往需要使用可編程器件,學(xué)習(xí)者還需要一定的時間來學(xué)習(xí)使用常用的可編程器件(CP L D / F P G A),常用的有Xilinx和Altera公司的產(chǎn)品。進行系統(tǒng)硬件原理圖設(shè)計,就需要使用原理圖設(shè)計的EDA工具,常用的EDA 原理圖設(shè)計工具主要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下來就可以參照評估板的電路圖,根據(jù)系統(tǒng)的設(shè)計要求,開始進行原理圖的繪制了。在原理圖繪制過程中,一定要搞清評估板電路連接的原因,對于一時沒有搞清楚的問題切不可蒙混過關(guān)。例如,有些處理器的地址線是以字節(jié)位單位的,而另一些處理器的地址線則是以兩個字節(jié)為單位的,當(dāng)連接16位的存儲器的時候,切不可想當(dāng)然的把處理器的A 0 直接連接到存儲器的A 0 上面。另外,學(xué)生還應(yīng)具有一定的PCB板圖繪制能力,因為在現(xiàn)階段,很多公司還不能完全把原理圖的設(shè)計工作和PCB 的繪制工作分開,往往要求硬件設(shè)計人員既能進行原理圖設(shè)計又能進行板圖設(shè)計。即使是PCB設(shè)計和原理圖設(shè)計分開的公司,也需要原理圖設(shè)計者能為PCB 的設(shè)計者對于不同的信號提出布板要求。
3.驅(qū)動程序和操作系統(tǒng)移植工作
現(xiàn)代嵌入式系統(tǒng)的開發(fā)同傳統(tǒng)8位單片機系統(tǒng)的開發(fā)相比,一個顯著的區(qū)別就是嵌入式操作系統(tǒng)的廣泛使用。在拿到焊接完畢的電路板,并進行基本的測試后,就要進行驅(qū)動程序和操作系統(tǒng)的移植工作了。首先要進行的Bootloader的編寫和移植工作。Bootloader相當(dāng)于PC系統(tǒng)的BIOS。對于有些嵌入式操作系統(tǒng),如uc/OSII沒有bootloader同樣可以開發(fā)調(diào)試。但是對于WindowsCE和嵌入式linux系統(tǒng)而言Bootloader就是必須的了。本文以Windows CE 為例,做一個簡要的說明。
Windows CE 系統(tǒng)的移植工作主要就是BSP(板級支持包)的開發(fā)過程。BSP將具體的硬件差異同操作系統(tǒng)的核心隔離開來,主要由Bootloaer ,OAL(OEMAbstraction Layer)和設(shè)備驅(qū)動程序三部分組成。WindowsCE系統(tǒng)中Bootloader叫做Eboot。Eboot被寫入系統(tǒng)的引導(dǎo)Flash。系統(tǒng)啟動時運行Eboot,完成通過網(wǎng)卡將調(diào)試PC 機中WindowsCE 操作系統(tǒng)映像下載到目標系統(tǒng)的SDRAM中并開始執(zhí)行的功能。對于一個系統(tǒng)移植人員,首先需要閱讀文檔,了解WindowsCE系統(tǒng)Bootloader和BSP的基本概念和開發(fā)過程。(呵,還要做這工作啊,我還沒想到(初學(xué)^_^))Windows CE的開發(fā)系統(tǒng)Platform Builder提供了詳細的文檔和例程,開發(fā)人員需要仔細的閱讀文檔和例程。搞清楚各個函數(shù)之間的調(diào)用關(guān)系。在開發(fā)過程中的一個重要的步驟就是打通串口,使得目標板能夠通過PC機串口向調(diào)試PC 機發(fā)送數(shù)據(jù)。由于ARM系統(tǒng)的仿真器比較昂貴,而且操作系統(tǒng)的調(diào)試往往不使用JTAG調(diào)試器進行單步調(diào)試。所以能從串口觀察程序的執(zhí)行過程和結(jié)果對于調(diào)試就顯得十分重要了。串口打通之后一個比較棘手的問題就是網(wǎng)卡芯片的調(diào)試。剛剛接觸嵌入式系統(tǒng)開發(fā)的人往往沒有直接在寄存器級上使用網(wǎng)卡芯片的經(jīng)驗,而網(wǎng)卡芯片的說明一般都較為簡短,這就要求開發(fā)者學(xué)習(xí)一些以太網(wǎng)的基礎(chǔ)知識,對以太網(wǎng)的MAC 層有一個基本的認識。另外,各種網(wǎng)絡(luò)調(diào)試(抓包)工具的使用也能大大降低系統(tǒng)調(diào)試的難度。系統(tǒng)的OAL需要根據(jù)具體硬件的不同做出相應(yīng)的修改,這個部分可參照文檔進行,在調(diào)試過程中根據(jù)串口的信息分析出錯的地方。要充分發(fā)揮跨文件字符串搜索工具的功能,在浩如煙海的源文件中找到出錯的位置。當(dāng)然,隨著開發(fā)者對系統(tǒng)文件目錄結(jié)構(gòu)的熟悉和了解,錯誤定位的速度會不斷加快。WindowsCE 的驅(qū)動程序相對而言是比較好寫的。
4.應(yīng)用程序的開發(fā)
嵌入式系統(tǒng)的應(yīng)用程序開發(fā)同在PC 機上開發(fā)應(yīng)用程序的區(qū)別不是很大。對于Windows CE系統(tǒng)而言,Microsoft已經(jīng)提供了較為完善的開發(fā)工具。特別是.NET Compact work的使用,使得基于Windows CE.NETCompactwork的應(yīng)用程序有了跨平臺性。開發(fā)人員可以使用Windows 的C# 語言直接在PC 上進行http://CE.NET應(yīng)用程序的開發(fā)和模擬調(diào)試,也可將目標系統(tǒng)同PC 機相連,進行聯(lián)機調(diào)試。現(xiàn)在有很多系統(tǒng)支持J2ME(JAVA的嵌入式系統(tǒng)版本) ,這使得JAVA 在嵌入式系統(tǒng)應(yīng)用開發(fā)中占有較大的優(yōu)勢。另外,作為專業(yè)的嵌入式系統(tǒng)軟件開發(fā)人員,還需要充分了解面向?qū)ο蠹夹g(shù)和設(shè)計模式等方面的知識,當(dāng)然作為初學(xué)者可以先不深入研究這方面的內(nèi)容。
常用嵌入式系統(tǒng)處理器和操作系統(tǒng)
處理器
常用嵌入式系統(tǒng)處理器主要包括ARM 處理器,Power PC 處理器,基于MIPS 內(nèi)核的嵌入式處理器,軟核處理器(如Altera 的Nios和Xilinx的MicroBlaze等)和DSP(數(shù)字信號處理器)等。
ARM 處理器的主要特點是具有較高的性能功耗比。ARM處理器被廣泛的應(yīng)用在手機,PDA等領(lǐng)域,其中較為著名的有Intel 公司生產(chǎn)的基于ARM 內(nèi)核的XScale系列處理器。由于所有公司生產(chǎn)的基于ARM內(nèi)核的處理器具有相同的編程模型,在手持和電池供電的系統(tǒng)中,基于ARM的嵌入式系統(tǒng)處理器往往被首先選用。PowerPC(簡稱PPC)處理器具有較強的運算性能和數(shù)據(jù)吞吐能力,在網(wǎng)絡(luò)和數(shù)據(jù)通信領(lǐng)域基于PPC的嵌入式系統(tǒng)處理器有著廣泛的應(yīng)用。其中Motorola公司生產(chǎn)的MPC860/MPC8260被大量地應(yīng)用在嵌入式網(wǎng)絡(luò)產(chǎn)品中。MIPS 處理器的特點表現(xiàn)在十分強大的處理能力上。作為高性能處理器,MIPS處理器適用于網(wǎng)絡(luò)、企業(yè)及高級消費類電子應(yīng)用,特別是在機頂盒系統(tǒng)中,MIPS處理器具有較高的市場占有率。隨著可編程器件的規(guī)模不斷擴大,使得人們能夠根據(jù)需要定制處理器,并方便的將針對某種特殊應(yīng)用定制的處理器方便的在可編程器件內(nèi)部實現(xiàn)。除了處理器外,計算機系統(tǒng)還需要許多其他構(gòu)成部分,比如在多通道媒體數(shù)據(jù)處理系統(tǒng)中,經(jīng)常需要使用可編程器件來實現(xiàn)高速的數(shù)據(jù)處理功能,使用軟核DSP來實現(xiàn)復(fù)雜的數(shù)字信號處理算法,同時還需要處理器進行事務(wù)處理,軟核處理器將可編程器件,DSP同處理器結(jié)合在一起,為系統(tǒng)級設(shè)計提供了極大的靈活性。DSP(數(shù)字信號處理器)有別于通用處理器,集中表現(xiàn)在其強大的數(shù)字信號處理能力上。在DSP 內(nèi)部提供了硬件乘累加器,處理器在設(shè)計上對于特殊的尋址方式做了優(yōu)化,一些DSP 還支持零耗循環(huán)(Zero OverheadLoop)。為了方便嵌入式系統(tǒng)設(shè)計,主流DSP 一般也都提供了豐富的外設(shè)。特別值得一提的是ADI 公司的Blackfin 系列DSP和TI 公司的DM64X系列DSP,兩種處理器都提供了豐富的片上外設(shè),非常適用嵌入式系統(tǒng)應(yīng)用。
操作系統(tǒng)
http://WindowCE.NET/5.0
作為Microsoft的產(chǎn)品,WindowCE.NE/5.0提供了功能完備的平臺開發(fā)工具Platform Builder和應(yīng)用開發(fā)工具Embedded Visual C++/Visual Studio 2003。WindowsCE由于擁有廣大使用者所熟悉的windows界面,系統(tǒng)提供了眾多驅(qū)動程序,并且有完備的文檔支持。對于應(yīng)用開發(fā)而言,熟悉Windows系統(tǒng)開發(fā)的程序員很容易轉(zhuǎn)到WindowsCE 應(yīng)用程序的開發(fā)。Windows CE將會是一個非常有前途的嵌入式操作系統(tǒng)。
VxWorks
VxWorks是由Windriver(風(fēng)河)公司出品的嵌入式實時操作系統(tǒng),大名鼎鼎的火星登陸車就是使用了VxWorks。Windriver為VxWorks提供了集成開發(fā)環(huán)境tornado。
υC/OSII
υC/OS是由Jean Labrosse設(shè)計編寫的開放源代碼的嵌入式實時操作系統(tǒng),筆者最早接觸的嵌入式操作系統(tǒng)就是它。閱讀并深入理解υC/OS的源代碼對于理解實時系統(tǒng)是大有裨益的。
ARM Linux
ARM linux是由Russell King和其他開發(fā)者開發(fā)移植的用于ARM 處理器的linux操作系統(tǒng)。ARM Linux系統(tǒng)在GNU GPL下發(fā)布。
υCLinux
υClinux 是適用于沒有MMU 的嵌入式處理的LinuxOS 版本。υ Clinux 同樣在GNU GPL發(fā)布。
嵌入式系統(tǒng)開發(fā)過程中的常見問題和解決方法
Bootloader如何寫入Flash ?
初學(xué)者一般都會遇到如何將程序?qū)懭胩幚砥鞯膯栴}。對于不同的處理器,可以采用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫。對于具有JTAG調(diào)試工具軟件的處理器,可以使用如下思路:編寫一段程序,這段程序能將位于SDRAM/SRAM 固定地址中的數(shù)據(jù)寫入Flash中。燒寫時,首先,將這段軟件下載到SDRAM 中,然后通過調(diào)試軟件將要寫入Flash的數(shù)據(jù)下載到SDRAM/SRAM的某個固定地址開始的緩沖區(qū),然后通過調(diào)試器開始執(zhí)行程序,將數(shù)據(jù)寫入Flash。除此以外,網(wǎng)絡(luò)上還提供了很多專用的寫Flash的工具,開發(fā)者可以根據(jù)自己的需要選用。(現(xiàn)在明白了我在學(xué)的那個BF533為什么先下個flashProgramer.dxe先了)
什么是arm-elf-gcc?
arm-elf-gcc是一個交叉C語言編譯器。我們在PC平臺下編譯程序,編譯器運行的處理器同生成的代碼將要運行的處理器相同。但是,在PC
機上編譯ARM程序時,編譯器運行的處理器同生成的代碼運行的處理器不同,這種編譯器叫做交叉編譯器。其中的elf是指編譯器生成的目標文件格式。(其實我們平時用的單片機編譯器如GCC—AVR等已是交叉編譯器了,我到現(xiàn)在才弄清楚什么是交叉編譯器)
走了哪條編譯路徑?
系統(tǒng)程序和驅(qū)動程序往往包含很多的編譯選項,很多選項都是在編譯時通過命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
這樣在編譯的時候就知道,編譯的是哪一條路經(jīng)了。對于支持#pragma message( “I am here”)的編譯器也可使用#pragma message預(yù)編譯指令。
我怎么知道那段代碼在那個文件中?
系統(tǒng)編程中經(jīng)常需要使用在多個文件中搜索字符串,在windows平臺下可以使用平臺提供的多文件字符串搜索工具。在linux平臺下,可以使用grep來搜索字符串。Grep的搜索功能十分強大,支持正則表達式搜索,熟練使用grep對于閱讀系統(tǒng)和驅(qū)動程序代碼是很有幫助的。
系統(tǒng)是從那個文件開始運行的?
對于Windows CE系統(tǒng),一般從WINCE420\PLATFORM\YourPlatform\KERNEL\HAL目錄的某個匯編文件中。對于Linux系統(tǒng)版本不同會存在一定差異,以arm處理器為例,一般會在linux2.4.x\arch\arm\kernel的head-armv.S中。
程序執(zhí)行到了那里?
可以在程序中插入如下代碼來實現(xiàn)
printf( “I am here %s, %d\n”,__FILE__,__LINE__);
代碼將打出printf語句所在的文件名和行號。
嵌入式開發(fā)與桌面開發(fā)既有不同,又有非常大的聯(lián)系,而且十分注重實際操作能力。搞桌面開發(fā)的人在一開始接觸嵌入式的時候,通常轉(zhuǎn)換不過來,這主要體現(xiàn)在定位上。如文中所說,你是誰,你要做什么?我對硬件的了解僅限于編程領(lǐng)域,PCB設(shè)計一竅不通,但并不能說你不懂硬件就不能從事嵌入式開發(fā)。一個系統(tǒng)的開發(fā)設(shè)計方方面面,在自己感興趣和熟悉的領(lǐng)域做出自己的貢獻才是最主要的。
1。硬件設(shè)計: 需要有硬件設(shè)計的經(jīng)驗,對各種嵌入式器件有很好的了解。
2。系統(tǒng)移植:需要匯編經(jīng)驗,操作系統(tǒng)原理以及底層驅(qū)動的了解
3。應(yīng)用程序:需要桌面編程經(jīng)驗
評論
查看更多