畢業(yè)七年,一位嵌入式er分享自己的開發(fā)經(jīng)驗(yàn)和想法
本人從畢業(yè)到現(xiàn)在一直在嵌入式軟件這個(gè)行業(yè)發(fā)展,已七年有余,也曾經(jīng)迷茫無助過,也驕傲自滿過,到現(xiàn)在算是趨于一個(gè)比較穩(wěn)定的狀態(tài),嵌入式軟件開發(fā)的項(xiàng)目本身代碼量不會(huì)太大,除了一些特殊的方面外,基本難度都不是太大,曾經(jīng)認(rèn)為只要有人帶著,什么樣的人都可以從事這個(gè)行業(yè),從這兩年的經(jīng)驗(yàn)來看,以前想的可能有點(diǎn)太樂觀了,這兩年在用心帶幾個(gè)人,發(fā)現(xiàn)有些東西確實(shí)需要一定的積累才能做好,畢竟人和人的思維方式不同,考慮問題的角度千差萬別。
本人對于技術(shù)的積累很少在一些網(wǎng)站或者論壇之類的做過交流,遇到問題時(shí),我一般更希望盡自己的努力來解決,空閑的時(shí)間也希望自己看一些書籍,來提升一下內(nèi)功。
轉(zhuǎn)入正題,從事嵌入式軟件開發(fā)需要哪些基礎(chǔ)知識呢?
首先得學(xué)過單片機(jī)原理,對于底層的一些運(yùn)作有個(gè)大致了解,最不濟(jì)也得明白數(shù)字電路是怎么回事吧!之前和一些新入行的工程師交流發(fā)現(xiàn),分不清什么十進(jìn)制數(shù),十六進(jìn)制和BCD,什么bit位,不清楚十進(jìn)制數(shù)和十六進(jìn)制數(shù)在機(jī)器上存儲(chǔ)有什么區(qū)別。對底層的基本原理壓根就沒接觸過,分析問題伏在問題表面現(xiàn)象上,有些問題扎著頭搞了兩個(gè)星期都沒有進(jìn)展,到最后就是一個(gè)數(shù)的bit位除了一點(diǎn)問題,在面試時(shí)曾經(jīng)遇到過這樣的問題,有個(gè)面試者在回答問題時(shí),使用RS485總線,波特率9600,協(xié)議通訊有響應(yīng)數(shù)據(jù),每個(gè)通訊周期的數(shù)據(jù)量都會(huì)超出10個(gè)字節(jié),問其通訊周期時(shí),堅(jiān)定的回答,10ms一個(gè)周期,每個(gè)周期都會(huì)有十幾個(gè)字節(jié)的數(shù)據(jù),在反復(fù)暗示后一直堅(jiān)持自己的說法,對于嵌入式軟件開發(fā),從事一兩年后,一定要問問自己uart,spi和i2c這些總線我們是不是都已經(jīng)很熟悉了,對定時(shí)器和中斷我們是否都掌握了。
從事嵌入式軟件行業(yè)是否需要經(jīng)驗(yàn)?zāi)?
經(jīng)驗(yàn)這種東西是個(gè)很微妙的東西,有些事情經(jīng)驗(yàn)?zāi)芷鸬酱龠M(jìn)作用,有些事情有經(jīng)驗(yàn)反而不太好。個(gè)人理解經(jīng)驗(yàn)應(yīng)該是幫助我們更快更好的完成我們要做的事情,從這一點(diǎn)出發(fā)經(jīng)驗(yàn)肯定是好的,但是在我們?nèi)胄械拈_始階段,我們的經(jīng)驗(yàn)往往不成形,而且分不清哪些是好的經(jīng)驗(yàn)?zāi)男┦遣缓玫慕?jīng)驗(yàn)。
經(jīng)驗(yàn)會(huì)在工作不斷碰壁的情況下逐步積累起來,我也一直堅(jiān)持一個(gè)觀點(diǎn),做項(xiàng)目如果研發(fā)階段非常順利,這樣注定后期要有忙不完的事情,反而做項(xiàng)目過程中問題不斷,所有的問題都迎刃而解,對于個(gè)人來說是寶貴的財(cái)富,對于一些平淡的事情我們可能過陣子就沒印象了,反而是項(xiàng)目中哪些折騰的我們多少個(gè)夜晚無眠的,會(huì)給人留下深刻的印象,使我們在下次在遇到這樣的問題時(shí)能夠快速的反應(yīng)。還有就是做項(xiàng)目的經(jīng)驗(yàn),從項(xiàng)目立項(xiàng)開始就介入,一直堅(jiān)持項(xiàng)目做完會(huì)給人很大的提升,相反在項(xiàng)目中后期進(jìn)入項(xiàng)目的,項(xiàng)目的架構(gòu)和流程已經(jīng)基本成型,只能沿著項(xiàng)目的路子走下去,會(huì)使后期介入的人員缺乏對項(xiàng)目的總體認(rèn)識,風(fēng)險(xiǎn)相對也比較少。項(xiàng)目早期介入的相當(dāng)于沒路走,自己趟出一條路來走,項(xiàng)目后期介入的相當(dāng)于選擇走哪條路,路已經(jīng)有了,只是做個(gè)選擇。
再有一個(gè)項(xiàng)目經(jīng)驗(yàn)就是,做項(xiàng)目時(shí),項(xiàng)目使用的工程文件的來處,基于老項(xiàng)目改造的話會(huì)有很多的細(xì)節(jié)問題無法體會(huì),如果以后有相同的項(xiàng)目更換硬件MCU平臺時(shí),可能會(huì)帶來一些不必要的風(fēng)險(xiǎn);加入新項(xiàng)目的工程是自己創(chuàng)建的或者接手的項(xiàng)目在時(shí)間允許的情況下,自己創(chuàng)建工程,這樣在有新項(xiàng)目來時(shí),會(huì)讓我們能夠得心應(yīng)手。