電子工程網(wǎng)

標題: 嵌入式學(xué)習指南--給新手 [打印本頁(yè)]

作者: edurachiel    時(shí)間: 2015-6-9 10:54
標題: 嵌入式學(xué)習指南--給新手
近些年來(lái),嵌入式系統的發(fā)展在國內可謂如火如荼,很多公司都急需嵌入式系統方面的開(kāi)發(fā)人員。然而,在高校中,嵌入式系統的教學(xué)卻較為滯后,很多高年級的本科生和剛入學(xué)的研究生都苦于不知從何學(xué)起。在本文中,筆者將根據自己的嵌入式系統開(kāi)發(fā)和教學(xué)經(jīng)驗,簡(jiǎn)要介紹嵌入式系統的學(xué)習方法,力求能幫助初學(xué)者找到一條入門(mén)之路。
什么是嵌入式系統?                     
        學(xué)習嵌入式系統,首先應該明確什么是嵌入式系統,否則費力去學(xué),卻不知所學(xué)為何物,豈不惘然?嵌入式系統的定義很多,這也是困擾嵌入式系統學(xué)習的一個(gè)因素。筆者根據自己開(kāi)發(fā)和教學(xué)過(guò)程中的理解,以及對各種嵌入式系統的應用進(jìn)行總結,提出了嵌入式系統的簡(jiǎn)單定義:嵌入式系統是嵌入式計算機系統的簡(jiǎn)稱(chēng),這個(gè)定義突出嵌入式計算機系統和普通計算機系統的共性。下表列出了嵌入式系統的一些典型的應用:
                  智能機器人(S D R 4,火星登陸車(chē))
                  娛樂(lè )和消費電子(Gameboy Advance,Sony PSP)
                  網(wǎng)絡(luò )通信產(chǎn)品(Smartphone)
                  軍用設備(軍用PDA )
                  汽車(chē)(車(chē)載導航,自動(dòng)駕駛,娛樂(lè )系統)
                  智能儀器(虛擬儀器)
                  安全防護(防火,防盜)
                  環(huán)境保護(探空氣球)
                  銀行和商業(yè)消費(ATM)
        以火星登陸車(chē)為例來(lái)分析一下嵌入式系統的定義;鹦堑顷戃(chē)雖然聽(tīng)起來(lái)感覺(jué)在技術(shù)上有些高不可測,但是本質(zhì)就是嵌入式計算機系統的應用,其核心就是一個(gè)計算機系統,而這個(gè)計算機系統的組成同傳統的計算機系統在本質(zhì)上沒(méi)有什么差別。兩者的顯著(zhù)不同之處就在于,用于火星登陸車(chē)的計算機系統被安裝到了火星登陸車(chē)上。當然,一個(gè)計算機系統能夠被安裝在火星登陸車(chē)上,是需要進(jìn)行很多特殊設計的。但是從本質(zhì)上講,嵌入式系統的核心概念還在計算機系統。嵌入式系統學(xué)習的重點(diǎn)也在計算機系統上。一方面,學(xué)習者需要牢固掌握計算機系統本身的概念,更重要的是學(xué)習嵌入系統的開(kāi)發(fā)過(guò)程同傳統計算機系統開(kāi)發(fā)過(guò)程的差別。這里需要指出的是,很多學(xué)習者本來(lái)就沒(méi)有從事過(guò)完整計算機系統的開(kāi)發(fā),高校的教學(xué)是以程序設計為中心的,計算機系統的構成,操作系統的原理,編程語(yǔ)言等課程都是為了能夠讓學(xué)生更好的使用計算機系統進(jìn)行程序設計,在現有的計算平臺上來(lái)設計實(shí)現各種應用,學(xué)生一般沒(méi)有機會(huì )學(xué)習一個(gè)完整的計算機系統是如何構建,并親身參與到構建的每一個(gè)過(guò)程。而對于嵌入式系統而言,從事平臺開(kāi)發(fā)的人就是要親自去開(kāi)發(fā)出一個(gè)完整的計算機系統,這個(gè)過(guò)程包括
                  l 需求分析
                  2 硬件設計
                  3 驅動(dòng)程序
                  4 Bootloader & BSP (板級支持包)
                  5 操作系統的移植
                  6 應用程序的開(kāi)發(fā)
                  7 性能檢查
        嵌入式系統教學(xué)的目的就是教會(huì )學(xué)生如何根據需求去建立滿(mǎn)足某種特殊行業(yè)需求的嵌入式計算機系統。讓學(xué)生學(xué)會(huì )如何構件硬件平臺,進(jìn)行硬件設計,選擇能夠滿(mǎn)足應用要求的最佳的嵌入式操作系統,并完成Bootloader,BSP和驅動(dòng)程序的編寫(xiě),移植,調試等過(guò)程。為了滿(mǎn)足行業(yè)需求,最終要在所建立的系統上編寫(xiě)調試相應的應用程序,并進(jìn)行性能的測試和檢查。
嵌入式技術(shù)提升找徐工Q2269819323
你是誰(shuí),你需要學(xué)習哪些東西?
         如果你的工作只是需要在PC 機上編寫(xiě)一個(gè)圖片瀏覽程序,那么你就沒(méi)有必要去了解當系統收到一個(gè)ARP請求包后應該如何回應。同樣的道理,嵌入式系統的學(xué)習也是有很多方面的。就嵌入式系統的設計和實(shí)現而言,基本上需要四種不同的工作:系統設計工作,硬件設計工作,驅動(dòng)程序和操作系統移植工作和應用程序設計開(kāi)發(fā)工作。
        1.系統設計工作                     
        在系統的設計階段,系統分析師將根據需求確定系統的硬件的基本構成,根據系統的需求選擇使用那種處理器,使用哪種操作系統,使用那些軟件開(kāi)發(fā)工具。系統分析師往往是較為完整的參與過(guò)嵌入式系統設計的全過(guò)程,對于系統應用的行業(yè)較為了解,對于嵌入式系統本身的開(kāi)發(fā)流程十分清楚的人。
        2.硬件設計工作
        系統硬件設計人員需要根據系統分析師的設計結果,進(jìn)行硬件原理圖的設計。通常需要硬件設計人員熟悉嵌入式系統的硬件構成。硬件設計人員需要了解常用的嵌入式系統處理器,存儲器(Flash,SDRAM),以太網(wǎng)MAC芯片,音頻/視頻編解碼芯片,電源管理芯片,總線(xiàn)接口電路 (USB,PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無(wú)線(xiàn)網(wǎng)絡(luò )通信模塊(Bluetooth,WLAN,GPRS)等硬件電路構成元素的基本工作原理,連接使用方法,使用注意事項,基本調試方法等內容。在網(wǎng)絡(luò )上能找到很多公司的評估板的原理圖,對于這些原理圖要仔細研究,摸清處理器同存儲器,網(wǎng)卡,液晶模塊等器件的連接方法和原因。通過(guò)對這些電路的研究,能夠較快地了解整個(gè)嵌入式系統的構成,這些電路同實(shí)際產(chǎn)品中的電路雖有一定差別的,特別是對于手持設備,但這些差別不影響初學(xué)者學(xué)習嵌入式系統的硬件設計基本構成。                     
       以上這些知識,往往需要較長(cháng)時(shí)間的學(xué)習和積累,需要親自參與實(shí)踐的機會(huì )。對于剛剛接觸嵌入式系統硬件開(kāi)發(fā)的學(xué)生來(lái)講,一般不可能全部了解這些知識,但也不會(huì )是通通一無(wú)所知。筆者結合自己開(kāi)發(fā)和教學(xué)的經(jīng)驗認為:首先應該選定一款主流且較為簡(jiǎn)單的嵌入式系統處理器,比如基于A(yíng)RM7TDMI 內核的AT91M40800,S3C44B0 等嵌入式系統處理器,學(xué)習32 位RISC處理器的編程模型,指令集。高校教學(xué)中,單片計算機課程一般以8051系列單片為核心講解,由于現代32位處理器的結構和開(kāi)發(fā)方式同8位單片機有著(zhù)較大的差別,學(xué)習者還是需要花一點(diǎn)力氣來(lái)研究以下32位處理器的。以ARM處理器為例,學(xué)習者就需要理解處理器的多種工作模式,備份寄存器,RISC 指令集的特點(diǎn),MMU 和虛擬地址,中斷處理過(guò)程等內容。在學(xué)習指令集的過(guò)程中,最好能夠每學(xué)習幾條指令,就使用這幾條指令在模擬器上實(shí)驗以下,觀(guān)察處理器執行的結果。這個(gè)過(guò)程一方面是學(xué)習者對于指令本身的學(xué)習能夠取得一個(gè)比較好的效果,另外也是對開(kāi)發(fā)工具本身的一種學(xué)習。接著(zhù),就可以開(kāi)始學(xué)習片上資源的使用和配置方法。這時(shí)就需要一個(gè)方便使用的開(kāi)發(fā)板,學(xué)習者能夠通過(guò)JTAG仿真器將開(kāi)發(fā)板同調試PC機相連,進(jìn)行程序的下載,調試。特別是要仔細研究系統的初始化過(guò)程和中斷處理的過(guò)程。在開(kāi)發(fā)過(guò)程中如果遇到問(wèn)題,應自己分析問(wèn)題產(chǎn)生的原因,通過(guò)分析縮小問(wèn)題可能產(chǎn)生的范圍,最終找到問(wèn)題的所在。最重要的就是要保持一種解決問(wèn)題的信心,面對困難如何處理,往往能夠決定最終系統是否能夠調試成功。然后,學(xué)習者可以開(kāi)始仔細學(xué)習處理器同存儲器的連接,存儲空間的配置,各種外擴器件,如網(wǎng)卡,AC97聲卡的工作原理和使用方法。嵌入式系統硬件設計中往往需要使用可編程器件,學(xué)習者還需要一定的時(shí)間來(lái)學(xué)習使用常用的可編程器件(CP L D / F P G A),常用的有Xilinx和Altera公司的產(chǎn)品。進(jìn)行系統硬件原理圖設計,就需要使用原理圖設計的EDA工具,常用的EDA 原理圖設計工具主要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下來(lái)就可以參照評估板的電路圖,根據系統的設計要求,開(kāi)始進(jìn)行原理圖的繪制了。在原理圖繪制過(guò)程中,一定要搞清評估板電路連接的原因,對于一時(shí)沒(méi)有搞清楚的問(wèn)題切不可蒙混過(guò)關(guān)。例如,有些處理器的地址線(xiàn)是以字節位單位的,而另一些處理器的地址線(xiàn)則是以?xún)蓚(gè)字節為單位的,當連接16位的存儲器的時(shí)候,切不可想當然的把處理器的A 0 直接連接到存儲器的A 0 上面。另外,學(xué)生還應具有一定的PCB板圖繪制能力,因為在現階段,很多公司還不能完全把原理圖的設計工作和PCB 的繪制工作分開(kāi),往往要求硬件設計人員既能進(jìn)行原理圖設計又能進(jìn)行板圖設計。即使是PCB設計和原理圖設計分開(kāi)的公司,也需要原理圖設計者能為PCB 的設計者對于不同的信號提出布板要求。嵌入式技術(shù)提升找徐工Q2269819323
       3.驅動(dòng)程序和操作系統移植工作
       現代嵌入式系統的開(kāi)發(fā)同傳統8位單片機系統的開(kāi)發(fā)相比,一個(gè)顯著(zhù)的區別就是嵌入式操作系統的廣泛使用。在拿到焊接完畢的電路板,并進(jìn)行基本的測試后,就要進(jìn)行驅動(dòng)程序和操作系統的移植工作了。首先要進(jìn)行的Bootloader的編寫(xiě)和移植工作。Bootloader相當于PC系統的BIOS。對于有些嵌入式操作系統,如uc/OSII沒(méi)有bootloader同樣可以開(kāi)發(fā)調試。但是對于WindowsCE和嵌入式linux系統而言Bootloader就是必須的了。本文以Windows CE 為例,做一個(gè)簡(jiǎn)要的說(shuō)明。
       Windows CE 系統的移植工作主要就是BSP(板級支持包)的開(kāi)發(fā)過(guò)程。BSP將具體的硬件差異同操作系統的核心隔離開(kāi)來(lái),主要由Bootloaer ,OAL(OEMAbstraction Layer)和設備驅動(dòng)程序三部分組成。WindowsCE系統中Bootloader叫做Eboot。Eboot被寫(xiě)入系統的引導Flash。系統啟動(dòng)時(shí)運行Eboot,完成通過(guò)網(wǎng)卡將調試PC 機中Windows CE 操作系統映像下載到目標系統的SDRAM中并開(kāi)始執行的功能。對于一個(gè)系統移植人員,首先需要閱讀文檔,了解WindowsCE系統Bootloader和BSP的基本概念和開(kāi)發(fā)過(guò)程。(呵,還要做這工作啊,我還沒(méi)想到(初學(xué)^_^))Windows CE的開(kāi)發(fā)系統Platform Builder提供了詳細的文檔和例程,開(kāi)發(fā)人員需要仔細的閱讀文檔和例程。搞清楚各個(gè)函數之間的調用關(guān)系。在開(kāi)發(fā)過(guò)程中的一個(gè)重要的步驟就是打通串口,使得目標板能夠通過(guò)PC機串口向調試PC 機發(fā)送數據。由于A(yíng)RM 系統的仿真器比較昂貴,而且操作系統的調試往往不使用JTAG調試器進(jìn)行單步調試。所以能從串口觀(guān)察程序的執行過(guò)程和結果對于調試就顯得十分重要了。串口打通之后一個(gè)比較棘手的問(wèn)題就是網(wǎng)卡芯片的調試。剛剛接觸嵌入式系統開(kāi)發(fā)的人往往沒(méi)有直接在寄存器級上使用網(wǎng)卡芯片的經(jīng)驗,而網(wǎng)卡芯片的說(shuō)明一般都較為簡(jiǎn)短,這就要求開(kāi)發(fā)者學(xué)習一些以太網(wǎng)的基礎知識,對以太網(wǎng)的MAC 層有一個(gè)基本的認識。另外,各種網(wǎng)絡(luò )調試(抓包)工具的使用也能大大降低系統調試的難度。系統的OAL需要根據具體硬件的不同做出相應的修改,這個(gè)部分可參照文檔進(jìn)行,在調試過(guò)程中根據串口的信息分析出錯的地方。要充分發(fā)揮跨文件字符串搜索工具的功能,在浩如煙海的源文件中找到出錯的位置。當然,隨著(zhù)開(kāi)發(fā)者對系統文件目錄結構的熟悉和了解,錯誤定位的速度會(huì )不斷加快。WindowsCE 的驅動(dòng)程序相對而言是比較好寫(xiě)的。程序結構較為簡(jiǎn)單,學(xué)習者可參照
                  http://msdn.microsoft.com/library/default.asp MSDN Home > MSDN Library >Mobile and Embedded Development > Embedded Operating System Development > Columns SPOT the Geek and WindowsCE Drivers 這篇文章。
       4.應用程序的開(kāi)發(fā)
       嵌入式系統的應用程序開(kāi)發(fā)同在PC 機上開(kāi)發(fā)應用程序的區別不是很大。對于Windows CE系統而言,Microsoft已經(jīng)提供了較為完善的開(kāi)發(fā)工具。特別是.NET Compact work的使用,使得基于Windows CE.NET Compactwork的應用程序有了跨平臺性。開(kāi)發(fā)人員可以使用Windows 的C# 語(yǔ)言直接在PC 上進(jìn)行CE.NET應用程序的開(kāi)發(fā)和模擬調試,也可將目標系統同PC 機相連,進(jìn)行聯(lián)機調試,F在有很多系統支持J2ME(JAVA的嵌入式系統版本) ,這使得JAVA 在嵌入式系統應用開(kāi)發(fā)中占有較大的優(yōu)勢。另外,作為專(zhuān)業(yè)的嵌入式系統軟件開(kāi)發(fā)人員,還需要充分了解面向對象技術(shù)和設計模式等方面的知識,當然作為初學(xué)者可以先不深入研究這方面的內容。
常用嵌入式系統處理器和操作系統嵌入式技術(shù)提升找徐工Q2269819323
        處理器
        常用嵌入式系統處理器主要包括ARM 處理器,Power PC 處理器,基于MIPS 內核的嵌入式處理器,軟核處理器(如Altera 的Nios和Xilinx的MicroBlaze等)和DSP(數字信號處理器)等。
        ARM 處理器的主要特點(diǎn)是具有較高的性能功耗比。ARM處理器被廣泛的應用在手機,PDA等領(lǐng)域,其中較為著(zhù)名的有Intel 公司生產(chǎn)的基于A(yíng)RM 內核的XScale系列處理器。由于所有公司生產(chǎn)的基于A(yíng)RM內核的處理器具有相同的編程模型,在手持和電池供電的系統中,基于A(yíng)RM的嵌入式系統處理器往往被首先選用。PowerPC(簡(jiǎn)稱(chēng)PPC)處理器具有較強的運算性能和數據吞吐能力,在網(wǎng)絡(luò )和數據通信領(lǐng)域基于PPC的嵌入式系統處理器有著(zhù)廣泛的應用。其中Motorola公司生產(chǎn)的MPC860/MPC8260被大量地應用在嵌入式網(wǎng)絡(luò )產(chǎn)品中。MIPS 處理器的特點(diǎn)表現在十分強大的處理能力上。作為高性能處理器,MIPS處理器適用于網(wǎng)絡(luò )、企業(yè)及高級消費類(lèi)電子應用,特別是在機頂盒系統中,MIPS處理器具有較高的市場(chǎng)占有率。隨著(zhù)可編程器件的規模不斷擴大,使得人們能夠根據需要定制處理器,并方便的將針對某種特殊應用定制的處理器方便的在可編程器件內部實(shí)現。除了處理器外,計算機系統還需要許多其他構成部分,比如在多通道媒體數據處理系統中,經(jīng)常需要使用可編程器件來(lái)實(shí)現高速的數據處理功能,使用軟核DSP來(lái)實(shí)現復雜的數字信號處理算法,同時(shí)還需要處理器進(jìn)行事務(wù)處理,軟核處理器將可編程器件,DSP同處理器結合在一起,為系統級設計提供了極大的靈活性。DSP(數字信號處理器)有別于通用處理器,集中表現在其強大的數字信號處理能力上。在DSP
內部提供了硬件乘累加器,處理器在設計上對于特殊的尋址方式做了優(yōu)化,一些DSP 還支持零耗循環(huán)(Zero OverheadLoop)。為了方便嵌入式系統設計,主流DSP 一般也都提供了豐富的外設。特別值得一提的是ADI 公司的Blackfin 系列DSP 和TI 公司的DM64X系列DSP,兩種處理器都提供了豐富的片上外設,非常適用嵌入式系統應用。
       操作系統
       Window CE.NET/5.0
       作為Microsoft的產(chǎn)品,Window CE.NE/5.0提供了功能完備的平臺開(kāi)發(fā)工具Platform  Builder和應用開(kāi)發(fā)工具Embedded Visual C++/Visual Studio 2003。WindowsCE由于擁有廣大使用者所熟悉的windows界面,系統提供了眾多驅動(dòng)程序,并且有完備的文檔支持。對于應用開(kāi)發(fā)而言,熟悉Windows系統開(kāi)發(fā)的程序員很容易轉到WindowsCE 應用程序的開(kāi)發(fā)。Windows CE將會(huì )是一個(gè)非常有前途的嵌入式操作系統。
       VxWorks
       VxWorks是由Windriver(風(fēng)河)公司出品的嵌入式實(shí)時(shí)操作系統,大名鼎鼎的火星登陸車(chē)就是使用了VxWorks。Windriver為VxWorks 提供了集成開(kāi)發(fā)環(huán)境tornado。
       υC/OSII
       υC/OS是由Jean Labrosse設計編寫(xiě)的開(kāi)放源代碼的嵌入式實(shí)時(shí)操作系統,筆者最早接觸的嵌入式操作系統就是它。閱讀并深入理解υC/OS的源代碼對于理解實(shí)時(shí)系統是大有裨益的。
       ARM Linux
       ARM linux是由Russell King和其他開(kāi)發(fā)者開(kāi)發(fā)移植的用于A(yíng)RM 處理器的linux操作系統。 ARM Linux系統在GNU GPL下發(fā)布。有興趣的讀者可以參看http://www.arm.linux.org.uk/docs/whatis.shtml的介紹。
       υCLinux
       υClinux 是適用于沒(méi)有MMU 的嵌入式處理的LinuxOS 版本。υ Clinux 同樣在GNU GPL發(fā)布,有興趣的讀者可以參看http://www.uclinux.org/index.html

有需要深入溝通交流的,可以找徐工私聊2269819323.
或者加入嵌入式技術(shù)交流群244313073,共同交流學(xué)習提升。


作者: edurachiel    時(shí)間: 2015-6-15 16:13
深圳信盈達嵌入式、單片機、ARM、FPGA、Android培訓!
免費試聽(tīng),滿(mǎn)意后給您量身定制課程(包學(xué)會(huì )),快速提高您的技能!
教學(xué)特色:名師督學(xué)+工程師指導;項目案列解析+實(shí)際解決方案!
技術(shù)顧問(wèn):徐老師:18948782706  qq:2269819323
歡迎大家進(jìn)入嵌入式交流群244313073共同交流、學(xué)習




歡迎光臨 電子工程網(wǎng) (http://selenalain.com/) Powered by Discuz! X3.4
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页