精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

嵌入式工程師,兩手都要硬

傳感器技術 ? 來源:嵌入式ARM ? 2020-06-18 15:53 ? 次閱讀

導言:嵌入式工程師,兩手都要硬 我是2011年畢業于三流本科學校的,大學時候學的電子信息工程,畢業后通過關系進入到本行業的一家公司,做硬件開發。

我學習差,剛進公司啥都不懂,簡單的上拉下拉電阻不知道什么意思,三極管更不懂得開關座用啥的,我記得我們領導當時說過一句話:你是我見過做研發基礎最差的。在后邊的四年我一直在這家公司工作,慢慢的也適應了工作,不得不說,剛畢業的學生確實勁頭十足,我也得感謝自己那時候的努力和付出,慢慢的基本上對硬件開發也都熟悉了,自己也可以獨立設計電路,獨立做個MCU系統,獨立畫板等等等等,所以我想說,對電子行業有興趣的各位,不要害怕基礎差,只要你開始這份工作后,有一顆肯學習的心,慢慢的一切你都會熟悉和上手。

2011年到2014年四年整的時間,我都在一個公司,公司屬于國企的三產,待遇不高,但是公司管理層次分明,文件嚴格按照9000標準卡,公司部門之間也都是依靠文件聯系,部門內部真的是非常非常和諧,有老有小,大家一起工作,基本上沒有什么內部斗爭,工作也很輕松,經常有時間聽他們談談古代歷史,一起侃侃大山之類的。現在的公司文件一團糟,采購的BOM與生產BOM完全不一致,研發沒有BOM備份,原來人走了找不到原始文件,分管研發的老總直接越過研發經理與具體研發人對話,感覺研發經理就像是打雜的,不過研發經理上個月辭職了;現在公司研發人員不多不說,好幾個項目同時進行,領導只會壓你時間,只會催你進度。對于這些我想說的是,如果你是畢業生我建議選擇一家管理相對成熟的大一些的公司,即便是技術你沒有小公司學的全面,但你得到的是一個管理模式的頭腦,一個系統的研發體系和一個讓你步入職場不至于失望的起點,但是也可能讓你后續的工作感覺很不順心,如我現在一樣。

01

去大企業還是去小公司? 我是從去年9月份辭職,然后到了一個相對陌生的城市發展,說實話,是因為我對象喜歡這個城市,也就來了。一開始辭職時候找了一家物聯網公司,因為沒深入了解,導致了干了一個月之后就辭職了,那次辭職是裸辭,辭職后的壓力很大,不斷的找工作,發現真正適合的工作只能是本行業的工作,其實從2014年年初我就有點厭倦硬件開發的工作了,后來迫于生活壓力,又快過年了,原來城市的一家世界500強的公司錄用了我,我就暫時又回到原來城市工作,與對象暫時分居兩地。進了500強的大公司,確實感覺到與小公司不一樣,但是說句實話大公司里面的人際關系太復雜了,復雜的超出了我的想象程度,一個完全不懂研發的人管理研發,不懂電路的人做電路設計,剛畢業的人沒接觸過DSP寫出來的程序就敢用來做小批量,唉,不說了。今年三月還是由于感覺跟對象在不同城市又辭職回來了,不過也錯失了一個能在大公司往上爬的機會,那時候基本在大公司轉正就可以自己負責電路開發這塊(其它人都不懂),不過也不后悔,看看他們那邊的小高層,全都是心眼啊。 辭職后又開始新的找工作歷程,大約一個月后找到了現在的工作,裸辭找工作就像剩女找對象,會慢慢慢慢的放低自己的要求,后來就來到了現在的公司。公司研發人員有10多個,但是上位機的太多,做MCU和產品硬件的這邊一共5個人。現在的感覺就是公司管理特別混亂,沒有一套完整的產品研發-生產體系,研發出來的新產品出貨速度太快,導致后期維護量巨大,生產也是一塌糊涂,一個集中器生產100臺,至少有40臺以上會有毛病,剛才領導又來催時間了,研發這邊的領導也是個逗比,就知道催催催,也不看具體工作數量和質量。文件管理混亂不堪啊,真心的,領導哪天想起來了就讓你出個這文件,哪天又讓你出個那文件,真心煩。 在這一行干的越久就會越明白,這行想繼續做下去,要么自己有好的項目自己干,要么有興趣,要么遇上一個讓你想跟隨的好領導。 對于選擇工作上,個人感覺畢業后有機會進大公司一定要進大公司,一個系統的公司可以給你一個系統的培訓,讓你有個整體的工作思路,小公司當然有小公司的好,什么雜活都干,學的東西必然多,但絕對不利于個人的長期發展。

02

聊聊招聘

從2012年開始,不斷看到人家說嵌入式怎么學。 單片機 ARM Linux C 匯編 C++ QT 驅動 說來說去都圍繞這幾個單詞。 不知道是培訓機構的影響還是怎么回事, 一大群開發初學愛好者迷失在Linux驅動開發 Bootloader移植中,還有QT移植中?甚是心痛。 如果是一個學生,如果是一個即將走向嵌入式開發崗位的兄弟。 好好的在Linux環境下,寫點C代碼,實現點數據結構練習基本語法和算法。 調用調用open read ioctrl 然后寫點進程線程和網絡,做個項目。 扎扎實實的,基礎牢牢固固的,對于我們招聘初級工程師來說,是最喜歡不過的了。

03

軟硬兼修,后顧無憂

據網友光華居士表示“嵌入式軟件工程師,兩手都要硬!”嵌入式軟件編程顯然不同于PC軟件開發,它和硬件密切相關。想寫好嵌入式軟件代碼,就必須了解清楚所使用MCU的硬件特性、各個外圍電路和接口電路的原理。不僅要深挖細究MCU內核架構的知識,是否支持浮點處理器/DSP,是否支持協處理器、指令數據緩存。 還要了解MCU的編程模型、各種存儲器的地址空間分配及其訪問效率如何,在MCU之外,還必須了解各種電路知識,什么地方需要上下拉,什么地方需要加濾波電路,什么地方必須隔離,哪里必須加抑制器件,等等不一而足。 為什么需要了解到這種程度呢?1.軟硬結合,更好地實現用戶需求。比如輸入捕捉,如果是通過上升沿或者下降沿捕捉,加了不合適的濾波電容會造成對沿的破壞,不加濾波電容就會受困于各種空間干擾產生的雜波。 倘若硬件工程師搬來的是加了不合適電容的電路,搞得沿之間位寬失真,便會出現數據不正常的偶發故障,倘若硬件工程師搬來的是不加電容的電路,搞得軟件工程師必須進行軟件濾波,把代碼搞得又復雜又難解,你說這怨誰來著? 2.方便定位Bug。愛因斯坦曾經說過,“提出一個問題往往比解決一個問題更重要,因為解決一個問題也許僅是一個數學上的或試驗上的技能而已,而提出新的問題、新的可能性、從新的角度去看舊的問題需要有創造性的想象力,而且標志著科學的真正進步。” 鉆研硬件電路可以幫助軟件工程師提出更多解決問題的思路,發現導致Bug的更多可能性。一般來說,當遇到Bug時,對硬件一知半解的軟件工程師只在代碼層面上打轉轉,基本不會在硬件方面提出問題,最終為了迎合蹩腳的硬件設計出別扭無比的代碼,卻不曾想,只要稍稍改變一下硬件設計,就可以輕松且優雅地完成代碼設計。 3.藝多不壓身,求人不如求己。當我們對硬件電路設計起了懷疑,倘若自己悄沒聲地拿起烙鐵飛個線、換個元件,驗證了自己的思路,這時直起腰版、拿著板子理直氣壯地去找硬件工程師,豈不是順順利利,又送順水人情? 倘若直接拿著板子,心底發虛面上露怯地去找硬件工程師理論,一場唇槍舌戰在所難免,腥風血雨不說,到頭來硬件工程師硬著頭皮給你調調電路,真是解決了問題還好說,若是自己思路錯了,那不是自找苦吃?上個班,掙點錢養家糊口而已,當個老好人,和同事其樂融融多好,吵來吵去,搞得那么辛苦,何必來著?

但是實際中嵌入式開發需要的知識體系和技能,80%其實跟硬件平臺無沒有無關系的。比如計算機系統原理、編程技能、程序的編譯鏈接、你對Linux內核的理解、設備模型、驅動架構、項目管理等等。 真正跟硬件平臺有關的,比如驅動開發,上面的框架是跟平臺無關的,下面跟各個硬件平臺的適配部分,可能跟硬件平臺就有關系了,寄存器配置、開發板硬件配置等。而對于嵌入式工程師來說,尤其是驅動開發工程師,等你工作后,你會發現,跟應用開發相比,真正要寫的代碼量很少,往往只需要改幾行代碼。但是往往這幾行的代碼量,需要你深厚的背景知識:硬件知識、通信協議、對芯片、開發平臺資源掌握、對Linux內核架構、設備模型、驅動框架的理解,這些才是嵌入式工程師的核心競爭力。 如果你看到很多廣告還在以開發板或者平臺作為噱頭,能拿多少工資作為宣傳,這時候你的腦海里要有這種意識,這是一種推廣宣傳。工資多少是由你自己的水平和市場大行情決定的,雖然在面試時HR會對你本身的水平評估有一些誤差,但是要相信,時間會證明你自己的真實價值,不斷提高自己的知識水平和技能才是王道。真正的技術需要自己花時間慢慢吸收、積累、消化,內化為自己的知識體系和技能。外在的心靈雞湯或高煲老鴨湯,只能讓你一時地熱情高漲,產生暫時的錯覺,并不能真正的提高技能。

04

學嵌入式≠學ARM≠學開發板

據王利濤表示,很多嵌入式初學者認為,學嵌入式,就是學習ARM,就是學習開發板。買一塊開發板,然后在上面“移植”u-boot、Linux內核,再使用busybox制作一個根文件系統,大功告成!覺得可以出去找工作了。這其實是有一定片面性的:首先ARM是個CPU架構,跟PC上的X86架構一樣,你見過有人在Windows下面學習C/C++編程、MFC編程、網絡編程、互聯網編程,說自己學習X86的嗎?當然,也不可否認,嵌入式平臺的多樣性、硬件的可定制性導致我們在嵌入式平臺上開發應用程序、驅動之前,首先要搭建這個平臺,就像我們在Windows下面要裝操作系統一樣,但是這僅僅是我們學習嵌入式開發的第一步。 其次,關于系統的“移植”,很多人玩了開發板之后,會在自己的簡歷上寫自己移植過u-boot,Linux內核......其實,這種寫法也是有點瑕疵的。真正的移植,往一個新的芯片或開發板上porting一個u-boot或Linux內核,那可不是一個人能干的事情,是一個團隊干的事情。時鐘DDR、存儲,可能牽涉到各個模塊,哪里遇到問題,都需要各個模塊的owner去debug,有時候甚至可能是芯片的bug,或者硬件開發板的bug,這就需要我們使用軟件去解決、去規避這個坑,這都需要我們在很短時間,甚至一兩天的時間去解決這個問題,需要一個團隊的各個模塊專家合力完成。所以說,我們所說的“移植”,其實就像是在Windows下面安裝操作系統,按照步驟完成裝機。當然,通過這個過程,可以加深我們對嵌入式系統的理解,但是我們首先要知道的是,我們“移植”的系統,都是芯片公司團隊做好的系統鏡像,我們做的只是配置、編譯、安裝、甚至升級這些基本的操作。這些環境只是我們學習嵌入式開發的平臺,萬里長征才走完了第一步。 嵌入式越來越復雜,一個SOC芯片上集成的模塊越來越多。以手機為例,典型的嵌入式產品,我們看看上面集成了多少模塊:觸摸屏、LCD、USB、WiFi、4G無線通信、音視頻編解碼IP、DDR、存儲控制器、3D/2D加速、GPS、指紋識別、NFCDMA、G-sensor各種傳感器.......。可以說,現在一個手機的復雜度和硬件配置,已經超過我們的桌面PC了。除了不斷增加的硬件,軟件方面,比如Linux內核,光內核代碼就有1000多萬行,每天更新的速度超過你學習的進度,你能學得完嵌入式的所有知識和技能嗎? 早期PC時代,我們知道能做出X86 CPU量產的也沒有幾家,IntelAMD和威盛。但是嵌入式時代不一樣了,ARM的IP授權模式導致不同的芯片廠商百家齊放,不同的SOC平臺和開發板眼花繚亂,針對不同行業需求定制的SOC平臺雨后春筍:手機芯片、平板芯片、視頻安防、物聯網汽車電子工業控制,甚至人工智能AI芯片....,你到Linux內核的ARCH下面可以看看有多少種CPU架構,再到arch/arm下面看看有多少種開發平臺,這還只是加入到內核mainline的平臺,算上沒有加入Linux內核主線的各種平臺,其實數量更多。 眾多的芯片架構、不同的開發板平臺,我們該如何去學習? 嵌入式和PC的概念也越來越模糊了,Intel已經推出X86架構的CPU和嵌入式產品了,比如平板。ARM也開始進軍服務器和筆記本領域了。無論什么CPU架構,ARM、X86、MIPS、PowerPC,還有最近火熱的物聯網芯片,無論是做嵌入式產品,還是PC、服務器,他們的底層本質其實都沒有變,都是計算機原理和系統架構,都是馮諾依曼的計算機架構,圖靈原型機的各種實現。 不斷復雜的軟硬件系統,對嵌入式工程師或者學習者來說是一個挑戰。這對我們本身的知識和技能有一個更新的要求。早期51單片機時代,我們可以自己使用面包板或者自己畫PCB,做一個開發板,然后在上面開發軟件。軟件、硬件自己全搞。現在不斷復雜的SOC平臺,再想一個人全搞,軟硬通吃,基本不可能,這也導致我們需要分工協作來完成。首先軟硬件的分工,各司其職,各自精通自己的領域,然后進行軟硬件整合,協作開發。再次,軟件方面,嵌入式軟件也越來越復雜,Linux內核1000多萬行,android源碼下載下來就占幾個G的空間,自己想全搞,同樣不可能,同樣需要進行分工。比如android,需要分為BSP工程師、Linux內核工程師、驅動工程師、android中間層開發工程師、APP開發工程師。對于一個Linux內核,也需要分工,各個模塊同樣進行分工:Linux內核的USB子系統、音頻子系統、視頻編解碼、文件系統......把其中一個模塊你搞精通了,工資絕對不是問題。 對于嵌入式學習者來說,我們該學習什么,或者說如何學習?才能提高自己的職場競爭力,或者說對于一個新手來說,如何通過自學,達到公司的用人標準和技術要求,找到一份自己想要的工作? 首先,你要學會做減法,從現實出發,要有這樣一個意識:我不可能精通所有的嵌入式技術,學會堅持,制定合理現實的小目標。很多人喜歡那種不切實際的廣告轟炸營銷,擊中你心理上的某個軟肋,某個G點,一下子興奮起來。越熬越濃的心靈雞湯,并不能解決我們吃飯的生存現實問題。很多人,包括我,在學習的時候,都喜歡給自己樹立各種路線、計劃、日程表。制定計劃時激情滿滿,熱情高漲,激動得睡不著覺。計劃宏偉而飽滿,仿佛成功就在眼前。但是往往不切實際,往往在早期,遇到各種困難,各種坑,各種拖延導致沒有堅持下來,最后夭折。然后接著制定下一個宏偉的計劃,繼續夭折,生活周而復始,day after day。觀察我們生活周圍,真正做出成績的都是那些基于現實出發,能一路堅持下來的人,day by day。有時候你會發現,并不覺得他們有多聰明。 其次,保持自己的興趣,說白了就是為了堅持下去。見過很多人想學習嵌入式,花了很多米買一塊開發板,激情滿滿,過一段是過去再看,已經不折騰了。嵌入式開發難,難在哪里呢?主要在于開發環境的搭建,軟件調試上,不像在Windows上使用VC開發程序,集成開發環境都幫你弄好了,各種斷點、單步、查看堆棧、寄存器、內存窗口。而嵌入式不一樣,硬件環境搭建會遇到各種各樣的問題,各種電腦的兼容問題,各種莫名其妙的問題,有時候著實讓人抓狂,時間久了,慢慢地學習的激情殆盡,也就不想學習了。這還不算什么,更嚴重的是,很多人學習嵌入式遇到挫折,往往會打擊人的自信,覺得自己能力不行,智商不夠,不適合干這行,在心理留下了陰影。對于個人學習者來說,買了開發板,你不買配套的萬用表示波器等調試設備,遇到硬件問題也是一籌莫展,無法解決。其實我們可以完全使用其它的平臺去開展我們的研究和學習,比如QEMU,一款可以仿真開發板的開源軟件,使用這款開源軟件,我們可以在電腦上虛擬一個世面上流行的開發板,然后再在這個仿真的開發板上跑u-boot、Linux內核、掛載根文件系統,使用和開發板一樣的源碼,運行效果和真實的開發板是一樣的。而且,使用QEMU的好處就是,“硬件”永遠不會出問題,可以讓我們避過硬件的各種坑,騰出更多的精力去研究嵌入式軟件的各種架構、編程技能、內核驅動....,這些才是嵌入式工程師的核心競爭力,需要花大量的時間不斷地去積累,去磨合,去提高的。把大量的時間耗在一個本該不屬于學習范疇的硬件bug上或者硬件環境不兼容上,不劃算,因為你以后進公司后,遇到同樣的問題,找硬件工程師,半分鐘幫你搞定。所以說,選擇一個理想的嵌入式學習平臺,尤其對于初學者來說,很重要。 最后,要保持學習的深度,刻意練習。不要讓自己永遠待在學習的舒適區,要學會挑戰自己,不斷去擴展自己知識的邊界,完善自己的知識體系和技能。很多人買了開飯,按照教程,“移植”了u-boot,Linux內核,制作了根文件系統,然后就陷入了迷茫:接著要干什么?要學習什么?想學習又感覺深入不下去,東一耙子,西一耙子,看看這,看看那,時間不知不覺就過去了。其實,學習嵌入式,基本的嵌入式知識和理論學習還是必要的,很多人推崇邊做邊學,到項目中學習,實踐出真知。當然這也是一個方法,但是也有弊端,那就是學習的不系統,很多有心人到后來還是得回來補課,完善自己的知識體系和技能。很多人玩開發板,燒寫鏡像,玩得賊溜,但是你知道這里面的原理嗎?知道JTAG怎么下載的嗎?Jlink和JTAG有什么區別?為什么PC上要裝個JTAG軟件而Jlink不用?程序的編譯和鏈接是怎么樣的?為什么內核鏡像要下載內存的某個地址?換個地址行不行?為什么我們編寫的程序要在有OS的環境下運行,在ARM開發板裸機環境下,你能寫一個跑起來的程序嗎?只有對這些問題深入思考,你才會對嵌入式有一個更深的認識,超越了平臺,一通百通。

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

    關注

    142

    文章

    3600

    瀏覽量

    121661
  • 嵌入式
    +關注

    關注

    5069

    文章

    19021

    瀏覽量

    303400

原文標題:搞嵌入式,軟件和硬件哪個更重要?

文章出處:【微信號:WW_CGQJS,微信公眾號:傳感器技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式QT常見開發方式有哪些?

    嵌入式QT常見開發方式有哪些? 嵌入式工程師在學習和使用Qt進行開發時,常見的幾種開發方式包括: 1.Qt Widgets編程: 通過C++代碼直接編寫GUI應用程序,利用QtWidgets庫
    發表于 08-12 10:05

    嵌入式熱門領域有哪些?

    通過物聯網連接各種物理設備和傳感器,促使它們之間實現信息的交換和數據的共享。從智能家居到智能城市,物聯網的應用不斷擴展,為嵌入式系統工程師帶來了廣泛的就業機會和發展前景。 自動駕駛 自動駕駛技術作為
    發表于 07-16 09:23

    找STM32硬件開發兼職工程師

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

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

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機遇和挑戰的領域里,如何提升自己顯得非常重要,它決定了你未來的發展方向和成就。接下來,我們一起探討一下。 1.奠定扎
    發表于 06-12 11:20

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

    嵌入式系統開發領域,軟件和硬件的界限常常模糊不清。一個常見的問題是,嵌入式軟件工程師是否需要了解硬件。本文將探討這一問題的重要性,并分析嵌入式軟件
    的頭像 發表于 06-05 08:10 ?1086次閱讀
    從事<b class='flag-5'>嵌入式</b>方向,一定要軟硬件通吃?

    嵌入式軟件工程師和硬件工程師的區別?

    嵌入式軟件工程師和硬件工程師的區別? 嵌入式軟件工程師 嵌入式軟件
    發表于 05-16 11:00

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

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

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

    嵌入式工程師需要掌握哪些技術? 嵌入式系統是當今科技領域中的重要組成部分,它們存在于我們生活的方方面面,從智能手機到汽車控制系統,從家電到醫療設備。因此,對于那些想要進入嵌入式行業的
    發表于 03-04 16:38

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

    的發展方向有很多,門檻高低不一樣。下面給大家列舉一些相應崗位所需具備的技能: 一:嵌入式Linux,C語言開發工程師,Linux軟件開發工程師 LinuxC語言開發 LinuxC語言開發進階 Linux
    發表于 02-26 10:17

    職位介紹 之 嵌入式開發工程師

    一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。 嵌入式系統一般指非 PC 系統,它包括硬件和軟件部分
    的頭像 發表于 01-17 17:23 ?444次閱讀

    一名嵌入式工程師的漲薪經歷

    下面是一位嵌入式工程師的漲薪經歷,希望可以幫助到你,幫到其他的在校學生。 ? 階段 1 大一到大三這個階段我與大多數學生相同: ? 一、學習本專業知識(電子信息類專業) 二、學習嵌入式軟件開發需要
    的頭像 發表于 01-05 08:39 ?416次閱讀

    嵌入式軟件工程師常用的

    最近我換工作了,看見不同嵌入式軟件工程師用的平臺都不一樣,所以我整理了一下。PlatformIO:多平臺支持:PlatformIO支持多種嵌入式平臺,包括Arduino、ESP8266、ESP32
    的頭像 發表于 12-24 08:00 ?632次閱讀
    <b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>工程師</b>常用的

    有沒有誰做過DSP、微型逆變器/微逆變/大型工業逆變器、嵌入式軟件的軟硬件高級工程師

    急需 DSP、微型逆變器/微逆變/大型工業逆變器、嵌入式軟件等豐富經驗的軟件高級工程師、硬件高級工程師,深圳,面議面議,自薦/推薦請聯系我。歡迎來詢zsrfwk@163.com
    發表于 12-14 17:32

    嵌入式硬件和軟件哪個好?

    ,相對而言,硬件門檻會比較高點。其實他們的薪資水平是相差不多的。 嵌入式軟硬件工程師,就看你對哪個方面感興趣了,要看你個人,這方面現在發展都是很不錯的。總之,嵌入式不是一蹴而就,需要
    發表于 12-05 15:17