需要掌握哪些技能
需要了解并使用過幾款常見的單片機。
需要了解一些傳感器相關(guān)的知識,譬如聲、光、磁、溫、慣性器件
需要能看懂 datasheet 讀懂芯片的操作規(guī)范,就是用代碼對傳感器的寄存器進(jìn)行配置
能讀懂原理圖、看懂 PCB
會使用示波器、會分析電路
實際面試考什么
聊天,聊項目、聊如何實現(xiàn)的
工作中實際用什么
我面試成功的機會都是來源于這些主要做單片機的公司,而且都是小公司,進(jìn)入的團隊也小,做的東西也是兩三個人就可以搞定的事情。雖然我自認(rèn)為寫程序還可以,但是每次答算法水題都答不好,讓我著實比較郁悶,雖然近期已經(jīng)補充了不少相關(guān)知識了,但是我還是感覺如果一直做這些單片機嵌入式的項目,我可能永遠(yuǎn)都用不到這些算法知識。
很早以前我就知道這些,計算機數(shù)據(jù)結(jié)構(gòu)及算法之于單片機程序開發(fā)就是水月鏡花。而另外一種意義上的算法倒是很實用,比如早在我畢業(yè)之前就買過一本北航出的《嵌入式系統(tǒng)軟件設(shè)計中的常用算法》這本算是很使用的一本工具書,很多方法在實際的嵌入式軟件開發(fā)當(dāng)中十分有效,我把這一類算法歸為DSP,也就是數(shù)字信號處理,要處理單片機中的數(shù)據(jù)都是數(shù)字信號的數(shù)據(jù),要對這些數(shù)據(jù)分析總結(jié),處理之后是從傳感器得到的信息,之后再使用控制器或通訊器對外界進(jìn)行反饋
一點點感悟
我從事單片機開發(fā)這些年就是用這些技術(shù)一點點的做著一個又一個的不靠譜的項目,現(xiàn)在想想我一直在磨練自己的技術(shù),然后絲毫沒有用在成型的產(chǎn)品上,那么我做這些到底有什么用呢?之前使用PIC單片機做的電能檢測器件可能小批量的生產(chǎn)了一些,但是遠(yuǎn)沒有成為一個值得我驕傲的產(chǎn)品。
每一次我都是在找公司的原因,其實我真正的傾注了多少心血在這些產(chǎn)品上面呢?
每一次我都是把做這些東西僅僅當(dāng)作一個工作來做,雖然我的技術(shù)不斷的在進(jìn)步,處理一些技術(shù)難點越來越游刃有余,但是我早已失去了當(dāng)初在學(xué)校時的那份熱情。我開始在業(yè)余學(xué)習(xí)一些其他的技術(shù),只把手中做的工作當(dāng)作是一份糊口的工作,我覺得自己做的東西是沒什么技術(shù)含量的,而且有些東西是慢慢打磨的,我倒不如趁著現(xiàn)在大好年華投身更豐富的技術(shù)海洋之中。久而久之,當(dāng)初的那份赤成之心早已不在,我變得只是追逐工資增長的不斷跳槽。
而最近一年的嵌入式 Linux 工作經(jīng)歷也確實讓我學(xué)習(xí)到了很多在操作系統(tǒng)下編程的技能,接觸了以前不曾用到的文件編程、網(wǎng)絡(luò)編程、也開始認(rèn)真的研究計算機算法,現(xiàn)在我發(fā)現(xiàn)之前很多在單片機之下我迫切想使用的技術(shù)也不過如此。還記得我曾經(jīng)想要自己打造一款實時操作系統(tǒng)。
想要在單片機下實現(xiàn)多線程或是協(xié)程,有了操作系統(tǒng)這些反而是簡單的,沒有之前的程序?qū)懙膹?fù)雜了。而這些簡單的實現(xiàn)了之前在單片機上的復(fù)雜之后的事情,又有新的復(fù)雜的事情。有了多線程編程,要關(guān)注的同步和互斥的問題一點不比在單片機下要同時做很多事情簡單。
還有視音頻的流式傳輸,需要 buffer 的緩沖,處理起來也需要十分小心。而單片機開發(fā)更需要關(guān)注的是物理世界、電氣世界的各種特性,需要將模擬的連續(xù)的信號變成數(shù)字的離散的數(shù)據(jù),實時性強、過程簡單的順序結(jié)構(gòu)。
一點點建議
還是認(rèn)清自己最重要,不要被過去從事的技術(shù)束縛住,其實我現(xiàn)在看到很多以前做軟件的人也在嘗試單片機硬件編程,直接面對物理世界的反饋是一種很奇妙的感覺,相比于抽象的要處理數(shù)據(jù)庫信息,處理真實世界的各種數(shù)據(jù)也許在某種意義上更加有趣,更加給人一種踏實的感覺。
每個人都可以不斷學(xué)習(xí)新的東西,作為一個近二十年才普遍在人類社會興起的工種,我們有太多要學(xué)習(xí)和探索的事情要做,身邊少有工作二十年的工程師是因為這個行業(yè)還沒有完全發(fā)展起來,因此絕對不要被別人軟件技術(shù)是青春飯的胡話給蒙蔽。做一個堅持學(xué)習(xí)的人是值得別人尊敬的。
單片機程序員也是軟件工程師的一種,做的事情一樣有用而且有趣,做好了也能賺到不錯的薪水,在其他軟件程序員來說可能被看作是做硬件的,做底層的。但我理解的差別可能比寫 java 和 python 的區(qū)別差不多大吧。反正沒有一輩子不成長、不學(xué)習(xí)的軟件工程師,除非他們轉(zhuǎn)去做“管理”這樣“高端”的職位去了。
-
單片機
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634617 -
pcb
+關(guān)注
關(guān)注
4319文章
23080瀏覽量
397484 -
示波器
+關(guān)注
關(guān)注
113文章
6240瀏覽量
184794 -
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136683
原文標(biāo)題:搞單片機程序開發(fā)應(yīng)該掌握哪些技能,實際用到什么?
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論