|
一、嵌入式系統(tǒng)的概念
著重理解“嵌入”的概念 ,主要從三個方面上來理解。
首先,從硬件上,“嵌入”是基于CPU的處圍器件的,整合到CPU芯片內(nèi)部,就好比早期基于X86體系結(jié)構(gòu)下的計算機,CPU有的是運算器和累加器的功能,一切芯片要通過外部橋路來擴展實現(xiàn),象串口之類的都是憑借著外部的16C550/2的串口控制器芯片實現(xiàn),而目前的這種串口控制器芯片早已集成到CPU內(nèi)部,而且PC機有獨立的顯卡,而多數(shù)嵌入式處理器都帶有LCD控制器,就其意義來說就相當(dāng)于顯卡。
從軟件上來說,嵌入就是在定制操作系統(tǒng)內(nèi)核里將應(yīng)用一并選入,編譯后將內(nèi)核下載到ROM中。而在定制操作系統(tǒng)內(nèi)核時所選擇的應(yīng)用程序組件就是軟件的“嵌入”。因為嵌入式系統(tǒng)是計算機科學(xué)與電子技術(shù)交叉的一門綜合性學(xué)科,在嵌入式這個領(lǐng)域范圍內(nèi),誰都不敢說自己的定義是十分確切的,包括那些專家學(xué)者們。
二、嵌入式系統(tǒng)的分層與專業(yè)的分類
嵌入式系統(tǒng)分為硬件層、驅(qū)動層、操作系統(tǒng)層和應(yīng)用層。
硬件層,是整個嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對容易。同時,硬件層也是驅(qū)動層的基礎(chǔ),有模擬電路與數(shù)字電路基礎(chǔ),還要對操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜さ摹>湍壳皝砜矗杏布A(chǔ)的情況下會軟件開發(fā)會使你增值。硬件層比較適合于,電子通信、機電自動化類專業(yè)的人來學(xué)習(xí),需要掌握的專業(yè)基礎(chǔ)知識有,單片機原理及接口技術(shù)、微機原理及接口技術(shù)、C語言。
驅(qū)動層,這部分比較難,驅(qū)動工程師不僅要能看懂電路圖還要能對操作系統(tǒng)內(nèi)核十分的精通,以便其所寫的驅(qū)動程序在系統(tǒng)調(diào)用時,不會獨占操作系統(tǒng)時間片,而導(dǎo)至其它任務(wù)不能執(zhí)行,要懂得系統(tǒng)內(nèi)核架構(gòu)和實時調(diào)度性,有良好的驅(qū)動編寫風(fēng)格。按大多數(shù)書上所說添加的驅(qū)動的方式,很多人都能做到,但可能連個初級驅(qū)動工程師的水平都達不到,這樣所寫出來的驅(qū)動在應(yīng)用調(diào)用時現(xiàn)在打開的程序中斷以前程序的情況,或者要等上一會才能運行后來打開的程序。想做個好的驅(qū)動人員沒有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾編,不是太容易成功的,所以工資也是相對最高的。除硬件層所具備的基礎(chǔ)學(xué)科外,還要對數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)原理、編譯原理都要十分精通了解。
操作系統(tǒng)層,對于操作系統(tǒng)層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統(tǒng),或者寫出缺胳膊少腿的操作系統(tǒng)來,這部分工作大都由驅(qū)動工程師來完成。操作系統(tǒng)是負責(zé)系統(tǒng)任務(wù)的調(diào)試、磁盤和文件的管理,而嵌入式系統(tǒng)的實時性十分重要。
應(yīng)用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數(shù)調(diào)用,到其他操作系統(tǒng)下只是編譯和開發(fā)環(huán)境有相應(yīng)的變化而已。但如果涉及嵌入式系統(tǒng)下嵌入式數(shù)據(jù)庫、基于嵌入式系統(tǒng)的網(wǎng)絡(luò)編程和基于此應(yīng)用層面的協(xié)議應(yīng)用開發(fā)又較為復(fù)雜, 并且有難度了。
三、目標與定位
學(xué)STM32嵌入式,從硬件上講,一方面就是學(xué)習(xí)接口電路設(shè)計,另一方面就是學(xué)習(xí)匯編和C語言的板級編程。如果從軟件上講,就是要學(xué)習(xí)基于ARM處理器的操作系統(tǒng)層面的驅(qū)動、移植了。硬件的寄存器類的東西還是要能看懂的,掌握基于板級的匯編和C編程。
四、開發(fā)系統(tǒng)選擇
對于初學(xué)者在此方面以此入門還應(yīng)該理智,開發(fā)系統(tǒng)的選擇最終要看自己往嵌入式系統(tǒng)的那個方向上走,是做驅(qū)動開發(fā)還是應(yīng)用,還是做嵌入式系統(tǒng)硬件層設(shè)計 與板級測試。如果想從操作系統(tǒng)層面或應(yīng)用層面上走,不管是驅(qū)動還是應(yīng)用,那當(dāng)然處理器性能越高越好了,但嵌入式系統(tǒng)這個東西自學(xué),有十分大的困難,不是幾個月或半年或是一年二年能搞定的事。
選擇平臺還要考察一個處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以后就業(yè)成功的機率就越高,這就是招聘時 所說的有無“相關(guān)技能”,因為一個人不可能在短短幾年內(nèi)把所有的處理器都接觸一遍,而招聘單位所用的處理器就可能是我們完全沒有見過的。因此開發(fā)系統(tǒng)的選擇,要看自己的未來從來目標方向、要看開發(fā)板接口資源、還要看業(yè)界的通用性。
五、高級嵌入式系統(tǒng)硬件工程師要具備的技能
對于硬件來講有幾個方向,就單純信號來分為數(shù)字和模擬,模擬比較難搞,需要積累多年的經(jīng)驗,但是達到一定技術(shù)水平后工資十分可觀。
數(shù)字部分在大方向上又可分為51/ARM的單片機類,DSP類,FPGA類。ARM單片機(STM32屬于ARM系列)類的內(nèi)容就較多,業(yè)界產(chǎn)品占用量大,應(yīng)用人群廣,因此就業(yè)前景不錯。而硬件設(shè)計最體現(xiàn)水平和水準的就是接口設(shè)計這塊,這是各個高級硬件工程師判定水平高低的依據(jù)。
想成為一個優(yōu)秀的工程師,需要對系統(tǒng)整體性的把握和對已有電路的理解,從硬件設(shè)計工程師中還可以分出ECAD工程師,就是專業(yè)的畫PCB板的工程師,和EMC設(shè)計工程師,幫助解決EMC的問題。要能用到工具畫圖畫板做邏輯設(shè)計、接口設(shè)計審圖、調(diào)試。
硬件是要靠經(jīng)驗,十年磨一劍!但是相對通常的軟件開發(fā)者來說,可以有更長的職業(yè)壽命。更多嵌入式學(xué)習(xí),歡迎咨詢余工Q 二八五九七八零二零三
|
|