ARM嵌入式開發太麻煩?還是X86 windows開放式方便些

嵌入式行業是個坑嗎?
嵌入式工程師簡直就是硬件工程師與軟件工程師的合體!別問我是哪一類軟件工程師,反正不是前端、后端、APP、測試、運維。也別問我是什么硬件工程師,電源、單片機、高頻、通信……你會做你就上!給你個嵌入式工程師的頭銜你就是軟件硬件小能手,堪比全棧工程師。

這幾天給浙江寧波一船運公司檢修2臺基于ARM跑wince的嵌入式15寸工業平板電腦,通過拆裝發現此機器已經經過2個公司才到船運公司的船上,已使用多年,現在找不到人維修,系統集成商啥都不懂,硬件不清楚,程序不清楚,系統也不清楚,而原廠居然也不在了。不容易呀。
 
先說硬件:
硬件要做一款產品很不容易,要考慮各種方案的選型,而硬件方案的選型可不像移動開發一樣是選Android呢還是iOS,是用Java還是Delphi那么簡單,哦,你問我用什么框架?我還想問框架是什么意思呢!硬件工程師眼中只有電路圖!原理圖!(OS:電路圖和原理圖就是同一種東西好么…)以及這電路圖是否有人實現過。
 
好了,會看電路圖了,總要做出來給老板看的吧?于是必須會焊接。做嵌入式硬件的絕對離不開主控芯片,不然還叫什么嵌入式工程師啊?所以該芯片的最小系統是要會焊接出來的。
 
最小系統實現了,那么就可以搭接各種傳感器,往智能硬件方向走;或者移植一個操作系統,往人機界面(UI)方向走。
 
當然,你也可以到此為止,不去做產品,而是做各種硬件模塊或開發板,再拿出去賣。如果我沒有理解錯,這個叫方案提供商。
 
「我們公司是賣方案的。」——一個小工程師這么介紹自己的公司。
 
當然,也有的硬件公司是出售自家生產芯片及模塊,附送自家的SDK(軟件開發包)。我們這些客戶(用戶、工程師、二次開發者)稱這硬件公司為原廠(官方),代碼稱為原廠的代碼(或者官方的代碼)。賣芯片的公司,叫芯片供應商。
 
我想說的是,還有公司是拿原廠的芯片做最小系統模塊,再賣給我們這些二次開發者(三次開發者)用……像這些賣方案賣芯片的公司,嵌入式硬件工程師最多了!
 
我喜歡把嵌入式分為四個層次,硬件層、驅動層、系統層和應用層,前面說完了硬件,下面說軟件。
 
再說說軟件:
如果某個人在單片機上寫過定時器、數碼管、溫度傳感器的程序,用過UART、SPI、IIC、CAN等通信方式、更厲害的話接觸過藍牙協議棧或者TCP/IP協議棧,稱其為驅動工程師應該沒什么不妥吧?都是底層代碼,雖然有難有易。
 
系統層。一般個人或小公司是寫不了的,聽說Windows某版本用了300人寫了2年。只有大公司才會想著自己寫系統,比如最近的新聞:華為推自主物聯網操作系統Liteos 對全球免費開放
而我們個人所能做的是把操作系統移植到芯片上去。
 
另外補充一個知識點:一個操作系統,一般來說有五樣東西:內存管理、進程管理、文件系統、設備硬件接口和網絡通信。在嵌入式領域里,可能會針對不同的應用情況而對系統層進行裁減,比如裁減掉文件系統和網絡通信,只留下內存、進程和硬件接口就可以了。
 
如果你現在干的活硬件層是ARM芯片、系統層是Linux。
那么就是ARM+Linux嵌入式工程師,但是你以為你是要做上面的活嗎?不!
你只是在ARM+Linux上面修修改改,上面所說的硬件和驅動的活都交給其他人或上游公司做了,但是那些人也可以說是在做嵌入式!
 
然后呢,安卓本質上不也是Linux么?所以如果你是在做安卓底層開發,安卓APP開發,本質上也是在做嵌入式!而且Android和iOS不是常常相提并論嗎?于是iOS開發也是嵌入式開發了……真是讓人不可思議!
 
另外,除了ARM+Linux/Android,還有其他的芯片+系統,比如:STM32+uCOS,ARM+WinCE。
 
按照目前社會對嵌入式這個詞語的理解,可能就在這個范圍內。像我這樣電子專業出身的人,對嵌入式的理解就沒那么狹隘。
 
我還想說的是:驅動層和系統層這一類的工程師,因為不需要大篇幅的修改而市場需求量少,因為需要閱讀大量的代碼和要有很多Debug經驗而人才稀少。
 
近年來嵌入式這三個字那么火,但還是一個被培訓機構炒作出來的概念!最重要的還是要回到現實中具體是做什么的!你在這一家公司做嵌入式工程師,可能根本就不能擔任另一家的嵌入式工程師!所以……
 
嵌入式最大的坑,就是定義未清!
嵌入式定義未清,又被商家炒作,就會有一大堆人趨之若鶩(包括我),接觸之后發覺并不是自己想象的那樣,想退出卻發現自己除了嵌入式其他什么也不會,想去互聯網行業,發現自己HTML、CCS、JavaScript、PHP、Delphi、C#一概不知!
 
互聯網只要一臺電腦+一個服務器就能賺錢,軟件還是零成本;而嵌入式,你們知道我媽看了我做的畢業設計之安卓手機藍牙遙控三色燈,第一句話說了什么嗎?這屬于制造業嗎?
 
后來想了想不能說定義未清,應該說是定義太廣泛。
嵌入式系統在書本上的定義很明確,也很長,具體可查某百科。我的嵌入式老師只用了三個詞語就總結了嵌入式系統的精髓:專用的 可裁剪的 計算機系統。
 
目前社會上對嵌入式的理解,也就是商家炒作出來的概念:嵌入式=ARM+Linux。可是作為電子專業出身的我,套用老師總結出的概念,我能發現很多東西都屬于嵌入式:MP3、手機、ATM、好記星等等。學嵌入式為什么偏要去學ARM+Linux呢,而且還難!還不一定找的到工作!
 
所以,如果你是想進入嵌入式行業的人,請把握好自己的學習方向,不要被培訓機構的炒作而迷途。