來源:知乎
整理:韋啟發(fā)
在知乎看到的,覺得見解不錯(cuò),看完我覺得會對嵌入式有些見解,分享給大家。
今年畢業(yè)剛工作半年,稍微寫一下自己的見解。
======================================
嵌入式就個(gè)萬金油!干得活可以涉及硬件和軟件!永遠(yuǎn)學(xué)不完的知識。
嵌入式工程師簡直就是硬件工程師與軟件工程師的合體!別問我是哪一類軟件工程師,反正不是前端、后端、APP、測試、運(yùn)維。也別問我是什么硬件工程師,電源、單片機(jī)、高頻、通信……你會做你就上!給你個(gè)嵌入式工程師的頭銜你就是軟件硬件小能手,堪比全棧工程師。
先從硬件說起:
硬件要做一款產(chǎn)品很不容易,要考慮各種方案的選型,而硬件方案的選型可不像移動(dòng)開發(fā)一樣是選Android呢還是iOS,是用Java還是Delphi那么簡單,哦,你問我用什么框架?我還想問框架是什么意思呢!硬件工程師眼中只有電路圖!原理圖?。∣S:電路圖和原理圖就是同一種東西好么...)以及這電路圖是否有人實(shí)現(xiàn)過。
好了,會看電路圖了,總要做出來給老板看的吧?于是必須會焊接。做嵌入式硬件的絕對離不開主控芯片,不然還叫什么嵌入式工程師???所以該芯片的最小系統(tǒng)是要會焊接出來的。
最小系統(tǒng)實(shí)現(xiàn)了,那么就可以搭接各種傳感器,往智能硬件方向走;或者移植一個(gè)操作系統(tǒng),往人機(jī)界面(UI)方向走。
當(dāng)然,你也可以到此為止,不去做產(chǎn)品,而是做各種硬件模塊或開發(fā)板,再拿出去賣。如果我沒有理解錯(cuò),這個(gè)叫方案提供商。
「我們公司是賣方案的?!埂粋€(gè)小工程師這么介紹自己的公司。
當(dāng)然,也有的硬件公司是出售自家生產(chǎn)芯片及模塊,附送自家的SDK(軟件開發(fā)包)。我們這些客戶(用戶、工程師、二次開發(fā)者)稱這硬件公司為原廠(官方),代碼稱為原廠的代碼(或者官方的代碼)。賣芯片的公司,叫芯片供應(yīng)商。
我想說的是,還有公司是拿原廠的芯片做最小系統(tǒng)模塊,再賣給我們這些二次開發(fā)者(三次開發(fā)者)用……像這些賣方案賣芯片的公司,嵌入式硬件工程師最多了!
我喜歡把嵌入式分為四個(gè)層次,硬件層、驅(qū)動(dòng)層、系統(tǒng)層和應(yīng)用層,前面說完了硬件,下面說軟件。
如果某個(gè)人在單片機(jī)上寫過定時(shí)器、數(shù)碼管、溫度傳感器的程序,用過UART、SPI、IIC、CAN等通信方式、更厲害的話接觸過藍(lán)牙協(xié)議?;蛘逿CP/IP協(xié)議棧,稱其為驅(qū)動(dòng)工程師應(yīng)該沒什么不妥吧?都是底層代碼,雖然有難有易。
系統(tǒng)層。一般個(gè)人或小公司是寫不了的,聽說Windows某版本用了300人寫了2年。只有大公司才會想著自己寫系統(tǒng),比如最近的新聞:華為推自主物聯(lián)網(wǎng)操作系統(tǒng)Liteos 對全球免費(fèi)開放
而我們個(gè)人所能做的是把操作系統(tǒng)移植到芯片上去。
另外補(bǔ)充一個(gè)知識點(diǎn):一個(gè)操作系統(tǒng),一般來說有五樣?xùn)|西:內(nèi)存管理、進(jìn)程管理、文件系統(tǒng)、設(shè)備硬件接口和網(wǎng)絡(luò)通信。在嵌入式領(lǐng)域里,可能會針對不同的應(yīng)用情況而對系統(tǒng)層進(jìn)行裁減,比如裁減掉文件系統(tǒng)和網(wǎng)絡(luò)通信,只留下內(nèi)存、進(jìn)程和硬件接口就可以了。
如果你現(xiàn)在干的活硬件層是ARM芯片、系統(tǒng)層是Linux。
那么就是ARM+Linux嵌入式工程師,但是你以為你是要做上面的活嗎?不!
你只是在ARM+Linux上面修修改改,上面所說的硬件和驅(qū)動(dòng)的活都交給其他人或上游公司做了,但是那些人也可以說是在做嵌入式!
然后呢,安卓本質(zhì)上不也是Linux么?所以如果你是在做安卓底層開發(fā),安卓APP開發(fā),本質(zhì)上也是在做嵌入式!而且Android和iOS不是常常相提并論嗎?于是iOS開發(fā)也是嵌入式開發(fā)了……真是讓人不可思議!
另外,除了ARM+Linux/Android,還有其他的芯片+系統(tǒng),比如:STM32+uCOS,ARM+WinCE。
按照目前社會對嵌入式這個(gè)詞語的理解,可能就在這個(gè)范圍內(nèi)。像我這樣電子專業(yè)出身的人,對嵌入式的理解就沒那么狹隘。
我還想說的是:驅(qū)動(dòng)層和系統(tǒng)層這一類的工程師,因?yàn)椴恍枰笃男薷亩袌鲂枨罅可?,因?yàn)樾枰喿x大量的代碼和要有很多Debug經(jīng)驗(yàn)而人才稀少。
近年來嵌入式這三個(gè)字那么火,但還是一個(gè)被培訓(xùn)機(jī)構(gòu)炒作出來的概念!最重要的還是要回到現(xiàn)實(shí)中具體是做什么的!你在這一家公司做嵌入式工程師,可能根本就不能擔(dān)任另一家的嵌入式工程師!所以……
嵌入式最大的坑,就是定義未清!
嵌入式定義未清,又被商家炒作,就會有一大堆人趨之若鶩(包括我),接觸之后發(fā)覺并不是自己想象的那樣,想退出卻發(fā)現(xiàn)自己除了嵌入式其他什么也不會,想去互聯(lián)網(wǎng)行業(yè),發(fā)現(xiàn)自己HTML、CCS、JavaScript、PHP、Delphi、C#一概不知!
互聯(lián)網(wǎng)只要一臺電腦+一個(gè)服務(wù)器就能賺錢,軟件還是零成本;而嵌入式,你們知道我媽看了我做的畢業(yè)設(shè)計(jì)之安卓手機(jī)藍(lán)牙遙控三色燈,第一句話說了什么嗎?這屬于制造業(yè)嗎?
2015-10-08補(bǔ)充:
后來想了想不能說定義未清,應(yīng)該說是定義太廣泛。
嵌入式系統(tǒng)在書本上的定義很明確,也很長,具體可查某百科。我的嵌入式老師只用了三個(gè)詞語就總結(jié)了嵌入式系統(tǒng)的精髓:專用的 可裁剪的 計(jì)算機(jī)系統(tǒng)。
目前社會上對嵌入式的理解,也就是商家炒作出來的概念:嵌入式=ARM+Linux??墒亲鳛殡娮訉I(yè)出身的我,套用老師總結(jié)出的概念,我能發(fā)現(xiàn)很多東西都屬于嵌入式:MP3、手機(jī)、ATM、好記星等等。學(xué)嵌入式為什么偏要去學(xué)ARM+Linux呢,而且還難!還不一定找的到工作!
所以,如果你是想進(jìn)入嵌入式行業(yè)的人,請把握好自己的學(xué)習(xí)方向,不要被培訓(xùn)機(jī)構(gòu)的炒作而迷途。
作者:閼男秀
鏈接:https://www.zhihu.com/question/28111300/answer/64780548
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!