女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

Wildesbeast ? 來源:今日頭條 ? 作者:布道師Peter ? 2020-02-17 16:43 ? 次閱讀

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

主要從三個(gè)方面上來理解:

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

比如早期基于X86體系結(jié)構(gòu)下的計(jì)算機(jī),CPU只是有運(yùn)算器和累加器的功能。

一切芯片要造外部橋路來擴(kuò)展實(shí)現(xiàn),像串口之類的都是靠外部的16C550/2的串口控制器芯片實(shí)現(xiàn)。

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

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

IXP系列最高主頻可以達(dá)到1.8G,支持2G內(nèi)存,1G×10或10G×1的以太網(wǎng)口或Febre channel的光通道。

IXP系列應(yīng)該是目標(biāo)基于ARM體系統(tǒng)結(jié)構(gòu)下由intel進(jìn)行整合后成Xscale內(nèi)核的最高的處理器了。

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

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

3、把軟件內(nèi)核或應(yīng)用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺(tái)中的ROM中就實(shí)現(xiàn)了一個(gè)真正的“嵌入”。

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

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

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

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

1、硬件層,是整個(gè)嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機(jī)接口這塊很熟悉,并且能用C和匯編語(yǔ)言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對(duì)容易,硬件層也是驅(qū)動(dòng)層的基礎(chǔ)。

一個(gè)優(yōu)秀的驅(qū)動(dòng)工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設(shè)計(jì)的,同時(shí)還要對(duì)操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜さ摹5布脚_(tái)是基礎(chǔ),增值還要靠軟件。

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

2、驅(qū)動(dòng)層,這部分比較難。

驅(qū)動(dòng)工程師不僅要能看懂電路圖還要能對(duì)操作系統(tǒng)內(nèi)核十分的精通,以便其所寫的驅(qū)動(dòng)程序在系統(tǒng)調(diào)用時(shí),不會(huì)獨(dú)占操作系統(tǒng)時(shí)間片,而導(dǎo)至其它任務(wù)不能動(dòng)行,不懂操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時(shí)調(diào)度性,沒有良好的驅(qū)動(dòng)編寫風(fēng)格,按大多數(shù)書上所說添加的驅(qū)動(dòng)的方式,很多人都能做到,但可能連個(gè)初級(jí)的驅(qū)動(dòng)工程師的水平都達(dá)不到。

這樣所寫的驅(qū)動(dòng)在應(yīng)用調(diào)用時(shí)就如同windows下我們打開一個(gè)程序運(yùn)行后,再打開一個(gè)程序時(shí),要不就是中斷以前的程序,要不就是等上一會(huì)才能運(yùn)行后來打開的程序。

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

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

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

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

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

4、應(yīng)用層,相對(duì)來講較為容易的。

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

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

03 嵌入式領(lǐng)域分工的變化

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

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

比如籃球領(lǐng)域從之前的強(qiáng)內(nèi)線,肌肉棒子的中鋒時(shí)代演變成小球三分射手時(shí)代,內(nèi)線球員對(duì)中遠(yuǎn)投和三分球能力要求越來越高,以前那種沒有射程的大個(gè)內(nèi)線越來越不吃香。

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

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

1. 硬件工程師

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

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

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

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

2. 嵌入式軟件工程師

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

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

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

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

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

04 當(dāng)前階段嵌入式技術(shù)的重難點(diǎn)

著名嵌入式專家火哥認(rèn)為,當(dāng)前階段嵌入式技術(shù)的重難點(diǎn)有三個(gè)方面:

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

原本C語(yǔ)言編程也不是啥門檻性的大問題,但是因?yàn)閲?guó)內(nèi)大部分電子信息專業(yè)都是以C語(yǔ)言入門,然后選用的國(guó)產(chǎn)教材質(zhì)量參差不齊,代碼風(fēng)格不規(guī)范,這就人為地給入門菜鳥創(chuàng)造了門檻。但是只要肯花時(shí)間下功夫,學(xué)習(xí)豆瓣上推薦的幾本國(guó)外經(jīng)典的C語(yǔ)言教材,進(jìn)而學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),面向?qū)ο蟮扔?jì)算機(jī)基礎(chǔ)知識(shí),多練習(xí)多寫代碼來熟練編程技巧,火哥相信這個(gè)不會(huì)是大問題。

C++方面,以前做單片機(jī),做RTOS的老嵌入式工程師可能基本上都是寫C程序,用不上C++。但是現(xiàn)在基于Linux系統(tǒng)的嵌入式開發(fā),重點(diǎn)將會(huì)聚焦在復(fù)雜業(yè)務(wù)邏輯應(yīng)用編程上。在大規(guī)模復(fù)雜業(yè)務(wù)邏輯和GUI編程中,使用純C語(yǔ)言已經(jīng)力不從心,使用C++開發(fā)的嵌入式應(yīng)用程序的地方將會(huì)越來越多。但是C++這個(gè)語(yǔ)言本身比較復(fù)雜,不能強(qiáng)求像C語(yǔ)言那樣掌握95%以上的特性,C++總會(huì)有很多語(yǔ)言特性用不上或者不熟練,需要找到合適的項(xiàng)目,在實(shí)踐中反復(fù)練習(xí)再回頭看書鞏固,循序漸進(jìn)。熟練掌握C++會(huì)需要較長(zhǎng)的時(shí)間,目前一般的要求是掌握基本的面向過程,面向?qū)ο缶幊痰木幊谭椒ǎ嘤?a target="_blank">智能指針,復(fù)雜的模板編程能看懂就行,不要求掌握所有奇巧淫技。

2. 對(duì)計(jì)算機(jī)體系結(jié)構(gòu)和操作系統(tǒng)相關(guān)問題的掌控能力

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

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

3. 業(yè)務(wù)應(yīng)用能力

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

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

05 如何調(diào)整自己的學(xué)習(xí)和職業(yè)發(fā)展方向

著名嵌入式專家火哥分析了嵌入式領(lǐng)域的現(xiàn)狀和重難點(diǎn)之后,那么嵌入式工程師調(diào)整自己的學(xué)習(xí)和職業(yè)方向,有以下三點(diǎn):

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

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

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

那么對(duì)待硬件和寄存器配置,固然還是要以客觀嚴(yán)謹(jǐn)?shù)膽B(tài)度分析和解決相關(guān)的問題,但是不要把太多時(shí)間花在硬件原理和數(shù)據(jù)手冊(cè)寄存器的學(xué)習(xí)上,否則這將是一個(gè)高投入,低產(chǎn)出的工作。火哥認(rèn)為硬件相關(guān)問題,嵌入式工程師能把大概定位出來,交給專業(yè)的硬件工程師處理就行。這點(diǎn)對(duì)硬件知識(shí)的要求只需要懂得教科書上基本模擬和數(shù)字電路知識(shí)就行,相對(duì)于自己獨(dú)立設(shè)計(jì)硬件電路,通過各種標(biāo)準(zhǔn)認(rèn)證的要求完全不是一個(gè)層次的。

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

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

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

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

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

3. 跳槽的時(shí)候要有業(yè)務(wù)升級(jí)意識(shí)

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

06 嵌入式er要有“一技之長(zhǎng)”

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

你可以說一萬(wàn)個(gè)“不合理”,但還是解決不了問題。你也可以爭(zhēng)取做國(guó)會(huì)議員,建立新的法案去改變這種這種不合理,但最后你會(huì)發(fā)現(xiàn)自己無(wú)功而返。

“就這么多錢,你干不干;你不干,大把的人干。”簡(jiǎn)單的說:是因?yàn)楸嵐ぷ魉枰募寄芴菀妆惶娲?/p>

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

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

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

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

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

首先,我們宏觀上看看這個(gè)領(lǐng)域一般是怎么劃分職責(zé)的。

產(chǎn)品經(jīng)理:公司做什么樣的產(chǎn)品、在什么時(shí)間能夠賺多少錢,產(chǎn)品經(jīng)理必須準(zhǔn)確定位出來,否則整個(gè)公司都在瞎忙乎。產(chǎn)品經(jīng)理的核心價(jià)值在于準(zhǔn)確的產(chǎn)品定義。

項(xiàng)目經(jīng)理:整個(gè)產(chǎn)品的QCT。產(chǎn)品定義與產(chǎn)品的商業(yè)計(jì)劃確定以后,關(guān)鍵就在于產(chǎn)品的實(shí)現(xiàn)。項(xiàng)目經(jīng)理的職責(zé)在于控制、協(xié)調(diào)、執(zhí)行好產(chǎn)品的開發(fā),使產(chǎn)品準(zhǔn)時(shí)上市(T),同時(shí)滿足公司的質(zhì)量標(biāo)準(zhǔn)(Q)和成本要求(C)。

技術(shù)專家:產(chǎn)品需要某個(gè)功能,它屬于自己負(fù)責(zé)的領(lǐng)域,技術(shù)專家必須給出技術(shù)方案,指導(dǎo)該功能的實(shí)現(xiàn),保證該功能的實(shí)現(xiàn)滿足產(chǎn)品的QCT。

系統(tǒng)構(gòu)架師:負(fù)責(zé)產(chǎn)品整個(gè)系統(tǒng)的構(gòu)架和實(shí)現(xiàn)方式。保證產(chǎn)品的質(zhì)量和產(chǎn)品開發(fā)的效率。構(gòu)架師往往還必須考慮開發(fā)成果的復(fù)用。

軟件工程師:交付功能塊的代碼,保證質(zhì)量、工期和效率。保證自己交付的代碼有效的實(shí)現(xiàn)了要求的功能,bug少,容易維護(hù)。

接口工程師:協(xié)調(diào)軟件部門與其他部門、以及外包單位之間的互動(dòng),保證產(chǎn)品開發(fā)的QCT。

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

開發(fā)流程改善專員:緊盯組織內(nèi)外部的協(xié)作、保證開發(fā)流程的順利實(shí)施、領(lǐng)導(dǎo)開發(fā)流程的改善,改善組織的開發(fā)效率。

測(cè)試工程師:負(fù)責(zé)產(chǎn)品的驗(yàn)證。開發(fā)出來的產(chǎn)品是否符合產(chǎn)品的定義,是否符合業(yè)界的標(biāo)準(zhǔn),保證產(chǎn)品的質(zhì)量,并且不斷提高測(cè)試的效率、縮短測(cè)試周期。

質(zhì)量專員:負(fù)責(zé)產(chǎn)品的質(zhì)量和流程的質(zhì)量,應(yīng)對(duì)與總結(jié)產(chǎn)品出廠后的質(zhì)量問題,并通過流程改善來杜絕同類性質(zhì)問題的重復(fù)發(fā)生。

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

這里羅列了一大堆堆教科書里頭寫了一萬(wàn)遍的角色。可是,咱們自己到底想成為什么樣的角色?要成為這樣的角色,到底需要一些什么樣的技能,或者“一技之長(zhǎng)”,咱們仔細(xì)的研究過嗎?仔細(xì)的研究了以后,針對(duì)咱們自己仔細(xì)的規(guī)劃過嗎?仔細(xì)的規(guī)劃過了,咱們隨機(jī)應(yīng)變的執(zhí)行過嗎?

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

搞技術(shù),人生無(wú)非是如下的五條出路:

一、做技術(shù)專家,做到李政道、錢偉長(zhǎng)或者Linus Torvalds的水平;

二、技術(shù)管理,瞄準(zhǔn)Ray Ozzie那樣的角色,當(dāng)公司的高管;

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

四、技術(shù)市場(chǎng)、技術(shù)營(yíng)銷:雖然不搞技術(shù)了,但是懂得如何推銷技術(shù);

五、改行。

在達(dá)到這些位置之前,我們要經(jīng)歷上一篇所列的形形色色的角色。

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

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

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

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

一、開發(fā)技術(shù)

二、領(lǐng)域技術(shù)

三、管理技術(shù)

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

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

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

領(lǐng)域技術(shù)指的是平臺(tái)技術(shù)、界面技術(shù)、通信技術(shù)、多媒體技術(shù)、存儲(chǔ)技術(shù)、傳感與控制技術(shù)、信息處理技術(shù)、應(yīng)用技術(shù)等等。

從這樣的分法我們得到的啟發(fā)是,不管自己將來要成為專家還是高管,開發(fā)技術(shù)和管理技術(shù)大部分都是必須掌握的。“我”的“不可替代性”一定是在領(lǐng)域技術(shù)中去找的。如果某一項(xiàng)領(lǐng)域技術(shù)在公司里能夠做到數(shù)一數(shù)二,咱們?cè)谀莻€(gè)公司才是不可替代,因?yàn)榘盐仗娲粢ǜ蟮拇鷥r(jià)。如果咱某項(xiàng)技術(shù)能夠在行業(yè)中能夠做到數(shù)一數(shù)二,那么你就具備了成為“Ray Ozzie”的基本條件。

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

一、平臺(tái)技術(shù)包括

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

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

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

二、界面技術(shù)

1.輸入處理:通過人類的動(dòng)作產(chǎn)生的輸入處理比如按鍵、觸屏、氣味、聲波、G-Sensor、 GPS信號(hào)等等信息輸入的處理技術(shù)。

2.輸出處理:顯示、聲音、振動(dòng)、氣味、光亮。由于GUI通常涉及到輸入輸出,我們把GUI技術(shù)劃在界面技術(shù)當(dāng)中,比如透徹掌控X-Windows,GTK+, Match box, mini-GUI等等。嚴(yán)格講的,界面技術(shù)指的是針對(duì)一個(gè)特定的功能,用軟件去設(shè)計(jì)、實(shí)現(xiàn)一整套操作、反饋流程,使用戶既容易學(xué)、又容易記。從這種意義上看,GUI應(yīng)該屬于平臺(tái)技術(shù),因?yàn)镚UI是實(shí)現(xiàn)用戶操作流程的平臺(tái)。

三、通信技術(shù)

1. ISO 1~7 層通信模型某幾個(gè)層面的設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)。由于無(wú)線通信涉及物理層到網(wǎng)絡(luò)層的變化,通常分有線、無(wú)線通信技術(shù)。GSM協(xié)議棧、TCP/IP協(xié)議棧、TD-SCDMA協(xié)議棧都是通信技術(shù)范疇。

2. 無(wú)線廣播技術(shù):DVB-T/H, T-DMB, CMMB等等都是無(wú)線廣播技術(shù)

3. 互聯(lián)網(wǎng)技術(shù):這里指的是TCP層以上通信協(xié)議,比如HTTP, IMAP, POP3, SMTP,FTP等等技術(shù)。

四、多媒體技術(shù)

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

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

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

五、存儲(chǔ)技術(shù)

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

2.媒體技術(shù):內(nèi)存、閃存、磁盤等等物理媒體特性的掌控

3.存儲(chǔ)接口技術(shù):熱插拔、冷插拔設(shè)備的接口技術(shù)

六、傳感與控制技術(shù)

1.物理化學(xué)量輸入技術(shù):電位、電流、振動(dòng)、光、壓力等物理化學(xué)量的計(jì)量技術(shù)

2.物理化學(xué)量輸出與控制技術(shù):電磁、光、熱、速度、振動(dòng)、坐標(biāo)等物理化學(xué)量輸出技術(shù)

七、信息處理技術(shù)

1. 信息輸入技術(shù):數(shù)據(jù)輸入、聲音輸入等等信息輸入技術(shù)

2. 信息安全技術(shù):加密、解密技術(shù)

3. 數(shù)據(jù)處理技術(shù):數(shù)據(jù)壓縮與解壓縮技術(shù)、嵌入式數(shù)據(jù)庫(kù)技術(shù)

4. 信息輸出技術(shù):Postscript語(yǔ)言,XML語(yǔ)言,SVG等等通用信息格式輸出技術(shù)

八、應(yīng)用技術(shù),特定目的的應(yīng)用軟件的實(shí)現(xiàn),它們往往是如上七類技術(shù)的綜合應(yīng)用,比如

1. 瀏覽器

2. 消息類應(yīng)用:e-mail, IMPS, MMS, SMS等等

3. VoIP應(yīng)用

4. 視頻通話

5. 媒體播放器

以上八大方面,每一個(gè)方面都?jí)蛟蹅兏梢惠呑拥摹A_列了這么多,希望能夠給各位有志于加入嵌入式軟件開發(fā)的朋友,大學(xué)畢業(yè)后剛剛走上社會(huì)的朋友,畢業(yè)后做了許多年軟件覺得不知道自己該怎么發(fā)展的朋友,或者自以為嵌入式就那么回事的朋友,提供一個(gè)思考的線索。參考這個(gè)分類,理出自己發(fā)展的路子。

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

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

07

嵌入式Linux進(jìn)階流程

一、練好基本功

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

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

計(jì)算機(jī)組成原理要能理解組成一個(gè)計(jì)算機(jī)系統(tǒng)的幾大部件,計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu),理解系統(tǒng)總線,理解處理器和計(jì)算機(jī)外部設(shè)備的關(guān)系,處理器和計(jì)算機(jī)外設(shè)是如何協(xié)調(diào)工作完成某一項(xiàng)功能的,計(jì)算機(jī)軟件和硬件是如何分工協(xié)作完成某一項(xiàng)任務(wù)的,理解軟件是通過寄存器來控制硬件的。

數(shù)字電路,模擬電路要了解其基本原理個(gè)概念,能看懂簡(jiǎn)單模擬、數(shù)字電路原理圖。理解數(shù)字電路中的寄存器,時(shí)序的概念,能看懂芯片手冊(cè)和時(shí)序圖。對(duì)于其他基礎(chǔ)課程,重點(diǎn)要理解其中的一些基本概念,如何使用等等。

對(duì)于電子,自動(dòng)化,通信,計(jì)算機(jī)類專業(yè)的學(xué)生,在大二、大三開設(shè)的專業(yè)基礎(chǔ)或?qū)I(yè)課程中基本包含了以上的大部分課程。因?yàn)槿狈?shí)踐,可能學(xué)得不是很深入,但是一些基本的概念和基本知識(shí)應(yīng)該還是有所了解,針對(duì)一些薄弱環(huán)節(jié),自己稍微加強(qiáng)學(xué)習(xí)一下,基本上已經(jīng)具備了學(xué)習(xí)嵌入式開發(fā)的基礎(chǔ)。

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

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

嵌入式開發(fā)基礎(chǔ)知識(shí)學(xué)習(xí)完后,這時(shí)候你已經(jīng)有了一定的嵌入式開發(fā)基礎(chǔ)了,可以進(jìn)行基于單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)了。

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

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

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

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

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

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

做任何事情都有一個(gè)循序漸進(jìn)的過程,學(xué)習(xí)嵌入式linux也一樣。在有了一定的嵌入式開發(fā)基礎(chǔ)后,學(xué)習(xí)嵌入式linux開發(fā)比較適合的切入點(diǎn)是從嵌入式linux應(yīng)用程序開發(fā)開始,即暫時(shí)先不去關(guān)心嵌入式硬件平臺(tái),不去關(guān)心linux的底層驅(qū)動(dòng),先把精力集中在現(xiàn)有的嵌入式linux平臺(tái)上進(jìn)行嵌入式linux應(yīng)用程序設(shè)計(jì)開發(fā)。

學(xué)習(xí)嵌入式linux開發(fā)絕不是看看書就可以學(xué)好的,需要多實(shí)踐,編程調(diào)試;因?yàn)榍度胧介_發(fā)不同于普通的基于PC機(jī)或服務(wù)器的應(yīng)用程序開發(fā),嵌入式開發(fā)的應(yīng)用程序是要燒寫到嵌入式板卡或開發(fā)板上運(yùn)行的,所以首先你要給自己購(gòu)買一塊開發(fā)板。

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

每學(xué)一章節(jié)都要通過相關(guān)實(shí)驗(yàn)來來驗(yàn)證你從書上學(xué)到的東西,同時(shí)提高自己編寫代碼,調(diào)試程序的能力。這個(gè)過程根據(jù)不同學(xué)員的基礎(chǔ)不同,大概要花上1 ~ 2個(gè)月時(shí)間。

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

要讓自己有能力根據(jù)實(shí)際需要重新構(gòu)建一個(gè)嵌入式linux軟硬件平臺(tái),這時(shí)候就需要進(jìn)行下一階段的學(xué)習(xí)了,即嵌入式linux系統(tǒng)和驅(qū)動(dòng)開發(fā)。

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

有了嵌入式linux平臺(tái)上開發(fā)應(yīng)用程序的基礎(chǔ),你已經(jīng)對(duì)linux的功能、linux對(duì)應(yīng)用程序提供的接口和系統(tǒng)調(diào)用有了一定的了解,知道如何利用linux提供的功能來進(jìn)行應(yīng)用程序開發(fā),知道如何來使用設(shè)備驅(qū)動(dòng)來進(jìn)行應(yīng)用程序設(shè)計(jì),有了這些知識(shí)后,你就可以更深入的去學(xué)習(xí)Linux系統(tǒng)原理和基于Linux驅(qū)動(dòng)的開發(fā),Linux內(nèi)核的裁剪,文件系統(tǒng)構(gòu),bootloader等等底層的知識(shí)了。

想要更深入學(xué)習(xí)嵌入式Linux系統(tǒng)和驅(qū)動(dòng)開發(fā),要學(xué)的內(nèi)容非常多包括計(jì)算機(jī)軟件、硬件、操作系統(tǒng)知識(shí)。這時(shí)候你可以參照以下的學(xué)習(xí)思路,因?yàn)榍度胧絃inux系統(tǒng)和驅(qū)動(dòng)的開發(fā),和底層硬件聯(lián)系非常緊密,所以首先我們從學(xué)習(xí)了解嵌入式硬件開始,包括:ARM體系架構(gòu)、S3C2440微處理器接口設(shè)計(jì)、時(shí)鐘系統(tǒng)、LCD屏接口、存儲(chǔ)控制器及系統(tǒng)的存儲(chǔ)空間分配、NAND FLASH接口和NOR FLASH接口等。

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

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

四、更上一層樓

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

你只有在深入理解現(xiàn)有代碼和實(shí)現(xiàn)機(jī)制的基礎(chǔ)上,才能提出更好的改進(jìn)方案。如果你能達(dá)到這個(gè)境界,那你已經(jīng)是高手中的高手,可以笑傲群雄了。

五、誤區(qū)

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

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

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

2、直接閱讀linux內(nèi)核源代碼

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

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

3、對(duì)于初學(xué)者來講,要量力而行。

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

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

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

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

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

從關(guān)注上游半導(dǎo)體公司的角度,來說一下對(duì)嵌入式行業(yè)的預(yù)測(cè):

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

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

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

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

從裸機(jī)的發(fā)展上我們就可以看到一個(gè)發(fā)展方向,SoC模式的思想。核心架構(gòu)交給專業(yè)的公司去做,自己公司做擅長(zhǎng)的一塊,然后這些功能部件全部都集成在一個(gè)芯片里。比如,今年參加的arm公司關(guān)于芯片IP的培訓(xùn),也認(rèn)真聽了一些新的創(chuàng)業(yè)半導(dǎo)體公司的介紹,學(xué)習(xí)到了很多,也打開了我另一個(gè)世界的大門。其中在一個(gè)物聯(lián)網(wǎng)案例中,有一個(gè)公司他們是做NB無(wú)線傳輸?shù)模幚砥骱诵牟捎玫氖莂rm公司的,他還特意感謝了arm公司,arm公司在提供demo評(píng)估自己芯片到流片的時(shí)候是不收費(fèi)用的,量產(chǎn)后才交費(fèi)用,這大大的降低了做企業(yè)的風(fēng)險(xiǎn)。

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

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

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

(二)Linux內(nèi)核重要性與嵌入式應(yīng)用工程師的危機(jī)

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

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

所以所謂的嵌入式應(yīng)用工程師,這個(gè)職位很可能在未來會(huì)消失不見,這就是高級(jí)程度的體現(xiàn)后的變化。

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

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

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5141

    文章

    19526

    瀏覽量

    314883
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11033

    瀏覽量

    215978
  • 運(yùn)算器
    +關(guān)注

    關(guān)注

    1

    文章

    164

    瀏覽量

    16744
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    入行嵌入式難度大不大?

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

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

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

    嵌入式去哪個(gè)城市好?

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

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

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

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

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

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

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

    學(xué)嵌入式好找工作嗎?

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

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

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

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

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

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

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

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計(jì)算機(jī)硬件,其設(shè)計(jì)旨在嵌入特定設(shè)備中執(zhí)行專門任務(wù)。嵌入式主板如同是設(shè)備的“大腦”,主要功能是根據(jù)需要管理和控制設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?1487次閱讀

    該走純軟還是嵌入式

    選擇純軟件開發(fā)還是嵌入式開發(fā),取決于個(gè)人的興趣、職業(yè)規(guī)劃、技能特長(zhǎng)以及行業(yè)趨勢(shì)等多個(gè)因素。以下是對(duì)兩個(gè)領(lǐng)域的簡(jiǎn)要分析和對(duì)比,以幫助您做出決策。
    的頭像 發(fā)表于 09-04 09:32 ?1121次閱讀
    該走純軟還是<b class='flag-5'>嵌入式</b>?

    學(xué)習(xí)hypervisor嵌入式產(chǎn)品安全設(shè)計(jì)

    、PRTOS的配套工具等內(nèi)容。第三部分(第13~15章)介紹嵌入式Hypervisor的高級(jí)應(yīng)用和未來規(guī)劃,涵蓋μC/OS-II與Linux內(nèi)核的虛擬化過程,以及PRTOS社區(qū)的愿景等內(nèi)容。
    發(fā)表于 08-25 09:11

    如何提升嵌入式編程能力?

    其他硬件的數(shù)據(jù)手冊(cè),了解其特性和編程接口。 6. 學(xué)習(xí)低級(jí)編程:嵌入式編程常常需要直接與硬件交互,因此學(xué)習(xí)如何進(jìn)行低級(jí)編程,如結(jié)構(gòu)體、枚舉類型、指針操作、位操作、內(nèi)存映射I/O等。 7. 掌握C
    發(fā)表于 06-21 10:01

    嵌入式軟件工程師如何提升自己?

    的基礎(chǔ) 嵌入式軟件工程師需要具備扎實(shí)的計(jì)算機(jī)科學(xué)和工程知識(shí)。因此,在職業(yè)生涯的起步階段,建議將重點(diǎn)放在學(xué)習(xí)基礎(chǔ)知識(shí)上,包括數(shù)據(jù)結(jié)構(gòu)、算法、操作系統(tǒng)、編程語(yǔ)言等。通過深入學(xué)習(xí)這些基礎(chǔ)知識(shí),打下堅(jiān)實(shí)的理論基礎(chǔ),為將來
    發(fā)表于 06-12 11:20