真正的嵌入式精英是如何修煉成的?
怎樣做才能快速的成為嵌入式高手呢? 其實(shí),做工程是沒有捷徑可走的.聽聽下面一個(gè)大牛人寫的!看看有何真經(jīng)?
先說做硬件:
把你的數(shù)字電路教材和模擬電路的教材讀熟,暫時(shí)先把重點(diǎn)放在數(shù)字電路上面,接著把微機(jī)原理和接口技術(shù)讀熟悉了,最好能用匯編寫幾個(gè)簡單的程序上機(jī)調(diào)試一下,這是很重要的。
完成上面的工作大概需要半年,不管你有多么的聰明,除非你以前這個(gè)基礎(chǔ)就打的不錯(cuò),否則,還是老老實(shí)實(shí)花上至少半年的時(shí)間!還是那句話,沒有捷徑可走,如果你相信那些什么“21天學(xué)通xx”什么的,那么我告訴你,放棄做工程吧!再說,你這么容易就學(xué)會了,別人也能的,你確定能拿到高薪嗎?
下一步,就是選擇一個(gè)DSP(或其它的嵌入式CPU)平臺作為你的目標(biāo)平臺,先熟悉它的架構(gòu)和與外圍電路的接口,然后學(xué)習(xí)她的指令集,也要寫一些小程序去跑一下。這個(gè)時(shí)候,你應(yīng)該去買一個(gè)開發(fā)板了,一般的廠家附帶會給你一些demo程序,看懂它,理解它,修改它,在你的板子上跑一跑。
完成上面兩步,說明你已經(jīng)入了這個(gè)行業(yè)的門了,下一步,想成為高手的話,就是自己去設(shè)計(jì)一些項(xiàng)目了,這個(gè)階段所花的時(shí)間每個(gè)人都是不同的,要看你的造化(主要是前面的基礎(chǔ)是否牢固)了。
再說說軟件:
在嵌入式行業(yè),你想做軟件開發(fā)的話,沒別的,那就深入理解C語言,尤其是C的指針,如果你以前學(xué)過C,但是沒有意識到C相比其它的高級語言的優(yōu)點(diǎn)的話(不是聽別人說的,你自己的體會),你可以按下面步驟來理解C:
1、重新翻一遍C的教材,記住一些常用的C語法,但不要死摳語法;
2、從編譯器的角度來理解C;
從編譯原理的角度來理解你工作中使用的高級語言,如果你做到這一點(diǎn),至少有兩個(gè)好處:
第一個(gè)好處是避免一大堆低水平重復(fù)出現(xiàn)的編譯錯(cuò)誤。一名優(yōu)秀的Coder平均在一個(gè)工作日中應(yīng)該完成200行以上的源碼,其編譯錯(cuò)誤應(yīng)該控制在5個(gè)以下,要知道這200行源碼不是一次完成的,所以大多數(shù)情況下你都要追求一次編譯通過;
第二個(gè)好處是可以提高源碼的可讀性和效率。規(guī)范地編寫你的代碼使你自己的邏輯清晰,因?yàn)槟忝靼锥嗉訋讉€(gè)括號和空行、多換行對齊、多注釋,編譯器是會自動識別的,不影響程序執(zhí)行的效率,反過來,控制好遞歸調(diào)用和循環(huán)內(nèi)的if語句才是提高程序效率的關(guān)鍵,要全力避免遞歸,但要深刻理解遞歸,能通過自己建立堆棧來把遞歸程序轉(zhuǎn)換成非遞歸程序,要求還是較高的哦!
3、從硬件的角度來理解C。
完成上面3步,你就是C的高手了,接下來應(yīng)該去看看軟件工程方面的書了,這個(gè)我還不太懂,不敢妄言。
另外說說教材的選擇:學(xué)一門東西,選好你的教材,只要一本就可以了。堅(jiān)決防止這種情況的出現(xiàn):去圖書館借很多本書,像搶劫似的,而只是每一本都翻翻,就又還給圖書館了的!注意上面我把匯編語言放在硬件學(xué)習(xí)的板塊里面,是由于匯編跟硬件的關(guān)系太緊密了,以至于是先學(xué)匯編還是先學(xué)習(xí)硬件電路和CPU架構(gòu)成了要分清到底是“先有雞還是先有蛋”的千年哲學(xué)難題了。
嵌入式操作系統(tǒng)一覽
其實(shí),嵌入式系統(tǒng)并不是一個(gè)新生的事物,從八十年代起,國際上就有一些IT組織、公司,開始進(jìn)行商用嵌入式系統(tǒng)和專用操作系統(tǒng)的研發(fā)。這其中涌現(xiàn)了一些著名的嵌入式系統(tǒng):
1,Windows CE
Microsoft Windows CE是從整體上為有限資源的平臺設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng)。它的模塊化設(shè)計(jì)允許它對于從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進(jìn)行定制。操作系統(tǒng)的基本內(nèi)核需要至少200K的ROM。
2,VxWorks
VxWorks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場占有率最高的系統(tǒng)。它支持多種處理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC等等。大多數(shù)的VxWorks API是專有的。采用GNU的編譯和調(diào)試器。
3,pSOS
ISI公司已經(jīng)被WinRiver公司兼并,現(xiàn)在pSOS屬于WindRiver公司的產(chǎn)品。這個(gè)系統(tǒng)是一個(gè)模塊化、高性能的實(shí)時(shí)操作系統(tǒng),專為嵌入式微處理器設(shè)計(jì),提供一個(gè)完全多任務(wù)環(huán)境,在定制的或是商業(yè)化的硬件上提供高性能和高可靠性??梢宰岄_發(fā)者根據(jù)操作系統(tǒng)的功能和內(nèi)存需求定制成每一個(gè)應(yīng)用所需的系統(tǒng)。開發(fā)者可以利用它來實(shí)現(xiàn)從簡單的單個(gè)獨(dú)立設(shè)備到復(fù)雜的、網(wǎng)絡(luò)化的多處理器系統(tǒng)。
4,QNX
QNX是一個(gè)實(shí)時(shí)的、可擴(kuò)充的操作系統(tǒng),它部分遵循POSIX相關(guān)標(biāo)準(zhǔn),如:POSIX.1b實(shí)時(shí)擴(kuò)展。它提供了一個(gè)很小的微內(nèi)核以及一些可選的配合進(jìn)程。其內(nèi)核僅提供4種服務(wù):進(jìn)程調(diào)度、進(jìn)程間通信、底層網(wǎng)絡(luò)通信和中斷處理,其進(jìn)程在獨(dú)立的地址空間運(yùn)行。所有其它OS服務(wù),都實(shí)現(xiàn)為協(xié)作的用戶進(jìn)程,因此QNX內(nèi)核非常小巧(QNX4.x大約為12Kb)而且運(yùn)行速度極快。這個(gè)靈活的結(jié)構(gòu)可以使用戶根據(jù)實(shí)際的需求,將系統(tǒng)配置成微小的嵌入式操作系統(tǒng)或是包括幾百個(gè)處理器的超級虛擬機(jī)操作系統(tǒng)。
5,Palm OS
3Com公司的Palm OS在PDA市場上占有很大的市場份額,它有開放的操作系統(tǒng)應(yīng)用程序接口(API),開發(fā)商可以根據(jù)需要自行開發(fā)所需要的應(yīng)用程序。
6,OS-9
Microwave的OS-9是為微處理器的關(guān)鍵實(shí)時(shí)任務(wù)而設(shè)計(jì)的操作系統(tǒng),廣泛應(yīng)用于高科技產(chǎn)品中,包括消費(fèi)電子產(chǎn)品、工業(yè)自動化、無線通訊產(chǎn)品、醫(yī)療儀器、數(shù)字電視/多媒體設(shè)備。它提供了很好的安全性和容錯(cuò)性。與其他的嵌入式系統(tǒng)相比,它的靈活性和可升級性非常突出。
7,LynxOS
Lynx Real-time Systems的LynxOS是一個(gè)分布式、嵌入式、可規(guī)模擴(kuò)展的實(shí)時(shí)操作系統(tǒng),它遵循POSIX.1a、POSIX.1b和POSIX.1c標(biāo)準(zhǔn)。LynxOS支持線程概念,提供256個(gè)全局用戶線程優(yōu)先級;提供一些傳統(tǒng)的、非實(shí)時(shí)系統(tǒng)的服務(wù)特征;包括基于調(diào)用需求的虛擬內(nèi)存,一個(gè)基于Motif的用戶圖形界面,與工業(yè)標(biāo)準(zhǔn)兼容的網(wǎng)絡(luò)系統(tǒng)以及應(yīng)用開發(fā)工具。
目前,世面上有很多商業(yè)性嵌入式系統(tǒng)都在努力地為自己爭取著嵌入式市場的份額。但是,這些專用操作系統(tǒng)均屬于商業(yè)化產(chǎn)品,價(jià)格昂貴;而且,由于它們各自的源代碼不公開,使得每個(gè)系統(tǒng)上的應(yīng)用軟件與其它系統(tǒng)都無法兼容。并且,由于這種封閉性還導(dǎo)致了商業(yè)嵌入式系統(tǒng)在對各種設(shè)備的支持方面存在很大的問題,使得對它們的軟件移植變得很困難。在嵌入式這個(gè)IT產(chǎn)業(yè)的新的關(guān)鍵領(lǐng)域,Linux操作系統(tǒng)適時(shí)地出現(xiàn)在了國家和國內(nèi)各嵌入式廠商面前,由于Linux自身諸多優(yōu)勢,吸引了許多開發(fā)商的目光,成為嵌入式操作系統(tǒng)的新寵。它的出現(xiàn)無疑為國家發(fā)展嵌入式操作系統(tǒng)事業(yè)提供了一個(gè)極有吸引力的機(jī)會。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論