點(diǎn)擊上方“
大魚機(jī)器人
”,選擇“
置頂/星標(biāo)公眾號(hào)
”
我是2011年畢業(yè)于三流本科學(xué)校的,大學(xué)時(shí)候?qū)W的電子信息工程,畢業(yè)后通過(guò)關(guān)系進(jìn)入到本行業(yè)的一家公司,做硬件開(kāi)發(fā)。大學(xué)幾乎沒(méi)怎么學(xué)習(xí),全都在玩了,其實(shí)現(xiàn)在想起來(lái)的話大學(xué)玩的確實(shí)爽,就是有點(diǎn)后悔大學(xué)畢業(yè)時(shí)候怎么就沒(méi)考研或者考公務(wù)員試試。
題回正傳,我學(xué)習(xí)差,剛進(jìn)公司啥都不懂,簡(jiǎn)單的上拉下拉電阻不知道什么意思,三極管更不懂得開(kāi)關(guān)座用啥的,我記得我們領(lǐng)導(dǎo)當(dāng)時(shí)說(shuō)過(guò)一句話:你是我見(jiàn)過(guò)做研發(fā)基礎(chǔ)最差的。在后邊的四年我一直在這家公司工作,慢慢的也適應(yīng)了工作,不得不說(shuō),剛畢業(yè)的學(xué)生確實(shí)勁頭十足,我也得感謝自己那時(shí)候的努力和付出,慢慢的基本上對(duì)硬件開(kāi)發(fā)也都熟悉了,自己也可以獨(dú)立設(shè)計(jì)電路,獨(dú)立做個(gè)MCU系統(tǒng),獨(dú)立畫板等等等等。
所以我想說(shuō):
對(duì)電子行業(yè)有興趣的各位,不要害怕基礎(chǔ)差,只要你開(kāi)始這份工作后,有一顆肯學(xué)習(xí)的心,慢慢的一切你都會(huì)熟悉和上手。
?
2011年到2014年四年整的時(shí)間,我都在一個(gè)公司,公司屬于國(guó)企的三產(chǎn),待遇不高,但是公司管理層次分明,文件嚴(yán)格按照9000標(biāo)準(zhǔn)卡,公司部門之間也都是依靠文件聯(lián)系,部門內(nèi)部真的是非常非常和諧,有老有小,大家一起工作,基本上沒(méi)有什么內(nèi)部斗爭(zhēng),工作也很輕松,經(jīng)常有時(shí)間聽(tīng)他們談?wù)劰糯鷼v史,一起侃侃大山之類的。現(xiàn)在的公司文件一團(tuán)糟,采購(gòu)的BOM與生產(chǎn)BOM完全不一致,研發(fā)沒(méi)有BOM備份,原來(lái)人走了找不到原始文件,分管研發(fā)的老總直接越過(guò)研發(fā)經(jīng)理與具體研發(fā)人對(duì)話,感覺(jué)研發(fā)經(jīng)理就像是打雜的,不過(guò)研發(fā)經(jīng)理上個(gè)月辭職了;
現(xiàn)在公司研發(fā)人員不多不說(shuō),好幾個(gè)項(xiàng)目同時(shí)進(jìn)行,領(lǐng)導(dǎo)只會(huì)壓你時(shí)間,只會(huì)催你進(jìn)度。對(duì)于這些我想說(shuō)的是,如果你是畢業(yè)生我建議選擇一家管理相對(duì)成熟的大一些的公司,即便是技術(shù)你沒(méi)有小公司學(xué)的全面,但你得到的是一個(gè)管理模式的頭腦,一個(gè)系統(tǒng)的研發(fā)體系和一個(gè)讓你步入職場(chǎng)不至于失望的起點(diǎn),但是也可能讓你后續(xù)的工作感覺(jué)很不順心,如我現(xiàn)在一樣。
其實(shí)這個(gè)問(wèn)題應(yīng)該從電子信息工程這個(gè)專業(yè)是什么來(lái)分析,你們可能會(huì)去百度然后得到一堆不實(shí)用的官方言論,說(shuō)下我的認(rèn)識(shí):
從字面上分析 電子 ,有硬件、弱電、非電力能源強(qiáng)電類、信息、軟件甚至編程,所以這個(gè)專業(yè)的就業(yè)方向可謂是廣泛到漫無(wú)邊際,各行各業(yè)都能涉及到。
專業(yè)對(duì)口的職業(yè)硬件上有電子設(shè)計(jì)工程師、硬件工程師,半軟硬的有嵌入式硬件工程師、單片機(jī)開(kāi)發(fā)工程師、嵌入式軟件開(kāi)發(fā)工程師,純軟件甚至已經(jīng)不能算是百分之百對(duì)口,但同樣可以有,而且大概率主要偏向于計(jì)算機(jī)專業(yè)系,比較正統(tǒng)的有C/C++軟件工程師、linux系統(tǒng)開(kāi)發(fā)工程師,稍微擦邊的有java開(kāi)發(fā)、安卓開(kāi)發(fā)工程師,學(xué)個(gè)html5做個(gè)前端開(kāi)發(fā)工程師,學(xué)幾門腳本php、Python等等都沒(méi)問(wèn)題,而且我的身邊大把這樣的人,我說(shuō)的還只是研發(fā)方向,不包括測(cè)試類。
其實(shí)就業(yè)這個(gè)東西,你得再?gòu)男袠I(yè)和公司去分析——行業(yè)即是你的這些技術(shù)本領(lǐng)最后都應(yīng)用在什么方面上,比如通信、網(wǎng)絡(luò)、醫(yī)療電子、汽車、智能制造、物聯(lián)網(wǎng)智能家居、外包公司、系統(tǒng)運(yùn)維等;公司指的是你最后選擇去的公司情況,大小規(guī)模以及技術(shù)力量。為什么要特別指出這些東西呢因?yàn)樯婕暗骄蜆I(yè)中大家最關(guān)注的點(diǎn)——就業(yè)工資高不高。
就業(yè)工資,其實(shí)取決于很多方面,但最重要的肯定是和你自身的能力有關(guān),能力越高,能拿到的也就越高。這里所指的能力包括一切硬實(shí)力,甚至學(xué)校的知名度也算一方面。
另外,與所在的公司盈利情況、發(fā)展情況及所在的地域也有關(guān),本人位于廣東,對(duì)其他地方?jīng)]有太大了解,廣州深圳了解的更深一些。對(duì)于剛畢業(yè)可能參差不齊,我認(rèn)為廣州深圳研發(fā)類轉(zhuǎn)正后是不會(huì)低于5K的,當(dāng)然,如果從高處想的話,高的可以無(wú)限的想象,工資高的人大有人在,不過(guò)這取決于自己的心有多高。
雖然工資永遠(yuǎn)是我們追求的核心,但也不要過(guò)于好高騖遠(yuǎn),一畢業(yè)就想蛇吞大象,對(duì)于畢業(yè)生,一般公司給一般群體都是1w以下的,其實(shí)你剛畢業(yè)能拿到7k+就可以安然自得了,已是高于平均水平。另外還有些公司是包吃住的,可能剛?cè)雽W(xué)的人不會(huì)有考慮這個(gè)因素,實(shí)際上,開(kāi)給你的工資和你每個(gè)月能存到的錢那不是一回事,如果包吃住6000,那可要比你那7000啥都沒(méi)有劃算多了。
如果你在廣州深圳找不到一份工資高于5k的工作,那說(shuō)明你學(xué)的還不到家,這個(gè)跟學(xué)校和學(xué)歷關(guān)系不大。因?yàn)榧夹g(shù)類這行就是靠實(shí)力說(shuō)話,筆試面試下來(lái),人家公司不會(huì)冤枉你,所以別問(wèn)我什么我是大專的是不是就拿不到這個(gè)數(shù)。
另外,當(dāng)你報(bào)了這個(gè)專業(yè)或者你在選專業(yè)的時(shí)候優(yōu)先從工資就業(yè)這一點(diǎn)開(kāi)始考慮,那么你是不明智的。術(shù)業(yè)有專攻,三百六十行,行行出狀元。無(wú)論是建筑、金融還是管理,只要學(xué)的好,本領(lǐng)過(guò)硬,都可以混的好,一句話,還是靠自己。
再者,有很多人聽(tīng)說(shuō)很多身邊的朋友這個(gè)專業(yè)工資待遇什么的出來(lái)還不錯(cuò)就選過(guò)來(lái)了,其實(shí),這個(gè)專業(yè)對(duì)等的行業(yè)不是個(gè)混吃等死的行業(yè),你的工資通過(guò)跳槽會(huì)升的非???,一年破萬(wàn)是普遍情況,穩(wěn)定下來(lái)以后基本工資都只會(huì)停在15k到20k,再漲很難,這時(shí)就要看公司了,有很多公司有項(xiàng)目獎(jiǎng),年終分工,股份等等,這個(gè)對(duì)于干了好幾年的老員工才是拿大頭的地方。如果漲不上去,你就只能轉(zhuǎn)行轉(zhuǎn)型了,而且這里有一個(gè)硬道理,你工資越高,代表你能力越大,能力越大,你的責(zé)任越大,你要扛的事就越多,壓力很大,總監(jiān)級(jí)別的心態(tài)不好頭發(fā)掉光是肯定的。
所以,從選專業(yè)的角度來(lái)說(shuō)興趣是關(guān)鍵,當(dāng)然很多調(diào)劑過(guò)來(lái)或者已經(jīng)稀里糊涂報(bào)進(jìn)來(lái)的人就沒(méi)辦法。如果想以技術(shù)類作為看家本領(lǐng)只能好好學(xué),平心而論,技術(shù)的路屬于“穩(wěn)”的路,換句話說(shuō),如果你有一顆不滿足于現(xiàn)狀喜歡搞事情,年輕力壯意氣風(fēng)發(fā)一心想賺大錢做馬云的那種,那請(qǐng)你放棄本專業(yè)別浪費(fèi)時(shí)間馬上開(kāi)始考慮其他發(fā)展道路。因?yàn)榧夹g(shù)類的工作就要坐得住、有興趣,靠著你對(duì)本業(yè)堅(jiān)持不懈地探索。一步一步來(lái),你才有可能走的更遠(yuǎn)。我不會(huì)因?yàn)槲沂菢I(yè)內(nèi)人士就很推崇本業(yè),找到自己的道路,明白自己想要什么,才是真的,特別是大學(xué)生,最好在大二就有自己的方向,這樣,你有充足的時(shí)間做一切準(zhǔn)備,比如換行!
因?yàn)槲沂菍I(yè)對(duì)口的,所以我就從對(duì)口的角度,說(shuō)下我們專業(yè)學(xué)的啥以及怎么學(xué)。有很多人在問(wèn)專業(yè)難度,以及哪些課需要讀好認(rèn)真學(xué)等,其實(shí)這些需要看你的心有多大,才能決定你要走多遠(yuǎn)。
另外,電子信息的專業(yè)難度只要智商沒(méi)問(wèn)題其實(shí)一般都學(xué)的來(lái),男女都一樣,至少學(xué)到就業(yè)水平是沒(méi)問(wèn)題的,所以別問(wèn)我什么對(duì)女生是不是不友好,女生是不是學(xué)不來(lái),我只能說(shuō)那是因?yàn)楹芏嗯詈鬀](méi)興趣沒(méi)堅(jiān)持下來(lái)。對(duì)于女生來(lái)講,這確實(shí)是一條孤獨(dú)之道,學(xué)的人不多,學(xué)成的人更不多,但我覺(jué)得是個(gè)人思想和學(xué)習(xí)環(huán)境導(dǎo)致的,大環(huán)境下女生都不喜歡這個(gè),所以想走遠(yuǎn)可能會(huì)難。但現(xiàn)在女程序員也已越來(lái)越多,“誰(shuí)說(shuō)女子不如男”?
如果你想搞科研,有什么高端大氣上檔次的理想,那本專業(yè)就很難。對(duì)于任何工科類的專業(yè),肯定是智商高和有毅力的人最后能走的遠(yuǎn),所以也沒(méi)有必要去比較,優(yōu)秀的人大有人在。學(xué)的東西很泛,開(kāi)的課程情況看學(xué)校,主要的課程還是偏硬件類、模電、數(shù)電、電路,好的學(xué)校會(huì)開(kāi)通信原理、計(jì)算機(jī)網(wǎng)絡(luò)、單片機(jī)、c語(yǔ)言這些、專業(yè)課很多,我就不一一列舉了,反正我大學(xué)的課是排的滿滿的,一般來(lái)說(shuō)你有一兩門學(xué)的精基本就能吃飯了。
這個(gè)專業(yè)應(yīng)該怎么學(xué),有哪些出路決定于畢業(yè)后想從事哪種工作,此處暫且先不討論技術(shù)外的出路。大一大家都比較迷茫和青澀,估計(jì)不明不白所以也沒(méi)什么決心,對(duì)未來(lái)有各種憧憬和期待,野心勃勃,各種搞活動(dòng)搞事情。到了大三才明白過(guò)來(lái),一事無(wú)成,才又回頭揚(yáng)言搞技術(shù)!接下來(lái)就是學(xué)不會(huì)、難入門、堅(jiān)持不下來(lái)的狀態(tài)……崩潰、懊悔、迷茫……其實(shí),這是大部分本專業(yè)學(xué)生的現(xiàn)狀。
我建議花一年時(shí)間,即大一就去闖去蕩、去搞事情,最后確定你是不是想穩(wěn)下來(lái)搞技術(shù)。大二開(kāi)始認(rèn)真學(xué)習(xí),堅(jiān)持下來(lái)你到大三就會(huì)很強(qiáng)了,沒(méi)錯(cuò),已經(jīng)強(qiáng)到可以找初級(jí)工作的地步。如此,便可早入行,到大四大家一起找工作的時(shí)候就會(huì)比別人起點(diǎn)高一些。當(dāng)然如果你在大一就一心一意就想搞技術(shù)那就更不用說(shuō)了。
那么這個(gè)專業(yè)具體怎么學(xué)?我接下來(lái)的建議只適用于普通想找工作出路的人,對(duì)于胸懷鴻鵠之志的請(qǐng)忽略。其實(shí)一般的課程你只要過(guò)得去就行了,有的人問(wèn)什么高數(shù)物理很難啊用不用學(xué)好啊,其實(shí)我大二開(kāi)始混飯吃(本人是相對(duì)特殊的大學(xué)生,比較早工作),到現(xiàn)在好幾年了都沒(méi)用過(guò)高數(shù)和物理。但并不建議完全舍棄高數(shù)和物理,因?yàn)槠渌颇慷寂c高數(shù)物理息息相關(guān),雖然工作上用到的機(jī)會(huì)并不多,實(shí)在無(wú)力回天的話,即使不太精通也無(wú)妨。
有人問(wèn)C語(yǔ)言用不用學(xué)好?這決定于你從業(yè)的工種,目前,我的工作偏軟件,吃飯的家伙就是C語(yǔ)言??梢愿孕诺母阒v,精通c語(yǔ)言很重要,不是熟悉,不是了解,就是精通。那么如果不喜歡軟件,你是一個(gè)硬件工程師或者單片機(jī)工程師,那么c語(yǔ)言就用得偏少,那么只要會(huì)語(yǔ)法、會(huì)編程就可以了。雖然單片機(jī)工程師也玩C語(yǔ)言,但相對(duì)用的比較淺薄,就是用來(lái)控制硬件,主題還是硬件,所以就相對(duì)不那么重要。
其實(shí)很多男生一開(kāi)始對(duì)本專業(yè)有興趣都是因?yàn)橛布?,確實(shí)動(dòng)手焊焊東西,看到作品還是蠻有成就感的。有些小項(xiàng)目,智能尋跡小車,看看小車在跑啊或者搞個(gè)光立方燈閃啊閃的,看著特別好玩,確實(shí)比較吸引男生,這些以前本人都玩過(guò)深有體會(huì)。但是大部分人其實(shí)入門之后后面放棄了硬件搞軟件去了。
究其原因有兩方面:第一是硬件確實(shí)很難,存在瓶頸,入門容易,也很好玩,大部分人只要會(huì)焊?jìng)€(gè)東西,會(huì)畫個(gè)板,造一輛會(huì)跑會(huì)叫的小車就算是入門了。但是真正從業(yè)的時(shí)候會(huì)發(fā)現(xiàn)以前都是玩玩具。工業(yè)級(jí)的產(chǎn)品都要求過(guò)硬的質(zhì)量,要經(jīng)得起風(fēng)霜的考驗(yàn),要經(jīng)得起人為的摧殘,也就是說(shuō)實(shí)際上除了功能之外的東西,還得做很多措施保護(hù),除了這個(gè),單單就產(chǎn)品的功能也有嚴(yán)格的要求——精確到每個(gè)電阻、每個(gè)電流和電壓,要有過(guò)硬的理論基礎(chǔ)、電路分析、模電、數(shù)電、電磁波原理,可能還需要物理。畫板要考慮干擾、emc、信號(hào)完整性、紋波等,沒(méi)錯(cuò),聽(tīng)起來(lái)是不是很難,所以其實(shí)一般的應(yīng)屆生都不具備一定的經(jīng)驗(yàn)和水平,書也讀的不夠扎實(shí),所以很難做到這些,工作中就經(jīng)常犯錯(cuò),壓力很大,局限性很大,會(huì)發(fā)生很多你不可理解的事情,就會(huì)做著做著發(fā)現(xiàn),啊,不是應(yīng)該是這樣的電流這樣的功能嗎,怎么沒(méi)反應(yīng)或者不是這樣的?。咳缓筮B查問(wèn)題都不知道怎么查,然后拋給大佬。
由此引申出第二個(gè)原因,因?yàn)槟阋划厴I(yè)能力不夠,其實(shí)很難,很少人能達(dá)到工作需求,所以企業(yè)一般不會(huì)開(kāi)給你高工資,而且還要教你,還要容錯(cuò),所以剛畢業(yè)普遍看起來(lái)硬件工程師工資比軟件的低,因?yàn)檐浖芏嗳嗽谛F陂g就能學(xué)好,甚至達(dá)到社會(huì)工程師水平,所以工資自然就高了,三五年后誰(shuí)也說(shuō)不好,硬件確實(shí)是個(gè)需要積累的東西。所以對(duì)于有志于此的人,我還是鼓勵(lì)學(xué)硬件,別老看個(gè)待遇,而且硬件工程師比較穩(wěn),一般公司想動(dòng)你都得想一想,畢竟是社會(huì)稀缺資源。
怎么學(xué)習(xí)硬件?大部分課程過(guò)得去就成,但是,你最好把電路、模電、數(shù)電都讀精通。對(duì)于已經(jīng)到了大三下學(xué)期然后突然想搞技術(shù)的人,其實(shí)純硬件對(duì)你來(lái)說(shuō)有點(diǎn)接近關(guān)門了,除非你很有毅力,因?yàn)檫@時(shí)候你沒(méi)時(shí)間補(bǔ)基本功,后面要想玩好電容、電感、運(yùn)算放大器、二極管、三極管、mos管很有難度,而且這些理論課程偏枯燥。此外,對(duì)于已經(jīng)在大二鋪設(shè)好了理論的人,大三就要開(kāi)啟你的魔鬼積累之路,多呆實(shí)驗(yàn)室,找老師,找?guī)熜种笇?dǎo),盡你所能做作品去吧,可以找?guī)妆倦娮釉O(shè)計(jì)類的書籍或者網(wǎng)上的論壇照著搭,盡量多地積累小電路模型,盡可能多地熟悉一些集成芯片,比如LDO之類的,特別推薦思維好的同學(xué)學(xué)習(xí)開(kāi)關(guān)電源,很考硬件功底,如果你能自己搭出合格的拓?fù)漭^為復(fù)雜開(kāi)關(guān)電源,那么你的純硬件已經(jīng)過(guò)關(guān),可以考慮實(shí)習(xí)了,然后這個(gè)時(shí)候要學(xué)畫板,layout那些,熟悉altium designer,俗稱AD,但是其實(shí)大企業(yè)用的不多,多數(shù)是allegro,CAD。
很多公司畫板的工程師是女生,而且其實(shí)女生會(huì)更有優(yōu)勢(shì)。大學(xué)期間盡量多參加比賽,電子設(shè)計(jì)大賽和各種杯,瑞薩杯,飛思卡爾杯等等等,有沒(méi)有獲獎(jiǎng)都行,這些就是你的經(jīng)歷,你的簡(jiǎn)歷,寫的就是這些你做過(guò)的項(xiàng)目,大小都行,寫的就是你參加過(guò)什么比賽,有獲獎(jiǎng)更會(huì)在你面試的時(shí)候加上不少分。
然后,還是要盡量早點(diǎn)實(shí)習(xí),學(xué)校的環(huán)境和公司的差距還是很大,出來(lái)一趟你會(huì)發(fā)現(xiàn)強(qiáng)的不是一星半點(diǎn)。對(duì)于純硬件設(shè)計(jì)工程師,言盡于此。
我是從去年9月份辭職,然后到了一個(gè)相對(duì)陌生的城市發(fā)展,說(shuō)實(shí)話,是因?yàn)槲覍?duì)象喜歡這個(gè)城市,也就來(lái)了。一開(kāi)始辭職時(shí)候找了一家物聯(lián)網(wǎng)公司,因?yàn)闆](méi)深入了解,導(dǎo)致了干了一個(gè)月之后就辭職了,那次辭職是裸辭,辭職后的壓力很大,不斷的找工作,發(fā)現(xiàn)真正適合的工作只能是本行業(yè)的工作,其實(shí)從2014年年初我就有點(diǎn)厭倦硬件開(kāi)發(fā)的工作了,后來(lái)迫于生活壓力,又快過(guò)年了,原來(lái)城市的一家世界500強(qiáng)的公司錄用了我,我就暫時(shí)又回到原來(lái)城市工作,與對(duì)象暫時(shí)分居兩地。進(jìn)了500強(qiáng)的大公司,確實(shí)感覺(jué)到與小公司不一樣,但是說(shuō)句實(shí)話大公司里面的人際關(guān)系太復(fù)雜了,復(fù)雜的超出了我的想象程度,一個(gè)完全不懂研發(fā)的人管理研發(fā),不懂電路的人做電路設(shè)計(jì),剛畢業(yè)的人沒(méi)接觸過(guò)DSP寫出來(lái)的程序就敢用來(lái)做小批量,唉,不說(shuō)了。
今年三月還是由于感覺(jué)跟對(duì)象在不同城市又辭職回來(lái)了,不過(guò)也錯(cuò)失了一個(gè)能在大公司往上爬的機(jī)會(huì),那時(shí)候基本在大公司轉(zhuǎn)正就可以自己負(fù)責(zé)電路開(kāi)發(fā)這塊(其它人都不懂),不過(guò)也不后悔,看看他們那邊的小高層,全都是心眼啊。
辭職后又開(kāi)始新的找工作歷程,大約一個(gè)月后找到了現(xiàn)在的工作,裸辭找工作就像剩女找對(duì)象,會(huì)慢慢慢慢的放低自己的要求,后來(lái)就來(lái)到了現(xiàn)在的公司。公司研發(fā)人員有10多個(gè),但是上位機(jī)的太多,做MCU和產(chǎn)品硬件的這邊一共5個(gè)人。現(xiàn)在的感覺(jué)就是公司管理特別混亂,沒(méi)有一套完整的產(chǎn)品研發(fā)-生產(chǎn)體系,研發(fā)出來(lái)的新產(chǎn)品出貨速度太快,導(dǎo)致后期維護(hù)量巨大,生產(chǎn)也是一塌糊涂,一個(gè)集中器生產(chǎn)100臺(tái),至少有40臺(tái)以上會(huì)有毛病,剛才領(lǐng)導(dǎo)又來(lái)催時(shí)間了,研發(fā)這邊的領(lǐng)導(dǎo)也是個(gè)逗比,就知道催催催,也不看具體工作數(shù)量和質(zhì)量。文件管理混亂不堪啊,真心的,領(lǐng)導(dǎo)哪天想起來(lái)了就讓你出個(gè)這文件,哪天又讓你出個(gè)那文件,真心煩。
在這一行干的越久就會(huì)越明白,這行想繼續(xù)做下去,要么自己有好的項(xiàng)目自己干,要么有興趣,要么遇上一個(gè)讓你想跟隨的好領(lǐng)導(dǎo)。
對(duì)于選擇工作上,個(gè)人感覺(jué)畢業(yè)后有機(jī)會(huì)進(jìn)大公司一定要進(jìn)大公司,一個(gè)系統(tǒng)的公司可以給你一個(gè)系統(tǒng)的培訓(xùn),讓你有個(gè)整體的工作思路,小公司當(dāng)然有小公司的好,什么雜活都干,學(xué)的東西必然多,但絕對(duì)不利于個(gè)人的長(zhǎng)期發(fā)展。
從2012年開(kāi)始,不斷看到人家說(shuō)嵌入式怎么學(xué)。
單片機(jī) ARM Linux C 匯編 C++ QT 驅(qū)動(dòng) 說(shuō)來(lái)說(shuō)去都圍繞這幾個(gè)單詞。
不知道是培訓(xùn)機(jī)構(gòu)的影響還是怎么回事,
一大群開(kāi)發(fā)初學(xué)愛(ài)好者迷失在Linux驅(qū)動(dòng)開(kāi)發(fā) Bootloader移植中,還有QT移植中?甚是心痛。
如果是一個(gè)學(xué)生,如果是一個(gè)即將走向嵌入式開(kāi)發(fā)崗位的兄弟。
好好的在Linux環(huán)境下,寫點(diǎn)C代碼,實(shí)現(xiàn)點(diǎn)數(shù)據(jù)結(jié)構(gòu)練習(xí)基本語(yǔ)法和算法。
調(diào)用調(diào)用open read ioctrl 然后寫點(diǎn)進(jìn)程線程和網(wǎng)絡(luò),做個(gè)項(xiàng)目。
扎扎實(shí)實(shí)的,基礎(chǔ)牢牢固固的,對(duì)于我們招聘初級(jí)工程師來(lái)說(shuō),是最喜歡不過(guò)的了。?
據(jù)網(wǎng)友光華居士表示“嵌入式軟件工程師,兩手都要硬!”嵌入式軟件編程顯然不同于PC軟件開(kāi)發(fā),它和硬件密切相關(guān)。想寫好嵌入式軟件代碼,就必須了解清楚所使用MCU的硬件特性、各個(gè)外圍電路和接口電路的原理。不僅要深挖細(xì)究MCU內(nèi)核架構(gòu)的知識(shí),是否支持浮點(diǎn)處理器/DSP,是否支持協(xié)處理器、指令數(shù)據(jù)緩存。
還要了解MCU的編程模型、各種存儲(chǔ)器的地址空間分配及其訪問(wèn)效率如何,在MCU之外,還必須了解各種電路知識(shí),什么地方需要上下拉,什么地方需要加濾波電路,什么地方必須隔離,哪里必須加抑制器件,等等不一而足。
1.軟硬結(jié)合,更好地實(shí)現(xiàn)用戶需求。比如輸入捕捉,如果是通過(guò)上升沿或者下降沿捕捉,加了不合適的濾波電容會(huì)造成對(duì)沿的破壞,不加濾波電容就會(huì)受困于各種空間干擾產(chǎn)生的雜波。
倘若硬件工程師搬來(lái)的是加了不合適電容的電路,搞得沿之間位寬失真,便會(huì)出現(xiàn)數(shù)據(jù)不正常的偶發(fā)故障,倘若硬件工程師搬來(lái)的是不加電容的電路,搞得軟件工程師必須進(jìn)行軟件濾波,把代碼搞得又復(fù)雜又難解,你說(shuō)這怨誰(shuí)來(lái)著?
2.方便定位Bug。愛(ài)因斯坦曾經(jīng)說(shuō)過(guò),“提出一個(gè)問(wèn)題往往比解決一個(gè)問(wèn)題更重要,因?yàn)榻鉀Q一個(gè)問(wèn)題也許僅是一個(gè)數(shù)學(xué)上的或試驗(yàn)上的技能而已,而提出新的問(wèn)題、新的可能性、從新的角度去看舊的問(wèn)題需要有創(chuàng)造性的想象力,而且標(biāo)志著科學(xué)的真正進(jìn)步。”
鉆研硬件電路可以幫助軟件工程師提出更多解決問(wèn)題的思路,發(fā)現(xiàn)導(dǎo)致Bug的更多可能性。一般來(lái)說(shuō),當(dāng)遇到Bug時(shí),對(duì)硬件一知半解的軟件工程師只在代碼層面上打轉(zhuǎn)轉(zhuǎn),基本不會(huì)在硬件方面提出問(wèn)題,最終為了迎合蹩腳的硬件設(shè)計(jì)出別扭無(wú)比的代碼,卻不曾想,只要稍稍改變一下硬件設(shè)計(jì),就可以輕松且優(yōu)雅地完成代碼設(shè)計(jì)。
3.藝多不壓身,求人不如求己。當(dāng)我們對(duì)硬件電路設(shè)計(jì)起了懷疑,倘若自己悄沒(méi)聲地拿起烙鐵飛個(gè)線、換個(gè)元件,驗(yàn)證了自己的思路,這時(shí)直起腰版、拿著板子理直氣壯地去找硬件工程師,豈不是順順利利,又送順?biāo)饲椋?/span>
倘若直接拿著板子,心底發(fā)虛面上露怯地去找硬件工程師理論,一場(chǎng)唇槍舌戰(zhàn)在所難免,腥風(fēng)血雨不說(shuō),到頭來(lái)硬件工程師硬著頭皮給你調(diào)調(diào)電路,真是解決了問(wèn)題還好說(shuō),若是自己思路錯(cuò)了,那不是自找苦吃?上個(gè)班,掙點(diǎn)錢養(yǎng)家糊口而已,當(dāng)個(gè)老好人,和同事其樂(lè)融融多好,吵來(lái)吵去,搞得那么辛苦,何必來(lái)著?
但是實(shí)際中嵌入式開(kāi)發(fā)需要的知識(shí)體系和技能,80%其實(shí)跟硬件平臺(tái)無(wú)沒(méi)有無(wú)關(guān)系的。比如計(jì)算機(jī)系統(tǒng)原理、編程技能、程序的編譯鏈接、你對(duì)Linux內(nèi)核的理解、設(shè)備模型、驅(qū)動(dòng)架構(gòu)、項(xiàng)目管理等等。
真正跟硬件平臺(tái)有關(guān)的,比如驅(qū)動(dòng)開(kāi)發(fā),上面的框架是跟平臺(tái)無(wú)關(guān)的,下面跟各個(gè)硬件平臺(tái)的適配部分,可能跟硬件平臺(tái)就有關(guān)系了,寄存器配置、開(kāi)發(fā)板硬件配置等。而對(duì)于嵌入式工程師來(lái)說(shuō),尤其是驅(qū)動(dòng)開(kāi)發(fā)工程師,等你工作后,你會(huì)發(fā)現(xiàn),跟應(yīng)用開(kāi)發(fā)相比,真正要寫的代碼量很少,往往只需要改幾行代碼。但是往往這幾行的代碼量,需要你深厚的背景知識(shí):硬件知識(shí)、通信協(xié)議、對(duì)芯片、開(kāi)發(fā)平臺(tái)資源掌握、對(duì)Linux內(nèi)核架構(gòu)、設(shè)備模型、驅(qū)動(dòng)框架的理解,這些才是嵌入式工程師的核心競(jìng)爭(zhēng)力。
如果你看到很多廣告還在以開(kāi)發(fā)板或者平臺(tái)作為噱頭,能拿多少工資作為宣傳,這時(shí)候你的腦海里要有這種意識(shí),這是一種推廣宣傳。工資多少是由你自己的水平和市場(chǎng)大行情決定的,雖然在面試時(shí)HR會(huì)對(duì)你本身的水平評(píng)估有一些誤差,但是要相信,時(shí)間會(huì)證明你自己的真實(shí)價(jià)值,不斷提高自己的知識(shí)水平和技能才是王道。
真正的技術(shù)需要自己花時(shí)間慢慢吸收、積累、消化,內(nèi)化為自己的知識(shí)體系和技能。外在的心靈雞湯或高煲老鴨湯,只能讓你一時(shí)地?zé)崆楦邼q,產(chǎn)生暫時(shí)的錯(cuò)覺(jué),并不能真正的提高技能。
學(xué)嵌入式≠學(xué)ARM≠學(xué)開(kāi)發(fā)板
據(jù)王利濤表示,很多嵌入式初學(xué)者認(rèn)為,學(xué)嵌入式,就是學(xué)習(xí)ARM,就是學(xué)習(xí)開(kāi)發(fā)板。買一塊開(kāi)發(fā)板,然后在上面“移植”u-boot、Linux內(nèi)核,再使用busybox制作一個(gè)根文件系統(tǒng),大功告成!覺(jué)得可以出去找工作了。這其實(shí)是有一定片面性的:首先ARM是個(gè)CPU架構(gòu),跟PC上的X86架構(gòu)一樣,你見(jiàn)過(guò)有人在Windows下面學(xué)習(xí)C/C++編程、MFC編程、網(wǎng)絡(luò)編程、互聯(lián)網(wǎng)編程,說(shuō)自己學(xué)習(xí)X86的嗎?當(dāng)然,也不可否認(rèn),嵌入式平臺(tái)的多樣性、硬件的可定制性導(dǎo)致我們?cè)谇度胧狡脚_(tái)上開(kāi)發(fā)應(yīng)用程序、驅(qū)動(dòng)之前,首先要搭建這個(gè)平臺(tái),就像我們?cè)赪indows下面要裝操作系統(tǒng)一樣,但是這僅僅是我們學(xué)習(xí)嵌入式開(kāi)發(fā)的第一步。
其次,關(guān)于系統(tǒng)的“移植”,很多人玩了開(kāi)發(fā)板之后,會(huì)在自己的簡(jiǎn)歷上寫自己移植過(guò)u-boot,Linux內(nèi)核......其實(shí),這種寫法也是有點(diǎn)瑕疵的。真正的移植,往一個(gè)新的芯片或開(kāi)發(fā)板上porting一個(gè)u-boot或Linux內(nèi)核,那可不是一個(gè)人能干的事情,是一個(gè)團(tuán)隊(duì)干的事情。時(shí)鐘、DDR、存儲(chǔ),可能牽涉到各個(gè)模塊,哪里遇到問(wèn)題,都需要各個(gè)模塊的owner去debug,有時(shí)候甚至可能是芯片的bug,或者硬件開(kāi)發(fā)板的bug,這就需要我們使用軟件去解決、去規(guī)避這個(gè)坑,這都需要我們?cè)诤芏虝r(shí)間,甚至一兩天的時(shí)間去解決這個(gè)問(wèn)題,需要一個(gè)團(tuán)隊(duì)的各個(gè)模塊專家合力完成。
所以說(shuō),我們所說(shuō)的“移植”,其實(shí)就像是在Windows下面安裝操作系統(tǒng),按照步驟完成裝機(jī)。當(dāng)然,通過(guò)這個(gè)過(guò)程,可以加深我們對(duì)嵌入式系統(tǒng)的理解,但是我們首先要知道的是,我們“移植”的系統(tǒng),都是芯片公司團(tuán)隊(duì)做好的系統(tǒng)鏡像,我們做的只是配置、編譯、安裝、甚至升級(jí)這些基本的操作。這些環(huán)境只是我們學(xué)習(xí)嵌入式開(kāi)發(fā)的平臺(tái),萬(wàn)里長(zhǎng)征才走完了第一步。
嵌入式越來(lái)越復(fù)雜,一個(gè)SOC芯片上集成的模塊越來(lái)越多。以手機(jī)為例,典型的嵌入式產(chǎn)品,我們看看上面集成了多少模塊:觸摸屏、LCD、USB、WiFi、4G等無(wú)線通信、音視頻編解碼IP、DDR、存儲(chǔ)控制器、3D/2D加速、GPS、指紋識(shí)別、NFC、DMA、G-sensor各種傳感器.......。可以說(shuō),現(xiàn)在一個(gè)手機(jī)的復(fù)雜度和硬件配置,已經(jīng)超過(guò)我們的桌面PC了。除了不斷增加的硬件,軟件方面,比如Linux內(nèi)核,光內(nèi)核代碼就有1000多萬(wàn)行,每天更新的速度超過(guò)你學(xué)習(xí)的進(jìn)度,你能學(xué)得完嵌入式的所有知識(shí)和技能嗎?
早期PC時(shí)代,我們知道能做出X86 CPU量產(chǎn)的也沒(méi)有幾家,Intel、AMD和威盛。但是嵌入式時(shí)代不一樣了,ARM的IP授權(quán)模式導(dǎo)致不同的芯片廠商百家齊放,不同的SOC平臺(tái)和開(kāi)發(fā)板眼花繚亂,針對(duì)不同行業(yè)需求定制的SOC平臺(tái)雨后春筍:手機(jī)芯片、平板芯片、視頻安防、物聯(lián)網(wǎng)、汽車電子、工業(yè)控制,甚至人工智能AI芯片....,你到Linux內(nèi)核的ARCH下面可以看看有多少種CPU架構(gòu),再到arch/arm下面看看有多少種開(kāi)發(fā)平臺(tái),這還只是加入到內(nèi)核mainline的平臺(tái),算上沒(méi)有加入Linux內(nèi)核主線的各種平臺(tái),其實(shí)數(shù)量更多。
眾多的芯片架構(gòu)、不同的開(kāi)發(fā)板平臺(tái),我們?cè)撊绾稳W(xué)習(xí)?
嵌入式和PC的概念也越來(lái)越模糊了,Intel已經(jīng)推出X86架構(gòu)的CPU和嵌入式產(chǎn)品了,比如平板。ARM也開(kāi)始進(jìn)軍服務(wù)器和筆記本領(lǐng)域了。無(wú)論什么CPU架構(gòu),ARM、X86、MIPS、PowerPC,還有最近火熱的物聯(lián)網(wǎng)芯片,無(wú)論是做嵌入式產(chǎn)品,還是PC、服務(wù)器,他們的底層本質(zhì)其實(shí)都沒(méi)有變,都是計(jì)算機(jī)原理和系統(tǒng)架構(gòu),都是馮諾依曼的計(jì)算機(jī)架構(gòu),圖靈原型機(jī)的各種實(shí)現(xiàn)。
不斷復(fù)雜的軟硬件系統(tǒng),對(duì)嵌入式工程師或者學(xué)習(xí)者來(lái)說(shuō)是一個(gè)挑戰(zhàn)。這對(duì)我們本身的知識(shí)和技能有一個(gè)更新的要求。早期51單片機(jī)時(shí)代,我們可以自己使用面包板或者自己畫PCB,做一個(gè)開(kāi)發(fā)板,然后在上面開(kāi)發(fā)軟件。軟件、硬件自己全搞?,F(xiàn)在不斷復(fù)雜的SOC平臺(tái),再想一個(gè)人全搞,軟硬通吃,基本不可能,這也導(dǎo)致我們需要分工協(xié)作來(lái)完成。首先軟硬件的分工,各司其職,各自精通自己的領(lǐng)域,然后進(jìn)行軟硬件整合,協(xié)作開(kāi)發(fā)。再次,軟件方面,嵌入式軟件也越來(lái)越復(fù)雜,Linux內(nèi)核1000多萬(wàn)行,android源碼下載下來(lái)就占幾個(gè)G的空間,自己想全搞,同樣不可能,同樣需要進(jìn)行分工。比如android,需要分為BSP工程師、Linux內(nèi)核工程師、驅(qū)動(dòng)工程師、android中間層開(kāi)發(fā)工程師、APP開(kāi)發(fā)工程師。對(duì)于一個(gè)Linux內(nèi)核,也需要分工,各個(gè)模塊同樣進(jìn)行分工:Linux內(nèi)核的USB子系統(tǒng)、音頻子系統(tǒng)、視頻編解碼、文件系統(tǒng)......把其中一個(gè)模塊你搞精通了,工資絕對(duì)不是問(wèn)題。
對(duì)于嵌入式學(xué)習(xí)者來(lái)說(shuō),我們?cè)搶W(xué)習(xí)什么,或者說(shuō)如何學(xué)習(xí)?才能提高自己的職場(chǎng)競(jìng)爭(zhēng)力,或者說(shuō)對(duì)于一個(gè)新手來(lái)說(shuō),如何通過(guò)自學(xué),達(dá)到公司的用人標(biāo)準(zhǔn)和技術(shù)要求,找到一份自己想要的工作?
首先,你要學(xué)會(huì)做減法,從現(xiàn)實(shí)出發(fā),要有這樣一個(gè)意識(shí):我不可能精通所有的嵌入式技術(shù),學(xué)會(huì)堅(jiān)持,制定合理現(xiàn)實(shí)的小目標(biāo)。很多人喜歡那種不切實(shí)際的廣告轟炸營(yíng)銷,擊中你心理上的某個(gè)軟肋,某個(gè)G點(diǎn),一下子興奮起來(lái)。越熬越濃的心靈雞湯,并不能解決我們吃飯的生存現(xiàn)實(shí)問(wèn)題。很多人,包括我,在學(xué)習(xí)的時(shí)候,都喜歡給自己樹(shù)立各種路線、計(jì)劃、日程表。制定計(jì)劃時(shí)激情滿滿,熱情高漲,激動(dòng)得睡不著覺(jué)。計(jì)劃宏偉而飽滿,仿佛成功就在眼前。但是往往不切實(shí)際,往往在早期,遇到各種困難,各種坑,各種拖延導(dǎo)致沒(méi)有堅(jiān)持下來(lái),最后夭折。然后接著制定下一個(gè)宏偉的計(jì)劃,繼續(xù)夭折,生活周而復(fù)始,day after day。觀察我們生活周圍,真正做出成績(jī)的都是那些基于現(xiàn)實(shí)出發(fā),能一路堅(jiān)持下來(lái)的人,day by day。有時(shí)候你會(huì)發(fā)現(xiàn),并不覺(jué)得他們有多聰明。
其次,保持自己的興趣,說(shuō)白了就是為了堅(jiān)持下去。見(jiàn)過(guò)很多人想學(xué)習(xí)嵌入式,花了很多米買一塊開(kāi)發(fā)板,激情滿滿,過(guò)一段是過(guò)去再看,已經(jīng)不折騰了。嵌入式開(kāi)發(fā)難,難在哪里呢?主要在于開(kāi)發(fā)環(huán)境的搭建,軟件調(diào)試上,不像在Windows上使用VC開(kāi)發(fā)程序,集成開(kāi)發(fā)環(huán)境都幫你弄好了,各種斷點(diǎn)、單步、查看堆棧、寄存器、內(nèi)存窗口。而嵌入式不一樣,硬件環(huán)境搭建會(huì)遇到各種各樣的問(wèn)題,各種電腦的兼容問(wèn)題,各種莫名其妙的問(wèn)題,有時(shí)候著實(shí)讓人抓狂,時(shí)間久了,慢慢地學(xué)習(xí)的激情殆盡,也就不想學(xué)習(xí)了。這還不算什么,更嚴(yán)重的是,很多人學(xué)習(xí)嵌入式遇到挫折,往往會(huì)打擊人的自信,覺(jué)得自己能力不行,智商不夠,不適合干這行,在心理留下了陰影。對(duì)于個(gè)人學(xué)習(xí)者來(lái)說(shuō),買了開(kāi)發(fā)板,你不買配套的萬(wàn)用表、示波器等調(diào)試設(shè)備,遇到硬件問(wèn)題也是一籌莫展,無(wú)法解決。其實(shí)我們可以完全使用其它的平臺(tái)去開(kāi)展我們的研究和學(xué)習(xí),比如QEMU,一款可以仿真開(kāi)發(fā)板的開(kāi)源軟件,使用這款開(kāi)源軟件,我們可以在電腦上虛擬一個(gè)世面上流行的開(kāi)發(fā)板,然后再在這個(gè)仿真的開(kāi)發(fā)板上跑u-boot、Linux內(nèi)核、掛載根文件系統(tǒng),使用和開(kāi)發(fā)板一樣的源碼,運(yùn)行效果和真實(shí)的開(kāi)發(fā)板是一樣的。
而且,使用QEMU的好處就是,“硬件”永遠(yuǎn)不會(huì)出問(wèn)題,可以讓我們避過(guò)硬件的各種坑,騰出更多的精力去研究嵌入式軟件的各種架構(gòu)、編程技能、內(nèi)核驅(qū)動(dòng)....,這些才是嵌入式工程師的核心競(jìng)爭(zhēng)力,需要花大量的時(shí)間不斷地去積累,去磨合,去提高的。把大量的時(shí)間耗在一個(gè)本該不屬于學(xué)習(xí)范疇的硬件bug上或者硬件環(huán)境不兼容上,不劃算,因?yàn)槟阋院筮M(jìn)公司后,遇到同樣的問(wèn)題,找硬件工程師,半分鐘幫你搞定。所以說(shuō),選擇一個(gè)理想的嵌入式學(xué)習(xí)平臺(tái),尤其對(duì)于初學(xué)者來(lái)說(shuō),很重要。
最后,要保持學(xué)習(xí)的深度,刻意練習(xí)。不要讓自己永遠(yuǎn)待在學(xué)習(xí)的舒適區(qū),要學(xué)會(huì)挑戰(zhàn)自己,不斷去擴(kuò)展自己知識(shí)的邊界,完善自己的知識(shí)體系和技能。很多人買了開(kāi)飯,按照教程,“移植”了u-boot,Linux內(nèi)核,制作了根文件系統(tǒng),然后就陷入了迷茫:接著要干什么?要學(xué)習(xí)什么?想學(xué)習(xí)又感覺(jué)深入不下去,東一耙子,西一耙子,看看這,看看那,時(shí)間不知不覺(jué)就過(guò)去了。其實(shí),學(xué)習(xí)嵌入式,基本的嵌入式知識(shí)和理論學(xué)習(xí)還是必要的,很多人推崇邊做邊學(xué),到項(xiàng)目中學(xué)習(xí),實(shí)踐出真知。當(dāng)然這也是一個(gè)方法,但是也有弊端,那就是學(xué)習(xí)的不系統(tǒng),很多有心人到后來(lái)還是得回來(lái)補(bǔ)課,完善自己的知識(shí)體系和技能。很多人玩開(kāi)發(fā)板,燒寫鏡像,玩得賊溜,但是你知道這里面的原理嗎?
知道JTAG怎么下載的嗎?
Jlink和JTAG有什么區(qū)別?
為什么PC上要裝個(gè)JTAG軟件而Jlink不用?
程序的編譯和鏈接是怎么樣的?
為什么內(nèi)核鏡像要下載內(nèi)存的某個(gè)地址?
換個(gè)地址行不行?
為什么我們編寫的程序要在有OS的環(huán)境下運(yùn)行,在ARM開(kāi)發(fā)板裸機(jī)環(huán)境下,你能寫一個(gè)跑起來(lái)的程序嗎?
只有對(duì)這些問(wèn)題深入思考,你才會(huì)對(duì)嵌入式有一個(gè)更深的認(rèn)識(shí),超越了平臺(tái),一通百通。
-END-
干貨 | 雙目攝像頭實(shí)現(xiàn)手勢(shì)識(shí)別,完美還原人體運(yùn)動(dòng)手勢(shì)。
戳這里>>
這篇文章后,不要再問(wèn)我怎么做一臺(tái)智能車了。
戳這里>>
電子工程師也有“鄙視鏈”!
軟件硬件無(wú)一幸免!戳這里>>
群體智能,多個(gè)機(jī)器人協(xié)同搬運(yùn)!
戳這里>>
若覺(jué)得文章不錯(cuò),轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
5T資源大放送!
包括但不限于:
C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等
!
在公眾號(hào)內(nèi)回復(fù)「更多資源」,即可免費(fèi)獲取,期待你的關(guān)注~