chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式er應該如何進行職業(yè)規(guī)劃

Wildesbeast ? 來源:今日頭條 ? 作者:布道師Peter ? 2020-02-17 16:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

01 嵌入式系統(tǒng)的概念 著重理解“嵌入”的概念

主要從三個方面上來理解:

1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內部。

比如早期基于X86體系結構下的計算機,CPU只是有運算器和累加器的功能。

一切芯片要造外部橋路來擴展實現,像串口之類的都是靠外部的16C550/2的串口控制器芯片實現。

而目前的這種串口控制器芯片早已集成到CPU內部,還有PC機有顯卡,而多數嵌入式處理器都帶有LCD控制器,但其種意義上就相當于顯卡。

比較高端的ARMIntel Xscale架構下的IXP網絡處理器CPU內部集成PCI控制器(可配成支持4個PCI從設備或配成自身為CPI從設備);還集成3個NPE網絡處理器引擎,其中兩個對應于兩個MAC地址,可用于網關交換用,而另外一個NPE網絡處理器引擎支持DSL,只要外面再加個PHY芯片即可以實現DSL上網功能。

IXP系列最高主頻可以達到1.8G,支持2G內存,1G×10或10G×1的以太網口或Febre channel的光通道。

IXP系列應該是目標基于ARM體系統(tǒng)結構下由intel進行整合后成Xscale內核的最高的處理器了。

2、從軟件上前,就是在定制操作系統(tǒng)內核里將應用一并選入,編譯后將內核下載到ROM中。

而在定制操作系統(tǒng)內核時所選擇的應用程序組件就是完成了軟件的“嵌入”,比如WinCE在內核定制時,會有相應選擇,其中就是Wordpad,PDF,MediaPlay等等選擇,如果我們選擇了,在CE啟動后,就可以在界面中找到這些東西,如果是以前PC上將的windows操作系統(tǒng),多半的東西都需要我們得新再裝。

3、把軟件內核或應用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺中的ROM中就實現了一個真正的“嵌入”。

以上的定義是我在6、7年前給嵌入式系統(tǒng)下自話側重于理解型的定義,書上的定義也有很多,但在這個領域范圍內,誰都不敢說自己的定義是十分確切的,包括那些專家學者們,歷為畢竟嵌入式系統(tǒng)是計算機范疇下的一門綜合性學科

02 嵌入式系統(tǒng)的分層與專業(yè)的分類

嵌入式的定義很模糊,尤其是這幾年發(fā)展出眾多的應用形式,讓人摸不著頭腦。對于想進入這個地方的新人,有種望而卻步的感覺。

嵌入式系統(tǒng)分為4層,硬件層、驅動層、操作系統(tǒng)層和應用層。

1、硬件層,是整個嵌入式系統(tǒng)的根本,如果現在單片機接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對容易,硬件層也是驅動層的基礎。

一個優(yōu)秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統(tǒng)內核及其調度性相當的熟悉的。但硬件平臺是基礎,增值還要靠軟件。

硬件層比較適合于,電子、通信、自動化、機電一體、信息工程類專業(yè)的人來搞,需要掌握的專業(yè)基礎知識有,單片機原理及接口技術微機原理及接口技術、C語言。

2、驅動層,這部分比較難。

驅動工程師不僅要能看懂電路圖還要能對操作系統(tǒng)內核十分的精通,以便其所寫的驅動程序在系統(tǒng)調用時,不會獨占操作系統(tǒng)時間片,而導至其它任務不能動行,不懂操作系統(tǒng)內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到。

這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。

想做個好的驅動人員沒有三、四年功底,操作系統(tǒng)內核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中可是最高的。

驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業(yè)尤其是計算機偏體系結構類專業(yè)的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統(tǒng)原理、編譯原理都要十分精通了解。

3、操作系統(tǒng)層

對于操作系統(tǒng)層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統(tǒng),或者寫出缺胳膊少腿的操作系統(tǒng)來,這部分工作大都由驅動工程師來完成。

操作系統(tǒng)是負責系統(tǒng)任務的調試、磁盤和文件的管理,而嵌入式系統(tǒng)的實時性十分重要。據說,XP操作系統(tǒng)是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統(tǒng)估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。

4、應用層,相對來講較為容易的。

如果會在windows下如何進行編程接口函數調用,到操作系統(tǒng)下只是編譯和開發(fā)環(huán)境有相應的變化而已。如果涉及Jave方面的編程也是如此的。

嵌入式系統(tǒng)中涉及算法的由專業(yè)算法的人來處理的,不必歸結到嵌入式系統(tǒng)范疇內。但如果涉及嵌入式系統(tǒng)下面嵌入式數據庫、基于嵌入式系統(tǒng)的網絡編程和基于某此應用層面的協議應用開發(fā)(比如基于SIP、H.323、Astrisk)方面又較為復雜,并且有難度了。

03 嵌入式領域分工的變化

著名嵌入式專家火哥曾經說過,有很多所謂有經驗的人認為,嵌入式底層軟件和硬件技術是不怎么變化的,經驗越多越值錢,越老越吃香。其實這是一種主觀機械而又狹隘的經驗主義,缺乏全局視野,只看到自己所在領域的一些基礎性技術,看不到整個行業(yè)和相關學科領域的變化,一葉障目。

其實就拿現代足球和籃球運動作為類比,也是同樣的道理?,F代足球和籃球的發(fā)展歷史比什么嵌入式軟件,硬件等高科技的發(fā)展史還要長久,那種機械經驗主義狹隘的觀點肯定會認為,打籃球就是學運球,突破,傳球,投籃,踢足球就是學傳球,停球,帶球,鏟球,射門,跑位,這都是50年前甚至100年前就有的東西,和現在一樣是不變的。然后他們沒有看到的是,籃球和足球的戰(zhàn)術和位置分工,每隔5-10年就會發(fā)生很大的變化。

比如籃球領域從之前的強內線,肌肉棒子的中鋒時代演變成小球三分射手時代,內線球員對中遠投和三分球能力要求越來越高,以前那種沒有射程的大個內線越來越不吃香。

足球領域的分工和戰(zhàn)術變化就更多了,從遠古一點巴西群星的424 WM陣型個人技術流到意大利鏈式防守,從經典442陣型,雙前鋒一高一快或者雙高的英式長傳沖吊,到第一代433全攻全守的踢法。從4231傳統(tǒng)的邊鋒加經典10號位前腰和掃蕩防守型后腰再到西班牙式Tiki-Taka傳控足球短傳滲透的盛行,再到現在高位逼搶,經典前腰和防守型后腰的消失,全能型B2B中場的吃香。其它位置的球員,例如,逆足邊鋒內切踢法,偽9號無鋒陣,邊后衛(wèi)對助攻能力要求越來越高,而不只是防守對方邊鋒,中后衛(wèi)對出球能力要求越高,不只是會防守搶斷。而過去那些有了很多成績和榮譽但是位置單一,不符合現代高位逼搶,靈活換位要求的球員,越來越沒有市場。

像現代足球,籃球這種發(fā)展了50年到100年的體育運動,看似不變,實際上都經歷了如此多的戰(zhàn)術和位置分工變化,不同時代對不同位置球員的要求都不一樣,更何況近二三十年經歷了高速發(fā)展的電子信息和嵌入式技術呢?回到正題,分析一下硬件工程師和嵌入式軟件工程師的分工和技能要求變遷。

1. 硬件工程師

一開始沒有集成電路和數字芯片,要設計一個系統(tǒng)需要用三極管,電阻,電容,電感等分立器件來搭,那時候硬件工程師對模擬電路設計的要求是非常高的,既要精通應用業(yè)務邏輯,也要精通模擬電路設計,大家可以看看模電書上經典uC741放大器里面的模擬電路圖的復雜程度。

后來有了小規(guī)模的模擬和數字芯片(比如uc741放大器,74LS04數字門電路,ne555時鐘發(fā)生器),硬件工程師就可以使用這些芯片加上一些外圍電路來搭建自己的系統(tǒng),硬件設計門檻有所降低,做出的產品也更加豐富,但是自己還是要精通應用業(yè)務邏輯。

再到后來,ASIC和大規(guī)模集成電路以及嵌入式編程芯片的出現,很多算法和邏輯控制功能都集成在ASIC芯片里面或者在嵌入式處理器中用編程軟件實現。硬件工程師對業(yè)務應用業(yè)務邏輯的要求大大降低,同時所做的外圍電路設計也越來越少,比如電源方面,可以買TI的開關電源芯片加上少量的外圍電路,就能實現自己高性能開關電源,無需精通里面各種復雜的控制算法和功率因素補償等技術。這個時候,有些硬件工程師開始往單片機編程技能方面發(fā)展,還有一些硬件工程師往EMC,PCIE,WIFI,USB,DDR等數字和模擬等接口標準認證方面發(fā)展,硬件的分工開始細化專業(yè)化。

再到當前,芯片原廠提供的不再僅僅提供單獨的芯片讓硬件工程師設計電路,而是提供現成的基于芯片設計的模塊或者turn key解決方案,即插即用,不需要自走PCB打板的流程,就能快速驗證自己想法和產品方案。并且原廠提供的這些模塊和解決方案,已經做好了安規(guī),車規(guī)與EMC等標準認證,更加降低了硬件開發(fā)的門檻,提高了開發(fā)效率,很多硬件工程師的工作也變成在原廠方案板上修改,驗證,摳掉一些冗余器件節(jié)約成本,或者剩余的時間要負責供應鏈和生產管理相關的工作。而從前那些高深的數字,模擬混合電路,分立器件電路設計技術和經驗顯得無太大用武之地(除了少數芯片設計場合)。

2. 嵌入式軟件工程師

20多年前的嵌入式工程師大部分都是用C語言和匯編在8位單片機上開發(fā)驅動程序和相對簡單的控制和通信系統(tǒng)。那時候單片機功能沒有現在這么高級,里面甚至沒有ADC, PWM等常用模塊,需要搭建很多外圍或者電路來豐富產品的功能。那時候的單片機嵌入式開發(fā)除了要會編程,對硬件也相對較高,要自己設計通用的硬件原理圖,甚至畫2層左右的PCB板,只有碰到電源,射頻,EMC專業(yè)硬件問題的時候,才會需要雇傭專門的硬件工程師來處理。

后來使用復雜一些的32位MCU開發(fā),MCU功能開始變得強大,系統(tǒng)需求也開始復雜化,嵌入式工程師需要開發(fā)多個平臺驅動乃至上位機應用程序,這個時候,公司一般會雇傭專門的硬件工程師做PCB layout和部分原理圖設計工作。嵌入式軟件工程師只需要設計硬件原理圖的核心功能I/O部分,看懂芯片手冊,對嵌入式工程師硬件能力的要求開始降低,大部分精力用于軟件開發(fā)上。

再后來的嵌入式開發(fā)使用DSP處理器和RTOS實時操作系統(tǒng),硬件部分也變得集成度更高更復雜,嵌入式工程師對硬件方面的掌控和要求也越來越低,僅限于看原理圖,配置一些I/O引腳和寄存器,原理圖設計基本都交給專門的硬件工程師。但是嵌入式軟件這塊,做DSP的需要熟悉一些業(yè)務算法,做RTOS的要懂得數據結構,操作系統(tǒng)、計算機網絡方面的知識。驅動開發(fā)也開始變得框架化,模塊化而不僅僅限于裸機開發(fā),配置寄存器和簡單的業(yè)務邏輯。

再到當前,嵌入式大規(guī)模使用SOC,跑Linux/Android等復雜操作系統(tǒng),DSP等專用CPU核也可以集成在SOC中,通過驅動進行調用。嵌入式工程師基本不用參與硬件原理圖設計,硬件能力基本不是啥門檻,只要學過電路,模電,數電等教科書知識,看得懂別人I/O部分的原理圖就行了。讀數據手冊配置修改寄存器的活也只有偶爾會用上,因為芯片原廠和Linux開源社區(qū)為了推廣生態(tài),已經將很多產品級的芯片的驅動程序集成到Linux內核,配置好了寄存器,降低了系統(tǒng)底層軟件的使用門檻(這其中有少數嵌入式工程師在原廠從事門檻較高的專業(yè)領域驅動開發(fā),比如音視頻,GPU,Display,Security等),使得嵌入式工程師把更多的精力集中在具體應用和業(yè)務邏輯開發(fā)上。

通過上述的一次次技術領域分工的變化,使得嵌入式工程師入行門檻和工作重點也發(fā)生了變化,從硬件到原理圖I/O設計,到驅動開發(fā)到應用業(yè)務邏輯??梢哉f每個部分都有它的技術難點,沒有哪個技術比其它技術高尚,我們應該關注當下的重點,善于從各種矛盾中抓主要矛盾,有的放矢地學習提高自己,善于思考主流技術的發(fā)展趨勢和變化,千萬不要被過去的教條所束縛。

04 當前階段嵌入式技術的重難點

著名嵌入式專家火哥認為,當前階段嵌入式技術的重難點有三個方面:

1. 以C/C++語言為主的編程能力。

原本C語言編程也不是啥門檻性的大問題,但是因為國內大部分電子信息專業(yè)都是以C語言入門,然后選用的國產教材質量參差不齊,代碼風格不規(guī)范,這就人為地給入門菜鳥創(chuàng)造了門檻。但是只要肯花時間下功夫,學習豆瓣上推薦的幾本國外經典的C語言教材,進而學習數據結構,面向對象等計算機基礎知識,多練習多寫代碼來熟練編程技巧,火哥相信這個不會是大問題。

C++方面,以前做單片機,做RTOS的老嵌入式工程師可能基本上都是寫C程序,用不上C++。但是現在基于Linux系統(tǒng)的嵌入式開發(fā),重點將會聚焦在復雜業(yè)務邏輯應用編程上。在大規(guī)模復雜業(yè)務邏輯和GUI編程中,使用純C語言已經力不從心,使用C++開發(fā)的嵌入式應用程序的地方將會越來越多。但是C++這個語言本身比較復雜,不能強求像C語言那樣掌握95%以上的特性,C++總會有很多語言特性用不上或者不熟練,需要找到合適的項目,在實踐中反復練習再回頭看書鞏固,循序漸進。熟練掌握C++會需要較長的時間,目前一般的要求是掌握基本的面向過程,面向對象編程的編程方法,多用智能指針,復雜的模板編程能看懂就行,不要求掌握所有奇巧淫技。

2. 對計算機體系結構和操作系統(tǒng)相關問題的掌控能力

這一塊知識算是計算機基礎理論上的難點,雖然相關書籍資料已經汗牛充棟,商業(yè)級的Linux內核源代碼也能從網上下載,但是要啃下它還是需要耐心。很多做單片機裸機,RTOS開發(fā)的嵌入式工程師無法進入Linux開發(fā)的世界,多半也是因為Linux操作系統(tǒng)確實有一定難度。對這一塊知識,其實并不要求你掌握Linux內核每行源碼(這是不可能的),也不要求你能夠獨立寫出一個復雜的產品化的操作系統(tǒng)(也不現實),但是操作系統(tǒng)底層和計算機體系結構基本的工作原理和機制還是要搞清楚,要知道操作系統(tǒng)大概做了什么,是如何處理你的API調用的。

火哥知道這是一塊硬骨頭,但事在人為,有了這么多資料和實驗資料的今天,肯花時間,有耐心,也不應該是大問題。

3. 業(yè)務應用能力

為什么我們需要做嵌入式計算機系統(tǒng),因為嵌入式計算機系統(tǒng)可以根據不同業(yè)務場景需求進行裁剪和定制。說到底,業(yè)務才是嵌入式系統(tǒng)真正的命根子,不同業(yè)務方向嵌入式工程師薪資差異可能會比較大(當然在少數公司,開發(fā)操作系統(tǒng)也屬于他們的業(yè)務)。在企業(yè)有話語權有地位的嵌入式工程師所掌握的業(yè)務技能一定和企業(yè)當前盈利的業(yè)務方向高度匹配,充分滿足企業(yè)的業(yè)務需求。

當前嵌入式軟件工程師要想提高收入,一定要跟著主流有盈利能力的業(yè)務走,提升相關的業(yè)務應用技能。當然很多細分業(yè)務,不去相關的企業(yè)是根本沒有機會接觸的,熱門業(yè)務相關的高級資料也不是能夠通過網絡和入門培訓視頻輕易獲得。所以說當前階段的業(yè)務門檻才是嵌入式在不同領域的真正門檻。學會自己分析,把握當前主流前沿的業(yè)務方向,有的放矢地學習提升自己,讓自己掌握的知識發(fā)揮最大的“錢”力。

05 如何調整自己的學習和職業(yè)發(fā)展方向

著名嵌入式專家火哥分析了嵌入式領域的現狀和重難點之后,那么嵌入式工程師調整自己的學習和職業(yè)方向,有以下三點:

1. 不用過于糾結硬件門檻與寄存器配置

毛選《矛盾論》告訴我們事物的背后要搞清楚哪些是主要矛盾,哪些是次要矛盾,處理問題要善于抓主要矛盾。

同理,在當前的嵌入式學習和開發(fā)中,硬件門檻與寄存器配置已經不再是主要矛盾,而是影響你解決問題眾多次要矛盾之一。真正的主要矛盾是應用業(yè)務開發(fā),是對操作系統(tǒng)工作流程的掌控,讓操作系統(tǒng)能夠很好地支持和配合應用業(yè)務實現系統(tǒng)的功能。

那么對待硬件和寄存器配置,固然還是要以客觀嚴謹的態(tài)度分析和解決相關的問題,但是不要把太多時間花在硬件原理和數據手冊寄存器的學習上,否則這將是一個高投入,低產出的工作?;鸶缯J為硬件相關問題,嵌入式工程師能把大概定位出來,交給專業(yè)的硬件工程師處理就行。這點對硬件知識的要求只需要懂得教科書上基本模擬和數字電路知識就行,相對于自己獨立設計硬件電路,通過各種標準認證的要求完全不是一個層次的。

2. 不能把編程僅限于嵌入式端

目前的嵌入式復雜業(yè)務應用編程和PC端,服務器應用編程的界限其實越來越模糊。嵌入式端應用編程除了某些時候需要利用一些平臺特有的硬件和驅動特性,來提升和優(yōu)化程序性能之外,大部分的工作也是堆業(yè)務邏輯代碼,只是在不同平臺上堆業(yè)務代碼,用不同的編譯器編譯而已。

從編程的角度考慮,就不要把編程范圍僅僅限制在嵌入式端,在以應用業(yè)務為中心的前提下,可以主動嘗試開發(fā)PC端,服務器端甚至web端的應用程序,還可以把在PC端,服務器端編程用到的新技術因地制宜地移植部署到嵌入式端,做到取長補短的作用,同時也把自己的職業(yè)道路越走越寬。

目前,嵌入式端也引入了python編程搭建整套自動化測試系統(tǒng),很多嵌入式端的測試用例也是用python編寫的。很多做STM32, RTOS開發(fā)的嵌入式工程師,也不僅限于嵌入式端編程了,因為他們開發(fā)的產品很多需要通過物聯網接入到云端服務器,有時候他們也要兼顧一些云服務器的應用業(yè)務邏輯以及云端和嵌入式端通信協議開發(fā)的工作,不再是以前傳統(tǒng)意義上的嵌入式開發(fā)工程師。

按照這個發(fā)展潮流和趨勢,火哥可以預言,未來的對嵌入式工程師的技能要求將會弱化硬件技能,在有扎實的操作系統(tǒng)基本功前提下,以業(yè)務導向的應用編程為核心,有云端服務器到嵌入式終端的端到端垂直開發(fā)能力。

3. 跳槽的時候要有業(yè)務升級意識

最后就是要有目的地跳槽,不只是考慮薪資問題,更要考慮下一份工作能接觸到的業(yè)務知識是不是主流賺錢的業(yè)務,未來有沒有賺錢的盈利模式,能不能讓自己的路越走越寬?平時多關注招聘網站的需要,看看什么樣的公司,什么樣的業(yè)務提供的招聘需求是最多的,要敢于和打價格戰(zhàn),不賺錢的業(yè)務和公司說再見,及時跳坑。不要把時間耗在了重復性基礎性工作(比如火哥鄙視的萬年嵌入式點燈,spi,i2c開發(fā))和不盈利的業(yè)務上。

06 嵌入式er要有“一技之長”

有這樣一個問題:掃大街重不重要?毫無疑問對于一個城市,這是份至關重要的工作。想想看,如果北京上海紐約東京這樣的大城市一個月沒有人清掃,試想想會出現什么后果。試想想會有多少瘟疫流行,又會有多少人會死于非命。遺憾的是,對于這么重要的一份工作,許多國家都沒有給出一個好的報酬,城市的保潔員往往只能得到最低的薪水。

你可以說一萬個“不合理”,但還是解決不了問題。你也可以爭取做國會議員,建立新的法案去改變這種這種不合理,但最后你會發(fā)現自己無功而返。

“就這么多錢,你干不干;你不干,大把的人干?!焙唵蔚恼f:是因為保潔工作所需要的技能太容易被替代。

做工程師也一樣,不僅是IT領域,其他任何領域都一樣。如果咱們不具備特殊的技能,就是說,沒有一技之長,那么我們怎么能夠夢想得到和別人不一樣的待遇呢?同樣一件事,我請個月薪3000元的新畢業(yè)生就能夠做,我為什么要花1W5, 2W去請一個七八年工作經驗的人呢?我傻嗎?我錢沒地方燒嗎?

有許多朋友,大學畢業(yè)六七年了,面試的時候問他的技術特長是什么,有的理直氣壯,有的甚至還猶豫了半天,才說出來:“C語言”、“Java語言”!試想想,“xx語言”好的人這個世界上有多少,在北大青鳥培訓個十七八個月,是不是“xx語言”會足夠強,咱們和他們比有什么優(yōu)勢?

對于自己的優(yōu)勢,這些朋友表達不出來,或者不準確。說白了,就是平時在這方面思考得太少了,因此,自己給自己引導得太少了,幾年的功夫,一直隨波逐流了。

要搞技術,從走出大學的第一天起,甚至在大學畢業(yè)之前,就要清楚,自己的“一技之長”究竟應該建立在哪里。只有這樣,才能明確奮斗和努力的方向,進而才有機會把握自己命運,主張自己的價值。

僅僅就嵌入式開發(fā)而言,咱們來看看怎么做這個選擇。

首先,我們宏觀上看看這個領域一般是怎么劃分職責的。

產品經理:公司做什么樣的產品、在什么時間能夠賺多少錢,產品經理必須準確定位出來,否則整個公司都在瞎忙乎。產品經理的核心價值在于準確的產品定義。

項目經理:整個產品的QCT。產品定義與產品的商業(yè)計劃確定以后,關鍵就在于產品的實現。項目經理的職責在于控制、協調、執(zhí)行好產品的開發(fā),使產品準時上市(T),同時滿足公司的質量標準(Q)和成本要求(C)。

技術專家:產品需要某個功能,它屬于自己負責的領域,技術專家必須給出技術方案,指導該功能的實現,保證該功能的實現滿足產品的QCT。

系統(tǒng)構架師:負責產品整個系統(tǒng)的構架和實現方式。保證產品的質量和產品開發(fā)的效率。構架師往往還必須考慮開發(fā)成果的復用。

軟件工程師:交付功能塊的代碼,保證質量、工期和效率。保證自己交付的代碼有效的實現了要求的功能,bug少,容易維護。

接口工程師:協調軟件部門與其他部門、以及外包單位之間的互動,保證產品開發(fā)的QCT。

開發(fā)環(huán)境工程師:保證開發(fā)工具、糾錯工具等開發(fā)環(huán)境的質量,保證團隊的效率。

開發(fā)流程改善專員:緊盯組織內外部的協作、保證開發(fā)流程的順利實施、領導開發(fā)流程的改善,改善組織的開發(fā)效率。

測試工程師:負責產品的驗證。開發(fā)出來的產品是否符合產品的定義,是否符合業(yè)界的標準,保證產品的質量,并且不斷提高測試的效率、縮短測試周期。

質量專員:負責產品的質量和流程的質量,應對與總結產品出廠后的質量問題,并通過流程改善來杜絕同類性質問題的重復發(fā)生。

部門經理:調配部門的資源保證公司所有產品的QCT;招聘、培養(yǎng)員工以保證部門具備足夠的能力滿足公司不斷變化的需求。

這里羅列了一大堆堆教科書里頭寫了一萬遍的角色??墒牵蹅冏约旱降紫氤蔀槭裁礃拥慕巧??要成為這樣的角色,到底需要一些什么樣的技能,或者“一技之長”,咱們仔細的研究過嗎?仔細的研究了以后,針對咱們自己仔細的規(guī)劃過嗎?仔細的規(guī)劃過了,咱們隨機應變的執(zhí)行過嗎?

如果都沒有,那么,老不給咱們漲工資,咱們有次沒次的跳槽,能跳好嗎?

搞技術,人生無非是如下的五條出路:

一、做技術專家,做到李政道、錢偉長或者Linus Torvalds的水平;

二、技術管理,瞄準Ray Ozzie那樣的角色,當公司的高管;

三、自己創(chuàng)業(yè);

四、技術市場、技術營銷:雖然不搞技術了,但是懂得如何推銷技術;

五、改行。

在達到這些位置之前,我們要經歷上一篇所列的形形色色的角色。

本篇就是要仔細挖掘一下,一個嵌入式的從業(yè)者所需要的技術和技能,看看應該從什么樣的角度來建立“一技之長”。

我們先拋開個人素質和商業(yè)素養(yǎng),以后找機會談。

做為一名技術人員,應該怎樣選擇“技術專長”的成長之路?非常容易迷惑,這是一個事實。發(fā)達國家把它做為一項國家工程,各自研究了一套技能體系,并結合資格認定,引導工程師自我成長。就我所知道的范圍來說,英國、美國、日本等國政府都有一套體系。這里我想把這些國家現有的分類體系,結合我自己的體會,介紹給大家。

首先,我們可以把技術分成三大類:

一、開發(fā)技術

二、領域技術

三、管理技術

在這里先羅列一下這三大類的分法。

開發(fā)技術指的是完成一個大規(guī)模的軟件開發(fā)工程所必備的技術,比如系統(tǒng)需求分析、系統(tǒng)設計、軟件需求分析、軟件模式設計、軟件詳細設計、代碼編寫與測試、代碼集成(Integration)、軟件檢驗(Validation)、系統(tǒng)集成、系統(tǒng)檢驗等各個環(huán)節(jié)所需要的工具、模式、流程和知識。

管理技術指的是項目管理和流程管理所必備的技術,比如分工管理、時間管理、成本管理、質量管理、溝通管理、采購管理、風險管理、人員與組織管理等等屬于項目管理技術;而變更管理、配置管理、開發(fā)環(huán)境管理、開發(fā)流程選定、知識產權管理等等則屬于流程管理的范疇。

領域技術指的是平臺技術、界面技術、通信技術、多媒體技術、存儲技術、傳感與控制技術、信息處理技術、應用技術等等。

從這樣的分法我們得到的啟發(fā)是,不管自己將來要成為專家還是高管,開發(fā)技術和管理技術大部分都是必須掌握的?!拔摇钡摹安豢商娲浴币欢ㄊ窃陬I域技術中去找的。如果某一項領域技術在公司里能夠做到數一數二,咱們在那個公司才是不可替代,因為把握替代掉要花更大的代價。如果咱某項技術能夠在行業(yè)中能夠做到數一數二,那么你就具備了成為“Ray Ozzie”的基本條件。

能夠做到數一數二的,做到不可替代,一個公司里就那么多。如果退而求其次,就是做個“牛人”。上面羅列了不同角色,咱們可以成為這些角色的“牛人”。成為各種“牛人”分別需要在哪些方面牛呢?以后有機會再說吧。今天先把領域技術分解一下:

一、平臺技術包括

1. 特定的處理器,比如對ARM處理器、TI的DSP或者NVidia的GPU等等的全面掌握

2. 特定的操作系統(tǒng),比如對Nucleus,Rex OS,Linux等等內核的掌控。

3. 特定的軟件框架,比如Java VM等VM,特定的應用框架比如GNOME、KDE的掌控(太大了 :-

二、界面技術

1.輸入處理:通過人類的動作產生的輸入處理比如按鍵、觸屏、氣味、聲波、G-Sensor、 GPS信號等等信息輸入的處理技術。

2.輸出處理:顯示、聲音、振動、氣味、光亮。由于GUI通常涉及到輸入輸出,我們把GUI技術劃在界面技術當中,比如透徹掌控X-Windows,GTK+, Match box, mini-GUI等等。嚴格講的,界面技術指的是針對一個特定的功能,用軟件去設計、實現一整套操作、反饋流程,使用戶既容易學、又容易記。從這種意義上看,GUI應該屬于平臺技術,因為GUI是實現用戶操作流程的平臺。

三、通信技術

1. ISO 1~7 層通信模型某幾個層面的設計、實現和維護。由于無線通信涉及物理層到網絡層的變化,通常分有線、無線通信技術。GSM協議棧、TCP/IP協議棧、TD-SCDMA協議棧都是通信技術范疇。

2. 無線廣播技術:DVB-T/H, T-DMB, CMMB等等都是無線廣播技術

3. 互聯網技術:這里指的是TCP層以上通信協議,比如HTTP, IMAP, POP3, SMTP,FTP等等技術。

四、多媒體技術

1. 聲音壓縮與解壓縮技術:MP3, AAC, AMR等等

2. 圖片壓縮與解壓縮技術: PNG, GIF, JPEG等等

3. 影視壓縮與解壓縮技術:H.263, H.264, MPEG4等等

五、存儲技術

1.文件系統(tǒng):FAT32, EXT3,JFFS等等

2.媒體技術:內存、閃存、磁盤等等物理媒體特性的掌控

3.存儲接口技術:熱插拔、冷插拔設備的接口技術

六、傳感與控制技術

1.物理化學量輸入技術:電位、電流、振動、光、壓力等物理化學量的計量技術

2.物理化學量輸出與控制技術:電磁、光、熱、速度、振動、坐標等物理化學量輸出技術

七、信息處理技術

1. 信息輸入技術:數據輸入、聲音輸入等等信息輸入技術

2. 信息安全技術:加密、解密技術

3. 數據處理技術:數據壓縮與解壓縮技術、嵌入式數據庫技術

4. 信息輸出技術:Postscript語言,XML語言,SVG等等通用信息格式輸出技術

八、應用技術,特定目的的應用軟件的實現,它們往往是如上七類技術的綜合應用,比如

1. 瀏覽器

2. 消息類應用:e-mail, IMPS, MMS, SMS等等

3. VoIP應用

4. 視頻通話

5. 媒體播放器

以上八大方面,每一個方面都夠咱們干一輩子的。羅列了這么多,希望能夠給各位有志于加入嵌入式軟件開發(fā)的朋友,大學畢業(yè)后剛剛走上社會的朋友,畢業(yè)后做了許多年軟件覺得不知道自己該怎么發(fā)展的朋友,或者自以為嵌入式就那么回事的朋友,提供一個思考的線索。參考這個分類,理出自己發(fā)展的路子。

大學畢業(yè)后五年內,我們通常是“干一行愛一行”。

大學畢業(yè)五年以后,希望自己能夠做到“愛一行干一行”!

07

嵌入式Linux進階流程

一、練好基本功

嵌入式系統(tǒng)專業(yè)是綜合了計算機硬件技術,計算機軟件技術以及電子電路技術的一門綜合學科,所涉及的內涵和知識非常廣泛,包括:數字電路,模擬電路,計算機組成原理,單片機基礎,C語言基礎,操作系統(tǒng),數據結構,編譯原理,計算機控制,計算機網絡等知識。

在真正學習嵌入式開發(fā)之前,首先要打好基礎。其中最重要的是C語言基礎、數字電路、計算機組成原理三門課程。對于C語言,至少能單獨編寫調試一個3 ~ 500行的程序,能夠了解C語言的基本語法規(guī)則,基本語句的使用,理解指針概念并能靈活使用各種指針。

計算機組成原理要能理解組成一個計算機系統(tǒng)的幾大部件,計算機系統(tǒng)的結構,理解系統(tǒng)總線,理解處理器和計算機外部設備的關系,處理器和計算機外設是如何協調工作完成某一項功能的,計算機軟件和硬件是如何分工協作完成某一項任務的,理解軟件是通過寄存器來控制硬件的。

數字電路,模擬電路要了解其基本原理個概念,能看懂簡單模擬、數字電路原理圖。理解數字電路中的寄存器,時序的概念,能看懂芯片手冊和時序圖。對于其他基礎課程,重點要理解其中的一些基本概念,如何使用等等。

對于電子,自動化,通信,計算機類專業(yè)的學生,在大二、大三開設的專業(yè)基礎或專業(yè)課程中基本包含了以上的大部分課程。因為缺乏實踐,可能學得不是很深入,但是一些基本的概念和基本知識應該還是有所了解,針對一些薄弱環(huán)節(jié),自己稍微加強學習一下,基本上已經具備了學習嵌入式開發(fā)的基礎。

在嵌入式基本功學習階段,最重要的是C語言和單片機基礎,最好是能用C語言開發(fā)一個小的單片機程序,例如用C語言實現單片機和PC的串口通信,用C語言控制LED等顯示,用C語言控制數碼管顯示等小程序。在這個期間需要的學習工具就是單片機51學習開發(fā)板。推薦飛凌的OK-51學習開發(fā)板。詳情參考:

二、嵌入式linux應用開發(fā)

嵌入式開發(fā)基礎知識學習完后,這時候你已經有了一定的嵌入式開發(fā)基礎了,可以進行基于單片機的嵌入式系統(tǒng)設計了。

單片機編程本身也是屬于嵌入式編程,但是在這里我們只是把單片機開發(fā)當作嵌入式系統(tǒng)開發(fā)的基礎,不把單片機開發(fā)作為真正的嵌入式系統(tǒng)開發(fā),在這里我們的嵌入式系統(tǒng)開發(fā)是指在帶有操作系統(tǒng)的嵌入式平臺上的應用和驅動開發(fā),特別指在嵌入式linux平臺上的開發(fā)。

單片機開發(fā)在很早以前是非常熱門的,現在在一些比較簡單的系統(tǒng)上單片機也用的非常廣泛,隨著硬件的成本不斷降低,在一些比較復雜的嵌入式設備一般都采用嵌入式linux操作系統(tǒng),在嵌入式linux平臺上進行開發(fā),這樣可以極大的提高嵌入式開發(fā)效率,提高系統(tǒng)的穩(wěn)定性和可靠性,降低開發(fā)成本。

由于linux是一個開源的操作系統(tǒng),你可以通過閱讀linux內核來理解內核的實現機制,如果有需要,你甚至可以通過修改內核源碼來提高系統(tǒng)的性能;同時,全球參與linux開發(fā)的隊伍非常龐大,網上有大量的嵌入式linux開發(fā)資料和源代碼,很多你需要實現的功能在網上基本都能找到相關源碼,參考一下別人寫的源碼,這樣可以極大的提高自己的工作效率和技術能力。

近幾年,隨著參與linux開發(fā)的人越來越多,linux系統(tǒng)的穩(wěn)定性、實時性有了很大的提高,linux系統(tǒng)無論在服務器上還是嵌入式設備平臺上都應用越來越廣泛,現在包括華為、中興、朗訊的各大通信巨頭都開始把自己設備的底層平臺從vxworks操作系統(tǒng)遷移到linux系統(tǒng),可以說嵌入式linux是嵌入式技術發(fā)展一個方向,是嵌入式技術的一面旗幟。

基于以上原因,我的建議是學嵌入式開發(fā),就學嵌入式linux開發(fā),相對于wince等其他的嵌入式平臺,你可以真正學到更多的東西,學到嵌入式技術的精髓,同時他又符合嵌入式產業(yè)發(fā)展的方向,不容易被日新月異的技術發(fā)展所淘汰。

有了嵌入式開發(fā)的基礎,又知道了我們?yōu)槭裁匆獙W習嵌入式linux開發(fā),那我們就要開始動手開始學習了,那如何開始學習嵌入式linux開發(fā),從哪里開始著手呢?

做任何事情都有一個循序漸進的過程,學習嵌入式linux也一樣。在有了一定的嵌入式開發(fā)基礎后,學習嵌入式linux開發(fā)比較適合的切入點是從嵌入式linux應用程序開發(fā)開始,即暫時先不去關心嵌入式硬件平臺,不去關心linux的底層驅動,先把精力集中在現有的嵌入式linux平臺上進行嵌入式linux應用程序設計開發(fā)。

學習嵌入式linux開發(fā)絕不是看看書就可以學好的,需要多實踐,編程調試;因為嵌入式開發(fā)不同于普通的基于PC機或服務器的應用程序開發(fā),嵌入式開發(fā)的應用程序是要燒寫到嵌入式板卡或開發(fā)板上運行的,所以首先你要給自己購買一塊開發(fā)板。

有了開發(fā)板后,先后開始學習嵌入式linux開發(fā)環(huán)境搭建、嵌入式linux開發(fā)模型、linux內核移植和文件系統(tǒng)、嵌入式linux應用程序移植、嵌入式linux多進程,多線程應用程序設計、嵌入式linux網絡編程,如果對嵌入式數據庫或圖形軟件開發(fā)有興趣的,可以進一步學習嵌入式linux數據庫開發(fā)或基于QT的嵌入式linux圖形應用軟件設計。

每學一章節(jié)都要通過相關實驗來來驗證你從書上學到的東西,同時提高自己編寫代碼,調試程序的能力。這個過程根據不同學員的基礎不同,大概要花上1 ~ 2個月時間。

學完這些課程后,你就有了再現有的嵌入式linux平臺上進行應用程式設計開發(fā)的能力,到一些嵌入式軟件公司去,能夠勝任在現有的嵌入式linux平臺上進行上層的應用程序開發(fā)工作。但是目前你還不能進行嵌入式linux系統(tǒng)和驅動的開發(fā),也就是說,你現在只能在一個已經構建好的嵌入式linux平臺上進行應用程序開發(fā),而自己還沒有能力根據實際需要去重新構建一個嵌入式linux平臺。

要讓自己有能力根據實際需要重新構建一個嵌入式linux軟硬件平臺,這時候就需要進行下一階段的學習了,即嵌入式linux系統(tǒng)和驅動開發(fā)。

三、嵌入式Linux系統(tǒng)和驅動開發(fā)

有了嵌入式linux平臺上開發(fā)應用程序的基礎,你已經對linux的功能、linux對應用程序提供的接口和系統(tǒng)調用有了一定的了解,知道如何利用linux提供的功能來進行應用程序開發(fā),知道如何來使用設備驅動來進行應用程序設計,有了這些知識后,你就可以更深入的去學習Linux系統(tǒng)原理和基于Linux驅動的開發(fā),Linux內核的裁剪,文件系統(tǒng)構,bootloader等等底層的知識了。

想要更深入學習嵌入式Linux系統(tǒng)和驅動開發(fā),要學的內容非常多包括計算機軟件、硬件、操作系統(tǒng)知識。這時候你可以參照以下的學習思路,因為嵌入式Linux系統(tǒng)和驅動的開發(fā),和底層硬件聯系非常緊密,所以首先我們從學習了解嵌入式硬件開始,包括:ARM體系架構、S3C2440微處理器接口設計、時鐘系統(tǒng)、LCD屏接口、存儲控制器及系統(tǒng)的存儲空間分配、NAND FLASH接口和NOR FLASH接口等。

對嵌入式系統(tǒng)硬件有了一定的了解后,接下來就可以開始學習bootloader了,理解bootloader的概念,功能,和原理,重點掌握U-BOOT的使用和移植。接下來就開始學習嵌入式linux內核機制,分析嵌入式Linux源碼組成、內核的模塊機制、內核進程管理、內存管理機制、linux的中斷系統(tǒng)、Linux內核的移植等。有了內核的基礎,就可以學習嵌入式Linux設備驅動開發(fā)了,重點掌握字符設備驅動開發(fā),LCD屏設備驅動開發(fā)、觸摸屏設備驅動開發(fā)、USB設備驅動開發(fā),網卡設備驅動開發(fā)。

學完這些知識點并通過相關實驗驗證后,嵌入式Linux系統(tǒng)和驅動的開發(fā)就算掌握了差不多了,能夠勝任絕大部分基于linux平臺的驅動開發(fā)工作了。學完這些知識點,根據學員的不同情況,一般需要花三個月到半年時間。通過這一階段的學習,你在嵌入式Linux開發(fā)領域已經算是有了一定的功底,已經不再被人稱為菜鳥了,已經進入嵌入式linux開發(fā)高手行列了。

四、更上一層樓

深入理解了嵌入式內核和驅動開發(fā),這時候寫個什么驅動對你已經沒有什么問題了,開發(fā)過程中一些基本問題都難不倒你了。這是你可能想優(yōu)化一下系統(tǒng)的性能,比如實時性,提高系統(tǒng)的啟動速度,或者優(yōu)化系統(tǒng)的內存管理機制,要達到修改內核核心機制的境界,你就需要去深入去研讀linux內核源碼了,參考《linux源碼深度分析》、《linux情景分析等》等linux源碼分析的書籍,深入理解linux各部分的實現機制和原理,以及可能存在的問題。

你只有在深入理解現有代碼和實現機制的基礎上,才能提出更好的改進方案。如果你能達到這個境界,那你已經是高手中的高手,可以笑傲群雄了。

五、誤區(qū)

1、全身投入學習桌面或服務器版本linux系統(tǒng)

Linux桌面環(huán)境只是嵌入式linux的一個開發(fā)工具,開發(fā)環(huán)境而已。我們的目標不是學習linux服務器的配置和使用,linux服務器的高級配置和使用那是另外一個領域,不屬于嵌入式linux討論的范疇。

我們進行嵌入式linux開發(fā),只是把linux桌面環(huán)境當作一個工具,在linux桌面環(huán)境下運行嵌入式linux開發(fā)工具,例如gcc 編譯器,make工具來開發(fā)我們的嵌入式linux應用程序而已,對于嵌入式開發(fā)工程師來說,沒有必要花費那么多的精力和時間去研究linux桌面版和服務器的應用,只要能了解最基本的操作即可?,F在的桌面linux系統(tǒng)的圖形化界面做的也相當好,跟window具有相同的易用性能,例如ubuntu很多操作都可以在圖形界面下完成,就沒有必要去記每個linux命令了。熟悉linux桌面系統(tǒng)的使用和基本操作命令,安排1~2天時間學習基本就可以掌握了。

2、直接閱讀linux內核源代碼

很多想學linux,在連linux是什么東西,一點都還不會使用的情況下去就閱讀linux內核源代碼,花了大量時間去閱讀《linux源碼深度分析》、《linux情景分析等》等書。這樣的結果很可能就是看的頭昏眼花,不知所云,最后只能放棄了。

這也是同學們學習嵌入式linux的一個誤區(qū),在有一定嵌入式linux開發(fā)基礎后,帶著一定的目的去閱讀linux源代碼,這樣可以極大的提高你的技術能力,但是你在沒有任何基礎,對linux一點都不了解的情況下就去閱讀linux內核源代碼,無異于以卵擊石,最后只能是撞個頭破血流。

3、對于初學者來講,要量力而行。

不要認為驅動層工資高就把它當成方向了,要結合自身特點,嵌入式系統(tǒng)四個層面上那個層面上來講都是有高人存在,當然高人也對應的高工資,我是做硬件層的,以前每月工資中個人所得稅要被扣上近3千大元,當然我一方面充當工程師的角色,一方面充當主管及人物的角色,兩個職位我一個人干,但上班時間就那些。硬件這方面上可能與我PK的人很少了,才讓我拿到那么多的工資

4、開發(fā)系統(tǒng)選擇。

很多ARM初學者都希望有一套自己能用的系統(tǒng),但他們住住會產生一種錯誤認識就是認為處理器版本越高、性能越高越好,就象很多人認為ARM9與ARM7好,我想對于初學者在此方面以此入門還應該理智,開發(fā)系統(tǒng)的選擇最終要看自己往嵌入式系統(tǒng)的那個方向上走,是做驅動開發(fā)還是應用,還是做嵌入式系統(tǒng)硬件層設計與板級測試。

如果想從操作系統(tǒng)層面或應用層面上走,不管是驅動還是應用,那當然處理器性能越高越好了,但這個東西自學,有十分大的困難,不是幾個月或半年或是一年二年能搞定的事。

08 嵌入式行業(yè)的一些預測看法

從關注上游半導體公司的角度,來說一下對嵌入式行業(yè)的預測:

(一)嵌入式的發(fā)展大方向-SoC將是主流

當前的主流可以按照兩個類型進行分割:裸機系列和有系統(tǒng)系列。第一種,裸機系列很容易理解,比如C51、MSP430、PIC這樣的品種繁多的單片機,開發(fā)過程和方法基本相同,使用半導體廠商提供的BSP包,按照手冊進行寄存器配置,對周圍數字芯片的各個協議工作方式了解,就能解決一些功能單一的需求;跑系統(tǒng)系列基本上就是Linux、Android這樣的非實時操作系統(tǒng)和一些實時操作系統(tǒng),操作系統(tǒng)的多任務、完善管理機制就開始談及芯片的架構和指令,PowerPC、ARM,MIPS等等等,這些處理器芯片常常用于解決復雜的需求,并將需求定制交給熟悉業(yè)務和技術的嵌入式應用工程師或者CS行業(yè)工程師,這樣就可以完美和計算機開發(fā)者相結合制造出多種多樣的功能設備。這樣看的話,操作系統(tǒng)可以說是在嵌入式行業(yè)和計算機行業(yè)打通的一個橋梁。

傳統(tǒng)的嵌入式基本上就是這樣的,稍微的預測一下呢?

C51、MSP430、PIC這類的開發(fā)必定會淘汰,不是說它們不夠鋒利,而是由半導體行業(yè)的特性所決定的。半導體器件生產成本是按照規(guī)生產模數量所攤薄的,生產的越多,需求越多,成本越低,未來基于MSP430、C51的這樣的實時性稍微有松弛的場景,也會可能選擇一個ARM的以Cortex-M為核心的處理器(arm的授權費真的低到不行了,真算是業(yè)界良心),生產規(guī)模上升,成本則下降,且方便日后擴展,再然后Cortex-M核心arm公司也是在不斷投入成本優(yōu)化,上上的選擇。

從裸機的發(fā)展上我們就可以看到一個發(fā)展方向,SoC模式的思想。核心架構交給專業(yè)的公司去做,自己公司做擅長的一塊,然后這些功能部件全部都集成在一個芯片里。比如,今年參加的arm公司關于芯片IP的培訓,也認真聽了一些新的創(chuàng)業(yè)半導體公司的介紹,學習到了很多,也打開了我另一個世界的大門。其中在一個物聯網案例中,有一個公司他們是做NB無線傳輸的,處理器核心采用的是arm公司的,他還特意感謝了arm公司,arm公司在提供demo評估自己芯片到流片的時候是不收費用的,量產后才交費用,這大大的降低了做企業(yè)的風險。

這個公司選擇arm公司成熟的cortex-a系列處理器的核心的方案,自己專注做NB無線基帶,調制解調算法MAC層,最后融合成一個芯片,然后流片,回片測試。這是一個物聯網的芯片的案例,用的就是SoC模式。SoC模式將一整套系統(tǒng)做成一個芯片,就好像曾經把復雜的巨大模電數電的放大電路做成芯片一樣。在物聯網的應用上,嵌入式SoC,未來必然成趨勢,嵌入式和物聯網的關系實際上大家都清楚,很不負責任和不準確的說,嵌入式+CS+互聯網,上中下組成的大規(guī)模網絡可叫物聯網,嵌入式在物聯網布局中處于底層的地位,大規(guī)模布局這就有體積小、壽命長、低功耗這些基本要求,SoC模式肯定是首選,缺不了處理器,缺不了無線,做進一個芯片不剛剛好麼。

談到SoC 模式,很多人都覺得大部分工作量其實在半導體上,嵌入式軟件開發(fā)似乎沒有用武之地,其實不然,反而對于嵌入式軟件開發(fā)的要求又更上了一層樓。就說一個例子,多核、多層的SoC早在零幾年的時候有這樣成型的產品,比如TI公司的OMAPL138,DSP(C6748)+ARM(ARM9)架構的,在嵌入式軟件上,面臨的難以解決的問題就是核間通信,DSP和ARM如何通信,包括現在有名的ZYNQ,FPGA+ARM的多核異構平臺,多核心之間通信如何解決,這始終需要去解決,還有,英偉達的TX2,SoC級上面ARM Cortex-A5x系列+自己的GPU。很多人采用的是Linux內核里面一個模型,IPC,常常用在裸機上。如果上操作系統(tǒng),Linux系統(tǒng)對于多核異構的通信,TI使用syslink驅動級的組件,zynq采用ram內存讀取的方法反包裝出接口。這些開發(fā)對于多核通信應用級的都很難,更別說開發(fā)出這樣的BSP支持的了。

未來嵌入式,不單單是對于傳統(tǒng)的CPU+外設模塊,通過外設總線驅動讀取外部數據,而是打入到芯片內部,一塊芯片,即一個系統(tǒng)。而開發(fā)的重點,也不單單是傳統(tǒng)的那些嵌入式的知識,還要包含半導體SoC的知識。驅動開發(fā)需求會加大,嵌入式將越來越集成化,越來越脫離周邊硬件,且深度整合,由外向內發(fā)展,SoC將是主流。

(二)Linux內核重要性與嵌入式應用工程師的危機

應對上面SoC的發(fā)展趨勢,一個單純的嵌入式軟件工程師已經滿足不了需求,也隨著技術迭代,這些名稱的定義又賦予新的意義,這些傳統(tǒng)的技能已跟不上潮流,身為行業(yè)人也要跟著風頭做出轉變。嵌入式是一個要不斷學習不斷反思的路線,個人的技術樹上還要不斷的開枝散葉,越來越集成化的開發(fā)平臺過時的很快,就要求我們開出的技能枝葉更多,所以不能拘泥于某個公司的某個產品上,不能以C語言為天,但也應該注重基礎。

Linux內核好厚的一本書,翻開第一頁的前言那個作者告訴我們這還不是全部,如果把內核全部都寫成書是不可能,只能去學習介紹最核心的東西。對于Linux內核,可以毫無遮掩的說這是全天下最好的工程師編寫的最好的代碼,一手的好學習資料。我們學習內核不是要學習內核怎么編寫,而是要掌握里面的模型和機制,分頁、內核調度和內存管理、死鎖等等,這些機制模型可以嵌套在我們的任何解決方案中,就比如上面異構多核通信的機制,使用的IPC概念反復在Linux內核中出現,在某些場景下就可以抽象成一些模型。當然了,以上說的只是內核的附帶的好處,最重要的就是,Linux內核和處理器核心深深綁定,Linux驅動和SoC周邊綁定。從這句話中,你是否能體會到,現在的嵌入式開發(fā)是,物理上用外設總線和外設相連,然后編寫C語言程序,然后燒寫到FLASH里,然后去驅動外設傳感器實現某一個功能;而未來的嵌入式開發(fā)在SoC上都是一個芯片內,即將依托操作系統(tǒng),開發(fā)將要不斷的深入內核中和修改Linux驅動去實現功能,留出接口,高度集成之后那些應用層的開發(fā)東西交由CS去做,實現業(yè)務層面的黏連,出現了不同以往的分工。

所以所謂的嵌入式應用工程師,這個職位很可能在未來會消失不見,這就是高級程度的體現后的變化。

嵌入式開發(fā)的門檻即將越來越高,階級也將割裂,產生一個涇渭分明的分水嶺,嵌入式和CS那些模糊不清的界限也會逐漸清晰。我舉個例子,我真的很久很久沒用STM32了,有幸參加了意法半導體組織的全國巡回一個會議,意法的工程師給我們展示了他們公司可視化開發(fā)的操作,鼠標一點那個引腳,時鐘多少,用了什么外設,啟動多少定時器,哪個會沖突,然后生成代碼,這樣向導式生成的代碼又好用又標準。那一刻感慨道,還要嵌入式應用工程師做什么呢?點點鼠標錢就賺到了??蛇@件事情怎么可能,當意法開發(fā)出這樣的工具時候,自己的芯片好賣了,一部分人樂了,一部分人也哭了。甄嬛傳里面,姐姐殺了姐姐,這個也一樣,程序員讓程序員失業(yè),挺搞笑的,也挺殘酷的。是的,意法半導體這個已經能體現出對于裸機開發(fā)的風氣,TI的網頁版配置方法都不需要你下載任何軟件。因此你也可以看到,處于上游公司的職位一定程度上可以決定下游公司職位的命運。

嵌入式進程不斷的進化,學習量也會迅猛增加,既然SoC前景這么好,直接從SoC學起可否?可要知道,在這個混沌不清的嵌入式年代,都要一步步學上來,硬件還是從電阻電容,然后到數字電路、單片機;軟件還是要從printf hello world,到指針結構體,甚至要學C++;理論還是要數據結構到一些常規(guī)算法;Linux系統(tǒng)還是要從熟練應用到研究它的內核。一步都不能少。這也正是嵌入式所謂坑的一點原因吧,但還是中國老祖宗那種辯證思想,塞翁失馬焉知非福,學這么多門檻也高,將來分水嶺一形成,你來決定別人的命運,而學習少且賺錢的維持不了幾年肯定人也是膨脹,尋常人不走的路才有好風景呀,相信你總有怡然自得和慶幸的時段。還有對于嵌入式行業(yè)把脈的人,預測其藥丸,實際上還不如說他們看到的是靜態(tài)的嵌入式,怎么說,就好比蛇脫皮,留下干涸的一層蛇形的皮,真身早跑了。嵌入式的概念也會隨著時代遷移且與時俱進,形式也會變換,它是活的,不是固定的。

我們通過觀察最上游的半導體公司,就能看出未來發(fā)展的路徑,而看現在剛需的那些一列列職位看不出什么的。忘記誰跟我說的了,上游決定下游,且有一定的延遲,這個延遲時間正是給你的時間,否則就會被無情的淘汰掉。

所以給的建議是在下游公司做嵌入式應用的人做好應對,能上系統(tǒng)就上系統(tǒng)。

(三)一分感慨:那些“刻苦人”的思維定式

我可以大言不慚的說自己是一個比較刻苦的人吧,學業(yè)時段基本上沒有什么娛樂項目,都是敲代碼焊板子看看行業(yè)趨勢這類的,就希望有朝一日進入職場里面能“笨鳥先飛”。其實這樣或多或少的產生了一種思維定式,包括進入職場,我無法忘記曾經那些努力,不希望那些努力白費去從事一個完全陌生還有些許相關的職位,這樣就會錯過很多的機會。這種把持著的安全感實際上也不是很好,也非常希望那些刻苦的職場新人能夠大膽的去嘗試,open自己,畢竟在學校的眼界是狹窄的,我們也只是按照自己的路子和道聽途書的路子再走,可實際面對自己的道路是不盡相同,機會也不盡相同。放棄自己所學是艱難的,可有的時候真的需要勇敢邁出這一步,去體驗新的平臺的知識,其實到最后發(fā)現,學習能力是關鍵的,自己曾經學的到后來都是相通的,沒有白不白學一說??赡?,我在學校學習的是嵌入式軟件開發(fā),可公司要求我學習半導體里面的ip知識,是有些許關聯,但不應該去拒絕,而應該大膽嘗試,畢竟公司平臺要高于當時你的眼界,當時也是懷揣著對現在生活的猜想去努力的,現在到了這個平臺上就該接受一切現實,努力踏實工作,而不是放不下過去。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5174

    文章

    19967

    瀏覽量

    324300
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11186

    瀏覽量

    221225
  • 運算器
    +關注

    關注

    1

    文章

    164

    瀏覽量

    16911
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    盤點嵌入式就業(yè)所需要的技能有哪些?

    來說,嵌入式就業(yè)方向無疑提供了廣闊的職業(yè)發(fā)展空間和無限的創(chuàng)新可能。接下來,我們將深入探討嵌入式就業(yè)的方向,分析不同領域的就業(yè)機會,并指出每個方向所需的關鍵技能,以幫助求職者更好地規(guī)劃
    發(fā)表于 08-11 15:43

    入行嵌入式應該怎么準備?

    任務調度的代碼是非常重要的。此外,了解操作系統(tǒng)內核的工作原理以及與硬件交互的方式也是必須的。 四、通信協議嵌入式系統(tǒng)通常需要與其他設備或系統(tǒng)進行通信。了解常見的通信協議(如UART、SPI、I2C
    發(fā)表于 08-06 10:34

    河北軟件職業(yè)技術學院走訪飛凌嵌入式,共同探討產教融合新模式

    河北軟件職業(yè)技術學院軟件工程系主任陳輝率隊走訪保定飛凌嵌入式技術有限公司,并與旗下教育品牌ElfBoard就產教融合、構建協同育人機制進行了深入探討。
    的頭像 發(fā)表于 07-09 09:00 ?895次閱讀
    河北軟件<b class='flag-5'>職業(yè)</b>技術學院走訪飛凌<b class='flag-5'>嵌入式</b>,共同探討產教融合新模式

    河北軟件職業(yè)技術學院走訪飛凌嵌入式,共同探討產教融合新模式

    6月12日,河北軟件職業(yè)技術學院軟件工程系主任陳輝率隊走訪保定飛凌嵌入式技術有限公司,并與旗下教育品牌ElfBoard就產教融合、構建協同育人機制進行了深入探討。雙方旨在通過深化校企合作,共同探索
    的頭像 發(fā)表于 06-16 11:00 ?803次閱讀
    河北軟件<b class='flag-5'>職業(yè)</b>技術學院走訪飛凌<b class='flag-5'>嵌入式</b>,共同探討產教融合新模式

    入行嵌入式難度大不大?

    技術的不斷進步,嵌入式工程師需要不斷學習新的技術,如人工智能、物聯網等。同時,提升自己的項目經驗和解決問題的能力,也有助于提高薪資待遇和職業(yè)發(fā)展空間。 (四)感興趣入行 如果你對嵌入式領域感興趣,那么
    發(fā)表于 04-17 10:14

    如何成為一名嵌入式軟件工程師?

    系統(tǒng)架構:能夠設計合理的系統(tǒng)架構,實現模塊間的解耦和高效的數據交互。 性能優(yōu)化:通過算法優(yōu)化、資源分配等手段,提升系統(tǒng)的處理速度和穩(wěn)定性。 03看透未來發(fā)展趨勢與職業(yè)規(guī)劃職業(yè)規(guī)劃方面,建議嵌入式
    發(fā)表于 04-15 14:37

    嵌入式去哪個城市好?

    區(qū)和孵化器,為嵌入式開發(fā)企業(yè)提供了良好的發(fā)展空間。 在選擇城市時,除了考慮城市的嵌入式技術發(fā)展水平和市場需求外,還需要結合個人的實際情況、職業(yè)規(guī)劃以及生活成本等因素進行綜合考慮。綜上
    發(fā)表于 04-02 10:12

    Python在嵌入式系統(tǒng)中的應用場景

    你想把你的職業(yè)生涯提升到一個新的水平?Python在嵌入式系統(tǒng)中正在成為一股不可缺少的新力量。盡管傳統(tǒng)上嵌入式開發(fā)更多地依賴于C和C++語言,Python的優(yōu)勢在于其簡潔的語法、豐富的庫和快速的開發(fā)周期,這使得它在某些
    的頭像 發(fā)表于 03-19 14:10 ?1004次閱讀

    嵌入式主板的概述與發(fā)展

    未來發(fā)展趨勢進行深入探討。嵌入式主板的基本概念嵌入式主板是指為嵌入式系統(tǒng)設計的電路板,它通常集成了微處理器、內存、輸入輸出接口等關鍵組件。與一般的計算機主板相比,嵌
    的頭像 發(fā)表于 01-13 16:30 ?1001次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發(fā)展

    哪些專業(yè)適合學習嵌入式開發(fā)?

    哪些專業(yè)適合學習嵌入式開發(fā)? 在傳統(tǒng)行業(yè)不斷被取代的當下,對于大學生、從業(yè)者而言,選擇一個熱門主流的職業(yè)方向,是未來發(fā)展的關鍵因素之一。 嵌入式作為當下高薪崗位之一,轉行、轉專業(yè)的人群已經占據求職
    發(fā)表于 01-03 13:44

    嵌入式好找工作嗎?

    嵌入式好找工作嗎? 在當今科技飛速發(fā)展的時代,眾多新興職業(yè)領域不斷涌現,嵌入式也是很多人選擇職業(yè)發(fā)展方向時的一個選項。那么,學嵌入式好找工
    發(fā)表于 12-16 15:43

    如何使用 RISC-V 進行嵌入式開發(fā)

    RISC-V是一種開源的指令集架構(ISA),它允許任何人設計、制造和銷售基于RISC-V的處理器,這為嵌入式開發(fā)提供了極大的靈活性和創(chuàng)新空間。以下是使用RISC-V進行嵌入式開發(fā)的基本步驟: 一
    的頭像 發(fā)表于 12-11 17:32 ?2471次閱讀

    面試嵌入式都會問那些問題呢?

    作為一名電子工程專業(yè)的畢業(yè)生,我對嵌入式系統(tǒng)開發(fā)一直充滿熱情。當我決定踏入這個行業(yè),尋找屬于自己的職業(yè)道路時,面試成為了我必須面對的挑戰(zhàn)。在這里,我想分享一些我在嵌入式系統(tǒng)面試中遇到的問題以及我的應對經驗。
    的頭像 發(fā)表于 11-27 09:13 ?1007次閱讀
    面試<b class='flag-5'>嵌入式</b>都會問那些問題呢?

    嵌入式職業(yè)規(guī)劃雜談 如何學習與職業(yè)規(guī)劃

    ---本章為初學者介紹可能的職業(yè)發(fā)展路線,讓初學者對整個行業(yè)有所了解,對自身發(fā)展有所參考。 如何學習與職業(yè)規(guī)劃 仔細觀察一下周圍的電子設備,比如包里的手機,戴著的手環(huán),開著的空調;家里的洗衣機
    的頭像 發(fā)表于 11-25 09:53 ?1325次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>職業(yè)規(guī)劃</b>雜談 如何學習與<b class='flag-5'>職業(yè)規(guī)劃</b>

    嵌入式學習路線,大學四年規(guī)劃:從大一小白到嵌入式大佬

    開始就沒有一個很清晰的職業(yè)定位以及針對性的學習規(guī)劃。對于電子、通信、計算機、軟件工程、自動化、嵌入式、物聯網等專業(yè)的學生來說,如果將來你想從事技術開發(fā)方向的工作,
    的頭像 發(fā)表于 10-18 16:26 ?1199次閱讀
    <b class='flag-5'>嵌入式</b>學習路線,大學四年<b class='flag-5'>規(guī)劃</b>:從大一小白到<b class='flag-5'>嵌入式</b>大佬