|
我是怎么自學嵌入式的
嵌入式的開發(fā),既有軟件又有硬件,軟硬結合得非常深入,可以這么說,不熟悉電子電路和硬件性能的,又或者不精通編程語言和思想的,都做不好嵌入式開發(fā)。
先來談一下定義,很多人會把嵌入式和單片機搞混,但大多時候,兩者的詞義在某些場景下好像也可以通用。嵌入式的英文是Embedded System,中文應該叫嵌入式系統(tǒng)了。
比較完整的解釋是:嵌入式系統(tǒng),是以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。
簡單總結:支持MMU(Memory Management Unit,內存管理單元)的,可以跑Linux,Android等大系統(tǒng),稱之為嵌入式;而不支持MMU的,跑RTOS或FreeRTOS等小系統(tǒng)的稱之為單片機。
2003年的網(wǎng)購環(huán)境,不像現(xiàn)在這么便捷,很多元器件,都要到廣州的賽格電子城去購買,而線路板畫好之后,更是一個麻煩事,很少有工廠會接打樣的訂單,有也很貴。不像現(xiàn)在,萬能的淘寶幾乎可以買到任何電子元器件,線路板畫好之后,上傳到立創(chuàng)等PCB樣板網(wǎng)站最快24小時就收到貨了。
我的第一個正式的單片機研發(fā)項目,使用飛利浦(現(xiàn)在的NXP)的芯片,記得型號是LPC908,TSOP8個腳位,不需要外部晶振,默認帶一個UART,只需要3.3V供電即可。當時這個項目也非常簡單,是一個三星手機的恢復出廠值的小設備,上電啟動時,設置好串口波特率,特定的時間發(fā)送3次數(shù)據(jù),三星的手機就恢復出廠設置了。當時芯片選型,線路板,指令抓取和單片機程序都是我一個人完成。
做嵌入式開發(fā)總結了幾條經驗:
1、做嵌入式開發(fā),還是要深入去了解硬件,雖然現(xiàn)在工作的崗位區(qū)分比較明顯,但在我入行的時候,硬件軟件可沒有分的這么清。原理圖線路板,有時間學畫一畫,對自己技術也是一種提高,對硬件的理解也有幫助,也不是非要那么精通,但自己親手畫過幾個板子,做過幾個項目之后,相信你會有不同的理解。
2、英語的底子還是要加強,做嵌入式開發(fā),如果看不懂芯片的Datasheet,那基本沒辦法工作的。其實和寫代碼編程一樣,只要能看懂,能理解,基本上在工作上應該就不會有障礙了。但是不能逃避,有些同學用漢化軟件,找中文數(shù)據(jù)手冊,這點我是不贊成的。
3、嵌入式開發(fā)從軟件上分為小系統(tǒng)和大系統(tǒng),我是建議都要掌握。從STM32的裸機系統(tǒng)開始,再嘗試跑個RTOS或國內的RT-Thread,基礎打牢了,再轉向Linux的系統(tǒng),這樣就比較完整了。即使是從Linux入門工作到現(xiàn)在的,我還是建議花點時間搞搞單片機,買一個stm32的開發(fā)板也很容易,嵌入式硬件基礎要熟悉,而軟件更是要精通。
4、開發(fā)工具要熟練,我發(fā)現(xiàn)很多同學拿個開發(fā)板到手,就直接接電開機,我的習慣的不管啥板子,我都接穩(wěn)壓源開機,一來可以看看工作電流,對功耗有一個概念,二來把短路電流CC設置小一點,也可以防止硬件問題燒壞主板。還有萬用表,示波器,邏輯分析儀都是必備工具,特別是邏輯分析儀,對寫軟件的工程師來講簡直是救命神器。
5、各種軟件IDE開發(fā)工具要熟練,很多人不知道keil有單步調試和斷點調試的功能,調試軟件全部用log輸出或者串口打印輸出,開發(fā)效率太低下了。除非是linux或者android的開發(fā),那確實沒法在線調試或仿真,但涉及算法都可以在VC++上面調試跑通之后,再移植過去。最后講一句啰嗦話,搞嵌入式要沉得住心,不要那么浮躁。作為搞技術和創(chuàng)業(yè)多年的人,在我眼中,做硬件兩三年的同學,才剛入門呢。
想學習和交流嵌入式的小伙伴加入上面微信交流群,一起加油吧,后浪們。
|
|