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

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

3天內不再提示

怎樣成為高級嵌入式系統(tǒng)硬件工程師

工程師人生 ? 來源:工程師吳畏 ? 2019-04-30 16:40 ? 次閱讀

在學習的道路上我們一直是新手,硬件行業(yè)顯得更加如此。想成為高級嵌入式硬件工程師,你還缺少什么?

有很多朋友經(jīng)常會問,成為高級嵌入式系統(tǒng)硬件工程師,需要做到哪些呢?這里的話你可以留下企鵝,相信我一定可以幫的到你。那么,我們就先從嵌入式硬件工程師是個什么概念入手

一、如何理解“嵌入式”的概念呢?

1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內部,比如早期基于X86體系結構下的計算機,CPU只是有運算器和累加器的功能,一切芯片要造外部橋路來擴展實現(xiàn),象串口之類的都是靠外部的16C550/2的串口控制器芯片實現(xiàn),而目前的這種串口控制器芯片早已集成到CPU內部,還有PC機有顯卡,而多數(shù)嵌入式處理器都帶有LCD控制器,但其種意義上就相當于顯卡。比較高端的ARMIntel Xscale架構下的IXP網(wǎng)絡處理器CPU內部集成PCI控制器(可配成支持4個PCI從設備或配成自身為CPI從設備);還集成3個NPE網(wǎng)絡處理器引擎,其中兩個對應于兩個MAC地址, 可用于網(wǎng)關交換用,而另外一個NPE網(wǎng)絡處理器引擎支持DSL,只要外面再加個PHY芯片即可以實現(xiàn)DSL上網(wǎng)功能。IXP系列最高主頻可以達到 1.8G,支持2G內存,1G×10或10G×1的以太網(wǎng)口或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中就實現(xiàn)了一個真正的“嵌入”。

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

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

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

1、硬件層,是整個嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對容易,硬件層也是驅動層的基礎,一個優(yōu)秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統(tǒng)內核及其調度性相當?shù)氖煜さ?。但硬件平臺是基礎,增值還要靠軟件。

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

2、 驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統(tǒng)內核十分的精通,以便其所寫的驅動程序在系統(tǒng)調用時,不會獨占操作系統(tǒng)時間片,而導 至其它任務不能動行,不懂操作系統(tǒng)內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數(shù)書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的 驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不 就是等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統(tǒng)內核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中可 是最高的。

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

3、操作系統(tǒng)層,對于操作系統(tǒng)層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統(tǒng),或者寫出缺胳膊少腿的操作系統(tǒng)來,這部分工作大都由驅動工程師來完成。操作系統(tǒng)是負責系統(tǒng)任務的調試、磁盤和文件的管理,而嵌入式系統(tǒng)的實時性十分重要。據(jù)說,XP操作系統(tǒng)是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統(tǒng)估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。

4、應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數(shù)調用,到操作系統(tǒng)下只是編譯和開發(fā)環(huán) 境有相應的變化而已。如果涉及Jave方面的編程也是如此的。嵌入式系統(tǒng)中涉及算法的由專業(yè)算法的人來處理的,不必歸結到嵌入式系統(tǒng)范疇內。但如果涉及嵌 入式系統(tǒng)下面嵌入式數(shù)據(jù)庫、基于嵌入式系統(tǒng)的網(wǎng)絡編程和基于某此應用層面的協(xié)議應用開發(fā)(比如基于SIP、H.323、Astrisk)方面又較為復雜, 并且有難度了。

三、目標與定位

先有目標,再去定位。

學 ARM,從硬件上講,一方面就是學習接口電路設計,另一方面就是學習匯編和C語言的板級編程。如果從軟件上講,就是要學習基于ARM處理器的操作系統(tǒng)層面 的驅動、移植了。這些對于初學都來說必須明確,要么從硬件著手開始學,要么從操作系統(tǒng)的熟悉到應用開始學,但不管學什么,只要不是純的操作系統(tǒng)級以上基于 API的應用層的編程,硬件的寄存器類的東西還是要能看懂的,基于板級的匯編和C編程還是要會的。因此針對于嵌入式系統(tǒng)的硬件層和驅動程的人,ARM的接 口電路設計、ARM的C語言和匯編語言編程及調試開發(fā)環(huán)境還是需要掌握的。

因此對于初學者必然要把握住方向,自己的目標是什么,自己要在那一層面上走。然后再著手學習較好,與ARM相關的嵌入式系統(tǒng)的較為實際的兩個層面硬件層和驅動層,不管學好了那一層都會很有前途的。

學 ARM,從硬件上講,一方面就是學習接口電路設計,另一方面就是學習匯編和C語言的板級編程

如果想從嵌入式系統(tǒng)的應用層面的走的話,可能與ARM及其它體系相去較遠,要著重研究基嵌入式操作系統(tǒng)的環(huán)境應用與相應開發(fā)工具鏈,比如WinCe操作系統(tǒng)下的EVC應用開發(fā)(與windows下的VC相類似),如果想再有突破就往某些音視頻類的協(xié)議上靠,比如VOIP領域的基于SIP或H.323協(xié)議的應用層開發(fā),或是基于嵌入式網(wǎng)絡數(shù)據(jù)庫的開發(fā)等等。

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

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

很多ARM初學者都希望有一套自己能用的系統(tǒng),但他們住住會產(chǎn)生一種錯誤認識就是認為處理器版本越高、性能越高越好,就象很多人認為ARM9與 ARM7好, 我想對于初學者在此方面以此入門還應該理智,開發(fā)系統(tǒng)的選擇最終要看自己往嵌入式系統(tǒng)的那個方向上走,是做驅動開發(fā)還是應用,還是做嵌入式系統(tǒng)硬件層設計 與板級測試。如果想從操作系統(tǒng)層面或應用層面上走,不管是驅動還是應用,那當然處理器性能越高越好了,但這個東西自學,有十分大的困難,不是幾個月或半年 或是一年二年能搞定的事。

在某種意義上請,ARM7與9的差別就是在某些功能指令集上豐富了些,主頻提高一些而已,就比如286和386。對于用戶來講可能覺查不到什么,只能是感覺速度有些快而已。

ARM7比較適合于那些想從硬件層面上走的人,因為ARM7系列處理器內部帶MMU的很少,而且比較好控制,就比如S3C44B0來講,可以很容易將 Cache關了,而且內部接口寄存器很容易看明白,各種接口對于用硬件程序控制或AXD單步命令行指令都可以控制起來,基于51單片機的思想很容易能把他 搞懂,就當成個32位的單片機,從而消除很多51工程師想轉為嵌入式系統(tǒng)硬件ARM開發(fā)工程師的困惑,從而不會被業(yè)界某此不是真正懂嵌入式爛公司帶到操作 系統(tǒng)層面上去,讓他們望而失畏,讓業(yè)界更加缺少這方面的人才。

而嵌入式系統(tǒng)不管硬件設計還是軟件驅動方面都是十分注重接口這部分的,選擇平臺還要考察一個處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以后就業(yè)成功的機率就越高,這就是招聘時 所說的有無“相關技能”,因為一個人不可能在短短幾年內把所有的處理器都接觸一遍,而招聘單位所用的處理器就可能是我們完全沒有見過的,就拿***數(shù)十家小 公司(市價幾千萬)的公司生產(chǎn)的ARM類處理器,也很好用,但這些東西通用性太差,用這些處理器的公司就只能招有相關工作經(jīng)驗的人了,那什么是相關工作經(jīng) 驗,在硬件上講的是外圍接口設計,在軟件上講是操作系統(tǒng)方面相關接口驅動及應用開發(fā)經(jīng)驗。我從業(yè)近十年,2000年ARM出現(xiàn),我一天始做ARM7,然后 直接跑到了Xscale(這個板本在ARM10-11之間),一做就是五年,招人面試都不下數(shù)百人,在這些方面還是深有體會的。

我個人認為新手學習一定要系統(tǒng)化,不能東學一點西學一點,浪費了時間還沒效率。這邊如果你有同樣的困惑可以留下企鵝。話不多說,我們接著往下看;

因此開發(fā)系統(tǒng)的選擇,要看自己的未來從來目標方向、要看開發(fā)板接口資源、還要看業(yè)界的通用性。

五、成為高級嵌入式系統(tǒng)硬件工程師要具備的技能

對于硬件來講有幾個方向,就單純信號來分為數(shù)字和模擬,模擬比較難搞,一般需要很長的經(jīng)驗積累,單單一個阻值或容值的精度不夠就可能使信號偏差很大。因此年輕人搞的較少,隨著技術的發(fā)展,出現(xiàn)了模擬電路數(shù)字化,比如手機的Modem射頻模塊,都采用成熟的套片,而當年國際上只有兩家公司有此技術,自我感覺模擬功能不太強的人,不太適合搞這個,如果真能搞定到手機的射頻模塊,只要達到一般程度可能月薪都在15K以上。

另一類就是數(shù)字部分了,在大方向上又可分為51/ARM的單片機類,DSP類,FPGA類, 國內FPGA的工程師大多是在IC設計公司從事IP核的前端驗證,這部分不搞到門級,前途不太明朗,即使做個IC前端驗證工程師,也要搞上幾年才能勝任。 DSP硬件接口比較定型,如果不向驅動或是算法上靠攏,前途也不會太大。

而ARM單片機類的內容就較多,業(yè)界產(chǎn)品占用量大,應用人群廣,因此就業(yè)空間極大,而硬件設計最體現(xiàn)水平和水準的就是接口設計這塊,這是各個高級硬件工程師相互PK,判定水平高低的依據(jù)。

而接口設計這塊最關鍵的是看時序,而不是簡單 的連接,比如PXA255處理器I2C要求速度在100Kbps,如果把一個I2C外圍器件,最高還達不到100kbps的與它相接,必然要導致設計的失 敗。這樣的情況有很多,比如51單片機可以在總線接 LCD,但為什么這種LCD就不能掛在ARM的總線上,還有ARM7總線上可以外接個Winband的SD卡控制器,但為什么這種控制器接不到ARM9或 是Xscale處理器上,這些都是問題。因此接口并不是一種簡單的連接,要看時序,要看參數(shù)。

一個優(yōu)秀的硬件工程師應該能夠在沒有參考方案的前提下設計 出一個在成本和性能上更加優(yōu)秀的產(chǎn)品,靠現(xiàn)有的方案,也要進行適當?shù)目尚行圆眉?,但不是胡亂的來,我遇到一個工程師把方案中的5V變1.8V的DC芯片, 直接更換成LDO,有時就會把CPU燒上幾個。

前幾天還有人希望我?guī)兔Π阉麄円郧盎赑XA255平臺的手持GPS設備做下程序優(yōu)化,我問了一下情況,地 圖是存在SD卡中的,而SD卡與PXA255的MMC控制器間采用的SPI接口,因此導致地圖讀取速度十分的慢,這種情況是設計中嚴重的缺陷,而不是程序 的問題,因此我提了幾條建議,讓他們更新試下再說。

因此想成為一個優(yōu)秀的工程師,需要對系統(tǒng)整體性的把握和對已有電路的理解,換句話說,給你一套電路圖你 終究能看明白多少,看不明白80%以上的話,說明你離優(yōu)秀的工程師還差得遠哪。其次是電路的調試能力和審圖能力,但最最基本的能力還是原理圖設計PCB繪 制,邏輯設計這塊。這是指的硬件設計工程師,從上面的硬件設計工程師中還可以分出ECAD工程師,就是專業(yè)的畫PCB板的工程師,和EMC設計工程師,幫 人家解決EMC的問題。

硬件工程師再往上就是板級測試工程師,就是C語功底很好的硬件工程師,在電路板調試過程中能通過自已編寫的測試程序對硬件功能進行 驗證。然后再交給基于操作系統(tǒng)級的驅動開發(fā)人員。

總之,硬件的內容很多很雜,硬件那方面練成了都會成為一個高手,我時常會給人家做下方案評估,很多高級硬件工程師設計的東西,經(jīng)常被我一句話否定,因此工程師做到我這種地步,也會得罪些人,但硬件的確會有很多不為人知的東西,讓很多高級硬件工程師也摸不到頭腦。

那么高級硬件件工程師技術技能都要具備那些東西哪,首先要掌握EDA設計的輔助工具類如 ProtelORCADPowperPCBMaplux2ISE、VDHL語言,要能用到這些工具畫圖畫板做邏輯設計,再有就是接口設計審圖能力,再者就是調試能力,如果能走到總體方案設計這塊,那就基本上快成為資深工程師了。

高級硬件工程師不僅要有設計能力還有具有相當深厚的基本功,就是EDA工具的使用,EDA工程師包括原理圖和PCB工具,邏輯設計工具和VHDL

SCH有Cadence下的Orcad 和Mentors公司pads下的powerpcb.

當然protel也具有這兩部分功能但它在國際上不通用。只是國內通用。如果想走得高些或到臺資、日資、美資公司及國內需要對外交流的大公司的話,上面的硬件的原理圖工具和PCB工資必須掌握的。邏輯這塊,硬件工程師主要是負責CPLD這塊,涉及FPGA這塊時應該會有專業(yè)FPGA人員來搞定的,因FPGA不太適合做邏輯的。因此硬件工程師只到CPLD為止。

硬件是要靠經(jīng)驗,也要靠積累的。最后,路漫漫其修遠兮,一定要在堅持堅持!

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

    關注

    5087

    文章

    19153

    瀏覽量

    306425
  • 硬件工程師
    +關注

    關注

    187

    文章

    361

    瀏覽量

    75707
收藏 人收藏

    評論

    相關推薦

    為什么嵌入式驅動開發(fā)工程師可以拿高薪?

    為什么嵌入式驅動開發(fā)工程師可以拿高薪? 嵌入式驅動開發(fā),屬于需求量大、薪資斷崖升高的熱門崗位,在市場的發(fā)展驅動下成為“風口”。從市場的整
    發(fā)表于 01-07 16:56

    嵌入式工程師常用的開發(fā)工具有哪些?

    嵌入式工程師常用的開發(fā)工具有哪些? 在嵌入式系統(tǒng)開發(fā)的廣闊領域中,嵌入式工程師們憑借著一系列強大
    發(fā)表于 12-20 15:29

    嵌入式系統(tǒng)開發(fā)與硬件的關系 嵌入式系統(tǒng)開發(fā)常見問題解決

    嵌入式系統(tǒng)開發(fā)與硬件的關系 嵌入式系統(tǒng)是專為特定應用設計的計算機系統(tǒng),它們通常
    的頭像 發(fā)表于 12-09 09:38 ?349次閱讀

    KiCon 演講回顧(十三):嵌入工程師硬件夢之 KiCad 經(jīng)驗和項目分享

    “ ?在KiCon Asia 2024,我們有幸聽到了@IAMLIUBO 的分享——嵌入式工程師硬件夢之KiCad經(jīng)驗分享。 ? ” 以下是完整演講視頻: 為什么選擇KiCad? 跨平臺支持
    的頭像 發(fā)表于 12-09 01:02 ?253次閱讀
    KiCon 演講回顧(十三):<b class='flag-5'>嵌入</b><b class='flag-5'>工程師</b>的<b class='flag-5'>硬件</b>夢之 KiCad 經(jīng)驗和項目分享

    找STM32硬件開發(fā)兼職工程師

    上海做傳感器的公司,找STM32硬件開發(fā)兼職工程師,會硬件開發(fā),嵌入式軟件開發(fā),可項目外包。有意聯(lián)系:15900460170
    發(fā)表于 06-22 19:12

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

    的發(fā)展打下堅實的基礎。 2.掌握專業(yè)技能 除了基礎知識外,嵌入式軟件工程師還需要掌握專業(yè)的技能。這包括熟練掌握嵌入式系統(tǒng)的開發(fā)工具、硬件平臺
    發(fā)表于 06-12 11:20

    從事嵌入式方向,一定要軟硬件通吃?

    嵌入式系統(tǒng)開發(fā)領域,軟件和硬件的界限常常模糊不清。一個常見的問題是,嵌入式軟件工程師是否需要了解硬件
    的頭像 發(fā)表于 06-05 08:10 ?1247次閱讀
    從事<b class='flag-5'>嵌入式</b>方向,一定要軟<b class='flag-5'>硬件</b>通吃?

    嵌入式軟件工程師硬件工程師的區(qū)別?

    嵌入式軟件工程師硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入
    發(fā)表于 05-16 11:00

    一款適合嵌入式工程師使用的在線工具

    一款適合嵌入式工程師使用的在線工具,工具有如下功能,如下圖所示: 1. 報文校驗功能,如下圖所示 2. UDP服務端測試工具:該UDP服務端工具可以理解為 “UDP服務端” 或者 “服務器
    發(fā)表于 04-09 22:20

    如何成為一名嵌入式C語言高手?

    高手需要掌握C語言基礎、了解嵌入式系統(tǒng)硬件架構和工作原理,通過實踐項目提升技能,并積極參與開源項目和技術社區(qū)。持續(xù)學習和自我提升是成為嵌入式
    發(fā)表于 04-07 16:03

    如何成為一名嵌入式C語言高手?

    高手需要掌握C語言基礎、了解嵌入式系統(tǒng)硬件架構和工作原理,通過實踐項目提升技能,并積極參與開源項目和技術社區(qū)。持續(xù)學習和自我提升是成為嵌入式
    發(fā)表于 03-25 14:12

    嵌入式工程師需要掌握哪些技術?

    嵌入式工程師需要掌握哪些技術? 嵌入式系統(tǒng)是當今科技領域中的重要組成部分,它們存在于我們生活的方方面面,從智能手機到汽車控制系統(tǒng),從家電到
    發(fā)表于 03-04 16:38

    嵌入式人工智能的就業(yè)方向有哪些?

    操作系統(tǒng)使用及C高級編程 數(shù)據(jù)結構與算法 二:嵌入式Linux應用工程師,Linux網(wǎng)絡開發(fā)工程師 文件IO 并發(fā)程序設計 項目實戰(zhàn):基于L
    發(fā)表于 02-26 10:17

    職位介紹 之 嵌入式開發(fā)工程師

    什么是嵌入式軟件開發(fā) ????????嵌入式系統(tǒng)是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統(tǒng)對功能、可靠性、成本、體
    的頭像 發(fā)表于 01-17 17:23 ?531次閱讀