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