什么是嵌入式?我相信只要是從事嵌入式行業(yè)的都知道關(guān)于嵌入式的定義,但是我今天還是要給大家解釋一下,無疑會有不了解嵌入式,且想進入嵌入式行業(yè)的同胞們。
嵌入式系統(tǒng)嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。雖然在書本上的定義很長,但是只用三個詞語就可以總結(jié)了嵌入式系統(tǒng)的精髓:專用的、可裁剪的、計算機系統(tǒng)。
那知道了什么是嵌入式,接下來給大家談?wù)勱P(guān)于嵌入式的坑在哪?
其實主要的坑就在于定義太廣泛。嵌入式工程師簡直就是硬件工程師與軟件工程師的合體!別問我是哪一類軟件工程師,反正不是前端、后端、APP、測試、運維。也別問我是什么硬件工程師,電源、單片機、高頻、通信……你會做你就上!給你個嵌入式工程師的頭銜你就是軟件硬件小能手,堪比全棧工程師。嵌入式實際上是軟硬結(jié)合的一項領(lǐng)域,既要懂硬件又要懂軟件。
硬件要做一款產(chǎn)品很不容易,要考慮各種方案的選型,硬件方案的選型可不像移動開發(fā)一樣是選Android呢還是iOS,是用Java還是Delphi那么簡單,硬件工程師眼中只有電路圖!原理圖!
我喜歡把嵌入式分為四個層次,硬件層、驅(qū)動層、系統(tǒng)層和應(yīng)用層,前面所說是屬于硬件層,需要會畫PCB、原理圖,可以畫2層板、4層板甚至更高。那下面說說其他的三層。如果某個人在單片機上寫過定時器、數(shù)碼管、溫度傳感器的程序,用過UART、SPI、IIC、CAN等通信方式、更厲害的話接觸過藍牙協(xié)議棧或者TCP/IP協(xié)議棧,可以稱其為驅(qū)動工程師。都是底層代碼,雖然有難有易。系統(tǒng)層:一般個人或小公司是寫不了的,聽說Windows某版本用了300人寫了2年。只有大公司才會想著自己寫系統(tǒng),
應(yīng)用層相對來說比較簡單,只要你具備一定的語言基礎(chǔ),像C語言是必須得有的語言基礎(chǔ),又如C++、Java等等;再加上對嵌入式應(yīng)用層的開發(fā)有一個整體的框架,像進程間的通信、線程通信、TCP\IP協(xié)議、socket編程等等,那有了這些基礎(chǔ)之后對于勝任一個嵌入式應(yīng)用層工程師是沒有問題的。但是對于嵌入式軟件工程師來說,并不是簡單地只懂軟件就可以了,你需要懂硬件,懂通信,會看原理圖。
所以說嵌入式的坑坑在哪呢?就是廣泛,什么都得懂。
有句古話說的好:技多不壓身。學的多,自然也就硬,嵌入式行業(yè)是個柔性的后路極多的行業(yè),可能嵌入式軟件勢頭不好,我可以轉(zhuǎn)去做硬件,做硬件勢頭不好,我在努力一下去研究算法,由嵌入式轉(zhuǎn)軟件開發(fā)容易,但是反過來可就不那么簡單了。嵌入式行業(yè)是個時間沉淀的過程,無人能逆襲,做不到極致,只能做的更好。這話怎么說呢,就是五年的不如十年的硬,十年的不如二十年的硬。年輕人的優(yōu)勢就是思維靈活,接受新東西快,所以入行常常靠軟件這個門路,入行幾年開始積累硬件的知識,從底層追求極致,硬件是個慢功夫,經(jīng)驗比書本上的知識準,或者說,有些東西寫不進書里只能自己明白,這就需要經(jīng)歷,所以,每個人都要爬臺階。然而軟件開發(fā),處境十分尷尬,做幾年,前有同行擋路,后有新人競爭,兩頭堵。做十年和做五年功效是一樣的,換句話說,很容易“滿級”。
綜上來看,很顯然嵌入式的坑,實際上是一種自我保護。