嵌入式工程師,電腦+萬用表+示波器+電烙鐵+各種電源線數(shù)據(jù)線+老虎鉗+螺絲刀+美工刀+焊錫絲+各種舍不得扔又好像沒什么用的電子垃圾。收拾干凈挺難的,而且弄整齊了工作起來未必順手。
工作幾年了,先交代點(diǎn)背景。
我和我的同事,也自稱為嵌入式工程師,不過只搞軟件,畫板子焊元件這些活兒我不會做,能用個(gè)示波器萬用表啥的。
芯片方面,沒有用過單片機(jī),一開始工作接觸的就是MPU或者SoC,mips系arm系都用過不少。
做過的系統(tǒng),有帶屏幕需要GUI的也有不帶的;有以while(1) 開始的裸奔系統(tǒng),也有uC/OS II 這樣輕量級的,也有芯片商不知道在eCOS還是什么上面定制修改的。uCLinux當(dāng)初咱也花功夫?qū)W了,結(jié)果還沒用上,新出的一批芯片都是帶MMU的了,直接跑linux了。再后來,android 爛大街了。
題主的問題可以再修改一下,補(bǔ)充一下說明,也許我可以更有針對性地回答。
你所說的生活,我覺得應(yīng)該是指工作狀態(tài)吧?你所提到的程序員應(yīng)該是專指PC軟件或者web程序員吧?其實(shí)我們嵌入式軟件工程師也是程序員啊。
好,現(xiàn)在回答你的問題:嵌入式 軟件 工程師 的工作狀況是怎樣的,很大程度上取決于你在一個(gè)什么樣的公司,與你合作的同事水平怎么樣,公司的技術(shù)架構(gòu)和積累是怎么樣的,項(xiàng)目所采用的方案是怎么樣的。
1. 硬件工程師同事的水平會決定你的工作狀態(tài)
如果硬件工程師靠譜,照著demo板改改畫出來的板子,打板回來,焊好元件,燒上demo程序,上電就能正常跑起來。否則,軟件就放假慢慢等著吧。
如果硬件粗心,把線連錯(cuò)了,漏接了,你也許不得不自己從頭看datasheet,挨個(gè)檢查信號,幾天的時(shí)間也許就這么過去了。發(fā)現(xiàn)問題要幾個(gè)小時(shí)幾天,解決只需要幾秒鐘或者幾分鐘。問題解決得差不多了,板子也被飛線鋪滿了。
還有一次,我們兩個(gè)同事,坐飛機(jī)到芯片公司總部出差請求支援,結(jié)果被人家發(fā)現(xiàn)只是一根排線虛焊了呀,丟死人呀。
后來我長心了,開始軟件調(diào)試工作前一定要檢查硬件。
2. 單位早期的系統(tǒng)架構(gòu)設(shè)計(jì)技術(shù)人員水平會決定你的工作狀態(tài)
曾經(jīng)一家公司,一個(gè)while(1)開頭的裸奔系統(tǒng),帶自己設(shè)計(jì)的消息機(jī)制,帶沒有DC的GUI,還自己擴(kuò)展了一套中文編碼。在這套系統(tǒng)上有一系列的產(chǎn)品,每個(gè)新產(chǎn)品為了縮短開發(fā)時(shí)間,都沿用已有產(chǎn)品的代碼,又不敢做大的改動,應(yīng)屆生在上面添加了新的糟糕的代碼,又遺傳到下一個(gè)產(chǎn)品中。每個(gè)新產(chǎn)品的bug數(shù)都在3000左右,軟件開發(fā)人員都痛苦無比。這種狀況一直到公司請來一個(gè)高水平的CTO,果斷引入uC/OS II 系統(tǒng),移植MiniGUI,全面采用GBK和Unicode才有所改善。
你想知道后來怎么樣了嗎?后來當(dāng)然是這套全新的系統(tǒng)又被一幫低水平的程序員給改亂了呀,又有一批新手接過了這套讓人痛苦的歷史包袱啊。
3. 公司財(cái)力、領(lǐng)導(dǎo)的眼光和氣魄決定了你的工作狀態(tài)
公司有錢,或者領(lǐng)導(dǎo)有決斷,買參考板,買幾萬塊的調(diào)試器,買個(gè)好用的示波器、邏輯分析儀,不知道能提高多少工作的效率。一幫軟件吭哧吭哧加串口打印,調(diào)試幾個(gè)星期或一兩個(gè)月,問題還不一定能解決,發(fā)的工資、浪費(fèi)的時(shí)間、錯(cuò)過的市場機(jī)會,不也是錢嗎?
4.方案公司的方案以及支持力度決定了你的工作狀態(tài)
如果采用的芯片比較簡單,尤其早期的芯片,有的還不帶MMU,不能采用linux或者android這樣的高級系統(tǒng),甚至不能移植uC/OS 這樣的多線程系統(tǒng),一些像低電檢測這樣的任務(wù)實(shí)現(xiàn)起來是很別扭的?,F(xiàn)在的芯片都強(qiáng)大多了,很多以前在舊平臺上引以為豪的奇技淫巧都不需要了。
不同公司方案的風(fēng)格也很不一樣。我的總體印象,美國的芯片給你開放的東西很多,你可以做很靈活的定制開發(fā),遇到問題你有能力可以自己嘗試解決。但是如果不是大客戶,支持力度很有限。***的芯片方案基本上把什么就給你做好了,你換個(gè)logo做成產(chǎn)品,跟別家打價(jià)格戰(zhàn)去吧;但是很多模塊代碼是不開放的,你在上面能做的東西很有限,遇到問題需要上報(bào),然后苦苦地等他們解決,發(fā)sdk新版本,也是很讓人頭疼的事。國內(nèi)的方案接觸過的不多,用過一些小公司的小芯片,參差不齊,大部分給的datasheet顯得非常業(yè)余。
現(xiàn)在我的工作基本上都采用linux系統(tǒng),總體印象就是:
你需要懂的東西非常多:計(jì)算機(jī)架構(gòu),指令集特征,啟動模式,io,i2c,spi總線,bootloader,kernel,rootfs,工具鏈,交叉編譯。
但是你能做的事情其實(shí)又很少:你幾乎沒有機(jī)會自己寫bootloader,從頭制作整個(gè)系統(tǒng)。大部分工作人家都已經(jīng)替你做好了,你只需要簡單地修改就可以了。
你所能做的工作和PC上軟件開發(fā)的差別越來越小,內(nèi)存越來越大,flash或者sd卡空間越來越大,對內(nèi)存和存儲空間斤斤計(jì)較越來越?jīng)]有必要。在嵌入式設(shè)備上用python或者其他高級語言開發(fā)也越來越不稀奇了。更何況,有的平臺會提供非常方便的模擬器,你幾乎可以將大部分應(yīng)用邏輯都在模擬器上開發(fā)調(diào)試好,你有時(shí)都會忘了你是為嵌入式設(shè)備在開發(fā)程序。
-
電子工程師
+關(guān)注
關(guān)注
252文章
775瀏覽量
95678 -
單片機(jī)
+關(guān)注
關(guān)注
6041文章
44616瀏覽量
637400
發(fā)布評論請先 登錄
相關(guān)推薦
評論