嵌入式軟體開發是否需要經驗,需要哪些基礎知識?
本人從畢業到現在一直在嵌入式軟體這個行業發展,已七年有餘,也曾經迷茫無助過,也驕傲自滿過,到現在算是趨於一個比較穩定的狀態,嵌入式軟體開發的專案本身程式碼量不會太大,除了一些特殊的方面外,基本難度都不是太大,曾經認為只要有人帶著,什麼樣的人都可以從事這個行業,從這兩年的經驗來看,以前想的可能有點太樂觀了,這兩年在用心帶幾個人,發現有些東西確實需要一定的積累才能做好,畢竟人和人的思維方式不同,考慮問題的角度千差萬別。本人對於技術的積累很少在一些網站或者論壇之類的做過交流,遇到問題時,我一般更希望儘自己的努力來解決,空閒的時間也希望自己看一些書籍,來提升一下內功,經過最近一兩年的轉變,開始覺得適時出來交流一下,接觸一下外面的世界,對自己的發展有利無害,可以藉助外面的發展情況來完善一些自己的思路和想法。
轉入正題,從事嵌入式軟體開發需要哪些基礎知識呢?首先得學過微控制器原理,對於底層的一些運作有個大致瞭解,最不濟也得明白數位電路是怎麼回事吧!之前和一些新入行的工程師交流發現,分不清什麼十進位制數,十六進位制和BCD,什麼bit位,不清楚十進位制數和十六進位制數在機器上儲存有什麼區別。對底層的基本原理壓根就沒接觸過,分析問題伏在問題表面現象上,有些問題扎著頭搞了兩個星期都沒有進展,到最後就是一個數的bit位除了一點問題,在面試時曾經遇到過這樣的問題,有個面試者在回答問題時,使用RS485匯流排,波特率9600,協議通訊有響應資料,每個通訊週期的資料量都會超出10個位元組,問其通訊週期時,堅定的回答,10ms一個週期,每個週期都會有十幾個位元組的資料,在反覆暗示後一直堅持自己的說法,對於嵌入式軟體開發,從事一兩年後,一定要問問自己uart,spi和i2c這些匯流排我們是不是都已經很熟悉了,對定時器和中斷我們是否都掌握了。
從事嵌入式軟體行業是否需要經驗呢?經驗這種東西是個很微妙的東西,有些事情經驗能起到促進作用,有些事情有經驗反而不太好。個人理解經驗應該是幫助我們更快更好的完成我們要做的事情,從這一點出發經驗肯定是好的,但是在我們入行的開始階段,我們的經驗往往不成形,而且分不清哪些是好的經驗哪些是不好的經驗。經驗會在工作不斷碰壁的情況下逐步積累起來,我也一直堅持一個觀點,做專案如果研發階段非常順利,這樣註定後期要有忙不完的事情,反而做專案過程中問題不斷,所有的問題都迎刃而解,對於個人來說是寶貴的財富,對於一些平淡的事情我們可能過陣子就沒印象了,反而是專案中哪些折騰的我們多少個夜晚無眠的,會給人留下深刻的印象,使我們在下次在遇到這樣的問題時能夠快速的反應。還有就是做專案的經驗,從專案立項開始就介入,一直堅持專案做完會給人很大的提升,相反在專案中後期進入專案的,專案的架構和流程已經基本成型,只能沿著專案的路子走下去,會使後期介入的人員缺乏對專案的總體認識,風險相對也比較少。專案早期介入的相當於沒路走,自己趟出一條路來走,專案後期介入的相當於選擇走哪條路,路已經有了,只是做個選擇。再有一個專案經驗就是,做專案時,專案使用的工程檔案的來處,基於老專案改造的話會有很多的細節問題無法體會,如果以後有相同的專案更換硬體MCU平臺時,可能會帶來一些不必要的風險;加入新專案的工程是自己建立的或者接手的專案在時間允許的情況下,自己建立工程,這樣在有新專案來時,會讓我們能夠得心應手。
先寫這麼多吧!以上僅是個人觀點,如有異議您就當看了個笑話,如有興趣可以留言討論。