小編語:經(jīng)濟(jì)下行,企業(yè)裁員,所謂穩(wěn)定的工作,從來都是偽命題。學(xué)無止境,在技術(shù)快速發(fā)展的今天,每一個(gè)技術(shù)人,都需要有在穩(wěn)定中嗅到危機(jī)的自覺,都要主動去擁抱新技術(shù),有意識的為自己打造全能型人才的未來職場競爭力!
華清遠(yuǎn)見嵌入式實(shí)訓(xùn)營里就有很多這樣的學(xué)員。小編發(fā)現(xiàn),選擇來華清遠(yuǎn)見培訓(xùn)的在職人員也越來越多,大部分都是為了提升自己的技能儲備。他們有的是原來做硬件工程師的,現(xiàn)在想提升做嵌入式硬件工程師。有的是公司做新能源汽車的,涉及到嵌入式技術(shù),需要自己學(xué)習(xí)的。有的是事業(yè)單位公務(wù)員,時(shí)間很充足,想提升個(gè)人業(yè)務(wù)學(xué)習(xí)嵌入式。有的是做軟件開發(fā),想拓展學(xué)習(xí)智能硬件物聯(lián)網(wǎng)。
而在各類需求里面,原來從事硬件相關(guān)工作,現(xiàn)在想做嵌入式軟硬件開發(fā)的,具備明顯的典型性。因?yàn)槿瞬殴┬桕P(guān)系(企業(yè)招聘軟件工程師的崗位人數(shù)遠(yuǎn)遠(yuǎn)多于硬件工程師的比例),加上硬件工程師的成長難度,加上軟件開發(fā)各類風(fēng)口技術(shù)催生的高薪崗位,軟件開發(fā)工程師作為成長速度快、薪資高的崗位,一直深受職場追捧。很多之前從事硬件開發(fā)的工程師,因?yàn)楦鞣N各樣的原因,會考慮轉(zhuǎn)行做軟件開發(fā)或者拓展學(xué)習(xí)軟件開發(fā)。
那硬件工程師轉(zhuǎn)行做軟件開發(fā),學(xué)什么最好呢?毫無疑問,嵌入式!嵌入式開發(fā)一直是一種軟硬件結(jié)合非常緊密的技術(shù),應(yīng)用領(lǐng)域極為廣泛,我們?nèi)粘?吹降暮芏喈a(chǎn)品,都是嵌入式產(chǎn)品,尤其在目前物聯(lián)網(wǎng)、人工智能的時(shí)代背景下,物聯(lián)網(wǎng)、人工智能的發(fā)展再次帶火了嵌入式。嵌入式軟硬結(jié)合的技術(shù),在新的時(shí)代背景下,更是如魚得水。對于嵌入式硬件工程師這個(gè)崗位,小編針對性的給大家分享一篇華清遠(yuǎn)見重慶中心王老師寫的文章,希望能對所有想從事這個(gè)崗位的朋友們有所幫助。
正文如下:
隨著嵌入式技術(shù)的普及,硬件工程師的性質(zhì)也有所改變。嵌入式硬件工程師與我們平常所說的硬件工程師不同。嵌入式硬件工程不但要求具備硬件工程師的基本技能,還必須完成部分軟件工程師的工作,例如:底層驅(qū)動的開發(fā)、嵌入式操作系統(tǒng)的裁剪,移植:GUI、文件系統(tǒng)等軟件的移植;基于嵌入式操作系統(tǒng)的底層驅(qū)動程序的設(shè)計(jì)等。
一個(gè)合格的嵌入式硬件工程師,不僅要懂得硬件電路的設(shè)計(jì)和制作,還需要懂得固件程序的設(shè)計(jì)和調(diào)試,只有這樣才能算完整的硬件工程師。當(dāng)然,也分單片機(jī)嵌入式工程師和Linux嵌入式系統(tǒng)硬件工程師,前者更容易些,后者相對較復(fù)雜。
嵌入式硬件工程師需要學(xué)會的基礎(chǔ)技能:
1. 由需求分析到總體方案、詳細(xì)設(shè)計(jì)的規(guī)劃創(chuàng)造能力;
2. 熟練運(yùn)用設(shè)計(jì)工具,設(shè)計(jì)原理圖、PCB板的能力;
3. 熟練運(yùn)用單片機(jī)、DSP、PLD、FPGA等進(jìn)行軟硬件開發(fā)調(diào)試的能力;
4. 熟練運(yùn)用仿真工具、示波器、信號發(fā)生器、邏輯分析儀等調(diào)測硬件的能力;
5. 掌握常用的標(biāo)準(zhǔn)電路的設(shè)計(jì)能力,如復(fù)位電路、常用濾波器電路、功放電路、高速信號傳輸線的匹配電路等;
6. 故障定位、解決問題的能力;
7. 設(shè)計(jì)文檔的組織編寫技能
如果你具備了上面這些基本技能,那么可以恭喜你,你可以作為一個(gè)普通的硬件工程師了,你也可以往一名真正的嵌入式硬件工程師靠攏。
對于嵌入式硬件工程師,應(yīng)該包含硬件層、驅(qū)動層、操作系統(tǒng)層和應(yīng)用層技術(shù)的學(xué)習(xí):
1. 硬件層:
1. 應(yīng)該具備單片機(jī)接口設(shè)計(jì)編程,并且能夠用C語言和匯編進(jìn)行編程;
2. ARM接口電路設(shè)計(jì)編程(裸機(jī)驅(qū)動程序編寫);
3. 自行完成CPLD的邏輯設(shè)計(jì)等
硬件層是整個(gè)嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機(jī)及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對容易,硬件層也是驅(qū)動層的基礎(chǔ),一個(gè)優(yōu)秀的驅(qū)動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設(shè)計(jì)的,同時(shí)還要對操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜ぁ5布脚_是基礎(chǔ),增值還要靠軟件。
硬件層比較適合于,電子、通信、自動化、機(jī)電一體、信息工程類專業(yè)的人來搞,需要掌握的專業(yè)基礎(chǔ)知識有:單片機(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(shù)、C語言。
2. 驅(qū)動層:
1. 需要熟悉操作系統(tǒng)的任務(wù)管理機(jī)制;
2. 理解操作系統(tǒng)時(shí)間片機(jī)制;
3. 熟悉操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時(shí)調(diào)度性;
這部分比較難,驅(qū)動工程師不僅要能看懂電路圖,還要能對操作系統(tǒng)內(nèi)核十分的精通,以便其所寫的驅(qū)動程序在系統(tǒng)調(diào)用時(shí),不會獨(dú)占操作系統(tǒng)時(shí)間片,而導(dǎo)致其它任務(wù)不能動行。不懂操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時(shí)調(diào)度性,沒有良好的驅(qū)動編寫風(fēng)格,按大多數(shù)書上所說添加的驅(qū)動的方式,很多人都能做到,但可能連個(gè)初級的驅(qū)動工程師的水平都達(dá)不到,這樣所寫的驅(qū)動在應(yīng)用調(diào)用時(shí),就如同windows下我們打開一個(gè)程序運(yùn)行后,再打開一個(gè)程序時(shí),要不就是中斷以前的程序,要不就是等上一會才能運(yùn)行后來打開的程序。想做個(gè)好的驅(qū)動工程師,沒有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾遍,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中,可是最高的。
驅(qū)動層比較適合于電子、通信、自動化、機(jī)電一體、信息工程類專業(yè),尤其是計(jì)算機(jī)偏體系結(jié)構(gòu)類專業(yè)的人來搞,除硬件層所具備的基礎(chǔ)學(xué)科外,還要對數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)原理、編譯原理都要十分精通了解。
3. 操作系統(tǒng)層:
1. 明白操作系統(tǒng)選擇,根據(jù)需求選擇合適的操作系統(tǒng);
2. 明白系統(tǒng)的啟動流程;
3. 根據(jù)用戶需求,完成系統(tǒng)的移植;
對于操作系統(tǒng)層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統(tǒng),或者寫出缺胳膊少腿的操作系統(tǒng)來,這部分工作大都由驅(qū)動工程師來完成。操作系統(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ì)也得花幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
4. 應(yīng)用層技術(shù):
1. 能夠在理解操作系統(tǒng)的基礎(chǔ)上,利用系統(tǒng)所提供的接口,完成用戶需求。
2. 能夠立即系統(tǒng)所提供的相關(guān)專業(yè)算法等。
相對來講較為容易的,如果會在windows下如何進(jìn)行編程接口函數(shù)調(diào)用,到操作系統(tǒng)下只是編譯和開發(fā)環(huán)境有相應(yīng)的變化而已。
嵌入式硬件工程師的從業(yè)范圍是相當(dāng)?shù)拇螅芏喙こ處熤皇菑氖缕渲械囊徊糠珠_發(fā)工作。硬件工程師轉(zhuǎn)行做嵌入式驅(qū)動層、操作系統(tǒng)層開發(fā),具備天然的技術(shù)優(yōu)勢,且都是目前高端高薪發(fā)展方向。當(dāng)然了一個(gè)高級的嵌入式硬件工程師一定是一個(gè)全能型的人才。