零基礎如何學好嵌入式?七個步驟入門
時間:2024-01-16 來源:華清遠見
Hello!大家好,這一期博主就給大家說一下零基礎的寶寶們如何學習嵌入式開發~
“嵌入式開發”沒有接觸過的同學可能會不明覺厲,但是只要你了解了,感興趣并且有一個正確的學習路線的話,零基礎也能入門。所謂嵌入式就是以應用為中心,以計算機技術為基礎,軟硬件可裁剪的一個專用計算機系統。簡單來說嵌入式開發就是在一些特定的硬件設備上跑軟件程序,那智能手表、智能音箱這些我們生活中常見的一些產品都屬于嵌入式開發的領域。但是這些產品在設計開發的時候都會受到一些限制,比如說處理器的選擇、內存容量、電源的要求、功耗等等,所以嵌入式開發需要考慮很多細節和優化問題。
下面,博主就給你介紹一個簡單易懂的學習路線,讓你能夠從零開始學習嵌入式開發。
第一步:掌握Linux基本操作
什么是Linux呢?而我們為什么要學Linux呢?Linux是一個操作系統,類似于平常使用的Windows系統,因為Linux是嵌入式開發最常用的操作系統,是作為一個開發人員必會的內容。它有很多優點,比如開源、穩定、高效、靈活等。如果你想成為嵌入式開發人員之一,你必須要熟悉Linux的基本操作,比如如何使用命令行、如何管理文件和目錄、如何設置權限和用戶、如何創建文件寫代碼等。這些操作并不難,只要你多練習,就可以很快掌握。你可以在自己的電腦上安裝一個Linux系統,或者使用虛擬機或者遠程服務器來練習。
第二步:學習C語言基礎
之前有一個電視劇的愛心代碼比較出圈,引起很多女生的羨慕,這個時候就體現出程序員的浪漫了,所以寫代碼看代碼是必備技能啦。那為什么要學習C語言呢?可能會有人有疑問,包括學校相關專業基本大一都會學習C語言,因為C語言是計算機程序語言的基礎,學號C語言對后面學其他的語言也都有幫助,像是Java、python、C++等都是由C語言擴充或者延伸而來的。C也可以用于開發比較底層的東西,比如驅動、通信協議之類,在Unix和Linux環境中也是不可或缺的。對于C語言的學習來說,數組、指針、函數、結構體等都屬于比較核心的內容,這個階段大家需要多寫代碼、鍛煉初步的代碼邏輯思維。也可以寫一些小項目比如學生管理系統等,對自己這個階段所學的內容進行檢測。
第三步:了解數據結構
通過前面C語言的學習,這個階段需要對代碼進行進一步的提升,不能僅僅滿足于能寫代碼實現功能,而是需要繼續考慮數據怎樣存儲能更合理的利用空間,算法怎么寫才能更高效的實現該功能。代碼沒有一個具體的答案,但是可以不斷優化。那么數據結構就在其中起到不可或缺的作用。好的數據結構與算法能夠提升運行效率,同樣不好的數據結構與算法也會造成空間的浪費。對于嵌入式開發來說雖然不需要特別高深的算法處理大量的數據,但是掌握一些比較基礎的數據結構還是非常有必要的。比如線性結構如鏈表、棧、隊列、樹、圖等。可以通過這些邏輯結構來表達數據之間的關系,當然也可以通過順序存儲、鏈式存儲等不同的存儲方式來將該關系體現在計算機中。而且通過這門課的學習也能大大提高學生代碼邏輯的能力。此外在一些筆試題、面試題中也會涉及到一些排序、查找算法,所以還需要掌握一些常用的排序方法,如:冒泡、選擇、快速排序、插值排序等,查找算法如:二分法查找、分塊查找、哈希查找等。
第四步:應用層編程
以上都是基礎部分,從應用層開始才是核心部分的開始。應用層主要包括I/O進程、網絡編程等內容。如果以后考慮從事嵌入式軟件方面的工程師,那么這部分內容是必須要熟練掌握的。
linux中一切皆文件,大家要掌握對于文件的一些操作,比如文件IO、標準IO的函數調用、以及二者的特點等,以及對于靜態庫、動態庫的創建、特點等。進程、線程這邊重點掌握進程、線程的區別、特點;進程的創建過程;線程函數、進程函數的調用等。掌握線程如何實現互斥?線程如何實現同步?
進程間通信方式是哪7種?怎么使用的?它們各自特點及區別是什么?掌握好這些內容那IO進程就差不多啦。
網絡編程這部分還是重點在網絡上,網絡協議要了解一些,服務器、客戶端的創建(socket套接字通信)也是必須要會的內容,以及抓包工具、分析包、三次握手四次揮手、IO多路復用等等,這部分也是在面試、筆試中必問問題之一。當然這個階段完成就可以做一些項目來檢驗自己啦,比如:ftp聊天室、電子詞典等。
第五步:C++、QT
C++是C語言的繼承, 它保留了C語言原有的所有優點 ,并增加了面向對象的機制。考慮到后續就業階段C++也可以單獨作為一個就業方向.比如游戲行業,幾乎所有的3A游戲都是使用C++編寫的,可見它的需求量之廣。C++還是偏向理論一些,比如它的三大特性:封裝、繼承、多態,相對來說比較抽象,所以學完C++可以結合QT進行一些項目的編寫,理論結合實踐。有一些顯示在終端的命令無法直接給普通用戶使用,所以可以用QT將這些命令可視化,以界面的形式呈現出來更加直觀,也對于C++所學的內容能進行應用。這部分也可以做一些項目,比如:網絡調試助手、計算機、記事本、聊天室等。
第六步:學習STM32單片機
了解過的同學可能知道,單片機是一種集成了處理器、內存、輸入輸出接口等功能的微型電路板,它是嵌入式開發的基礎硬件設備。學習單片機可以讓你了解硬件的基本原理和操作方法,比如如何連接電源、如何配置引腳、如何編寫驅動程序等。
目前應用最多的還是32單片機,大家可以在開發板上進行實驗,可從GPIO點燈實驗入手逐步遞進掌握定時器、串口、ADC、DAC等,如先看板子白色絲印,再看原理圖,如果有底板有核心板就先看底板原理圖、再看核心板原理圖,通過看網絡編號等找到最終需要配置的引腳,可通過CubeMX等軟件進行配置生成對應的KEIL工程,然后編寫代碼燒錄即可。就業時可能會問是否會PCB,如果你能夠自己設計PCB板,那就更完美了。這部分寫代碼就需要大家之前的C語言功底啦,所以前面的基礎打好還是很有必要的。
第七步:底層開發
這部分內容普遍會覺得有點難,前面學的內容都是基于已經有板子、有操作系統的,那這部分回到操作系統層面上進行編程。
移植操作系統是嵌入式開發必須掌握的技能,需要了解U-BOOT、內核、根文件系統,以及它們的裁剪、編譯、燒寫過程。在這一塊,驅動是比較復雜的部分,需要同時懂得底層硬件和內核。
這部分掌握好了就可以去嵌入式底層崗位方向比如:嵌入式硬件工程師、驅動開發工程師等崗位投簡歷啦!
結語
以上就是博主給你介紹的零基礎學習嵌入式開發的七個步驟。當然,這只是一個大致的路線,并不涵蓋所有的細節和知識點。如果你想深入學習,還需要仔細研究一些書籍和資料,也可以參考華清遠見的課程以及多做一些實踐項目~本期內容就到這,下期再會咯~

