
本期話題
本科計算機軟件工程專業,想轉嵌入式,該如何學習?
聊一聊
前幾天有粉絲跟我咨詢,他本科軟件工程專業,想轉嵌入式軟件開發,自己也找了些課程再看,但是學得很迷茫,想向我請教一下學習路線問題。
大學是學純軟件開發的,c 和 c++,數據結構、操作系統這些底子都還有。
因為畢業后一直沒在行業里面發展,沒接觸過真實的行業開發環境,大部分是從網上了解一些計算機行業的情況,貌似選擇互聯網很卷,一些Java,前端開發的很惱火,后端開發也很卷,所以我想從嵌入式開發入行,軟硬一起學,核心訴求就是,不想以后35歲,中年危機,太惱火了。
這位小伙伴的編程基礎知識是具備的,c 和 c++,數據結構,并且計算機專業學習過操作系統知識。我建議從Linux系統編程入行,再逐步擴展補充其他嵌入式知識。
下邊是我根據他的描述,給的幾點建議:
從Linux系統應用編程入手。從系統應用編程(c語言/C++)是比較容易的。可以先入行,積累工作經驗,慢慢就找到自己的方向了。
基于 linux 的嵌入式應用程序開發,在 arm 平臺上調用 linux 系統 api 接口編寫程序。這個對他來說比較好入手,并且他也有基礎。主要學習 linux 操作系統編程。熟悉他的各種系統資源,比如文件操作、網絡編程、多進程/多線程編程、進程間通信等等。
如果對底層硬件控制感興趣,可以逐步去學習 linux 驅動開發(這部分對新手不太友好),驅動開發需要熟悉 linux 的系統資源,驅動框架,內核知識,硬件控制知識等。學習這部分,如果沒有相關工作經驗,找工作的話,比較困難。
學習 STM32 單片機,這部分需要學習硬件知識,而對于軟件專業的學生來說,自學門檻高一點。
這是嵌入式的一個方向(ARM-cortexM),相對 linux 來說,簡單一些。但是要學習它的硬件資源,控制邏輯,常用的外設模塊,軟件開發主要是調用官方提供的庫。常用的外設模塊要明白控制原理。
基于ARM-cortexM 單片機進階學習,RTOS 要學習一下。學習實時操作系統的原理、建立多任務編程的思想,會用RTOS提供的系統資源等。
總之,如果想盡快轉行進入公司工作的話,從 linux 應用編程切入會好一點。再根據自己的興趣,補充其他嵌入式相關的技術棧。
【微語】他人的建議只是參考,自己的內心才是答案。
感謝閱讀,加油~


覺得文章不錯,點擊“分享”、“贊”、“在看” 唄!