當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式藝術(shù)
[導(dǎo)讀]最近看到APP上,給我推送了很多類似的回答,借此機會,也想著重新審視一下自己的學(xué)習(xí)歷程,以及結(jié)合自身和大牛,分享一些學(xué)習(xí)經(jīng)驗,希望對大家有所啟發(fā)和幫助。





人們常說:“人生就是一場場游戲,我們要做的,就是打怪,升級,通關(guān)”,學(xué)習(xí)嵌入式的過程也是如此。


前言

最近看到APP上,給我推送了很多類似的回答,借此機會,也想著重新審視一下自己的學(xué)習(xí)歷程,以及結(jié)合自身和大牛,分享一些學(xué)習(xí)經(jīng)驗,希望對大家有所啟發(fā)和幫助。

本文主要目的是為了

  • 提供一張嵌入式學(xué)習(xí)路線地圖

  • 提供不同階段的學(xué)習(xí)建議

  • 推薦不同階段的學(xué)習(xí)資料

3000余字,耗時1周,建議收藏;碼字不易,如有幫助,慷慨三連


本文將嵌入式學(xué)習(xí)路線分為幾個方面

  • 嵌入式基礎(chǔ)必備知識

  • 51單片機

  • STM32單片機

  • 小而美的RTOS

  • ARM+LINUX

在這個快節(jié)奏的時代,能靜下心,耐住性子看看文章,實屬不易。




嵌入式基礎(chǔ)必備知識




老子曰:“合抱之木,生于毫末:九層之臺,起于壘土;千里之行,始于足下”,根基的重要性不言而喻。

那么對于嵌入式這條路線而言,如何建立一個穩(wěn)固的根基?


2.1、學(xué)習(xí)內(nèi)容

  • C語言基礎(chǔ)

該部分,主要包括幾個核心知識點:三大語法結(jié)構(gòu)常用的數(shù)據(jù)類型、函數(shù)、結(jié)構(gòu)體、指針、文件操作等。

  • 硬件基礎(chǔ)知識

該部分,核心知識點在于:電路基礎(chǔ)知識數(shù)電模電基礎(chǔ)知識、常用的電子元器件等。

  • 數(shù)據(jù)結(jié)構(gòu)

核心知識點:數(shù)組、隊列鏈表、堆棧、、、散列表等。

  • 操作系統(tǒng)

核心知識點:進程管理內(nèi)存管理、文件管理輸入輸出管理等。

  • 計算機原理

核心知識點:數(shù)據(jù)表示和運算存儲系統(tǒng)、指令系統(tǒng)總線系統(tǒng)、中央處理器、輸入輸出系統(tǒng)等。


2.2、學(xué)習(xí)建議

  • 對于C語言基礎(chǔ)學(xué)習(xí),一定要重點熟練掌握,根基的牢固直接決定了我們的代碼質(zhì)量。

  • 對于硬件基礎(chǔ)學(xué)習(xí),要適當(dāng)了解,要能夠看懂一些簡單的電路結(jié)構(gòu),認(rèn)識常用的電子元器件。

  • 對于數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí),前五個是必備學(xué)習(xí)的,可能在剛開始學(xué)習(xí)的時候,可能會感覺不到作用在哪里,但是隨著接觸到嵌入式底層設(shè)計以及算法設(shè)計的時候,才會恍然大悟。

  • 對于操作系統(tǒng)學(xué)習(xí),重點學(xué)習(xí)其思想,對相關(guān)知識點有一個大概的了解,后續(xù)接觸到繼續(xù)重點學(xué)習(xí),這些無論是RTOS,還是Linux,都有涉及到的。

  • 對于計算機原理學(xué)習(xí),可以將其看作是嵌入式系統(tǒng)的各個模塊的詳解,會讓你對嵌入式有一個整體的了解,每一個部分都值得深究。


2.3、學(xué)習(xí)資料

  • C語言基礎(chǔ):推薦經(jīng)典書籍《C語言程序設(shè)計》(第2版)譚浩強版本。

  • 硬件基礎(chǔ):大學(xué)里面的《數(shù)電模電》書籍所涉及的知識即可。

  • 數(shù)據(jù)結(jié)構(gòu):推薦經(jīng)典書籍《數(shù)據(jù)結(jié)構(gòu)》——嚴(yán)蔚敏版

  • 操作系統(tǒng)、計算機原理:我用的是《王道》的系列叢書,個人感覺不錯。

計算機組成、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫是嵌入式或者說計算機的入門必讀書籍,并且也被列入高校教材內(nèi),是真正的基礎(chǔ)知識。


以上,不一定是全部看完才能體驗編程的樂趣,這個基礎(chǔ)是一個循序漸進的過程,也不是一朝一夕就能完成的,可以先有一個大概,后續(xù)做項目時,哪里不懂補哪里!

這里涉及到一個重要的學(xué)習(xí)方法:項目導(dǎo)向的學(xué)習(xí)法。




嵌入式入門篇——51單片機


在上面的基礎(chǔ)知識進行熟悉之后(C語言基礎(chǔ)、計算機組成、硬件基礎(chǔ)必備),我們準(zhǔn)備叩開嵌入式世界的大門。

入門篇,依舊推薦51單片機,當(dāng)然有人會說,直接上STM32豈不更好?

我的看法:建議新手還是以51單片機來入門,因為STM32體系架構(gòu)比51大很多,對于新手剛開始可能會不太容易適應(yīng)。


3.1、學(xué)習(xí)內(nèi)容

該部分,主要在最小嵌入式系統(tǒng)中,實現(xiàn)各種有趣的實驗。通過51單片機的學(xué)習(xí),我們要做到:

  • 軟件類

主要知識點有:認(rèn)識單片機、熟悉邏輯運算、點亮一顆LED燈、按鍵檢測、串口通信、定時器、中斷等。

  • 硬件類

主要知識點有:電阻元器件了解,基本模塊電路了解,時鐘電路嘗試?yán)L制51單片機原理圖和PCB


3.2、學(xué)習(xí)建議

  • 對于軟件類,我們主要做到:認(rèn)識單片機,熟悉單片機的GPIO的輸入、輸出操作,串口通信協(xié)議掌握等,這些部分都是任何一款嵌入式設(shè)備的必備技能

  • 對于硬件類:我們主要做到:能看懂電路圖,熟悉一些簡單模塊的設(shè)計電路,了解Altium Designer的使用方法。


3.3、學(xué)習(xí)資料

51單片機郭天祥的51單片機教程,經(jīng)典著作,經(jīng)久不衰,強烈推薦。


莊子說:“水之積也不厚,則其負(fù)大舟也無力?!?/span>

該部分,是嵌入式領(lǐng)域的基石,只有將基礎(chǔ)打牢,才能負(fù)得起Linux泰坦號。




STM32進階篇

STM32是C51的進階版,擁有C51的基礎(chǔ)知識,開發(fā)STM32會得心應(yīng)手。

STM32的系統(tǒng)架構(gòu)以及硬件設(shè)計相比于C51來說,都是上升了一個維度的,這也是為什么我推薦入門學(xué)習(xí)C51的原因。


STM32F407平臺為基礎(chǔ),去學(xué)習(xí)目前嵌入式主流的一些技術(shù),探尋底層的原理,做到不同平臺,都能夠得心應(yīng)手。


4.1、學(xué)習(xí)內(nèi)容

  • 基礎(chǔ)練習(xí)

該部分,主要練習(xí):點亮LED燈GPIO的輸入輸出操作、中斷操作、UART通信IIC通信

  • 進階練習(xí)

該部分,主要練習(xí):DMA通信SPI通信、CAN通信LCD顯示屏,ADC

  • 高階練習(xí)

該部分,主要學(xué)習(xí):STM32時鐘架構(gòu)、總線架構(gòu)、電源管理、代碼框架SDIO通信、USB通信等。


4.2、學(xué)習(xí)建議

  • 對于基礎(chǔ)練習(xí),主要目的是為了方便讓我們從C51STM32環(huán)境的過渡。

  • 對于進階練習(xí),主要練習(xí)一些通信類相關(guān)的協(xié)議,可以結(jié)合一些傳感器進行開發(fā)。

  • 對于高階練習(xí),主要目的是為了熟悉單片機的設(shè)計架構(gòu),編程的框架,以及一些更復(fù)雜的通信技術(shù)。

另外,STM32會有寄存器和庫函數(shù)兩個版本,建議交叉學(xué)習(xí),理解會更加深刻。


4.3、學(xué)習(xí)資料

STM32單片機:推薦正點原子、野火STM32F103或者STM32F407系列。

兩家的學(xué)習(xí)資料都非常豐富,既有詳細(xì)的文檔說明,也有完整的學(xué)習(xí)視頻教程,非常適合新手入門學(xué)習(xí)。


俗話說:“有道無術(shù),術(shù)尚可求,有術(shù)無道,止于術(shù)”。要明白道和術(shù)的區(qū)別,不要本末倒置。



小而美的RTOS

RTOS,實時操作系統(tǒng),可以理解為STM32Linux之間的橋梁,由于其實現(xiàn)思想大都取之于Linux,所以也稱之為精簡版的Linux。

我們常用的有實時操作系統(tǒng)有:UCOSVxWork,FreeRtos,近些年RT-Thread也異軍突起。

學(xué)習(xí)這些簡單的嵌入式系統(tǒng),一來能夠幫助我們?yōu)閷W(xué)習(xí)Linux操作系統(tǒng)打下基礎(chǔ),二來也能夠擴寬我們的職業(yè)道路。

前面也說過了,無論是UCOS、FreeRtosRt-thread,其內(nèi)部的設(shè)計思想大同小異,下面主要以Ucos為例。


5.1、學(xué)習(xí)內(nèi)容

  • 實時系統(tǒng)學(xué)習(xí)

該部分,主要學(xué)習(xí):移植Ucos系統(tǒng)、多任務(wù)管理、調(diào)度算法、消息隊列、信號量互斥量事件、內(nèi)存管理等。


5.2、學(xué)習(xí)建議

  • 對于實時系統(tǒng)學(xué)習(xí),除了上述的那些核心知識點外,還要結(jié)合2.1 基礎(chǔ)必備知識操作系統(tǒng)書籍加深理解。


5.3、學(xué)習(xí)資料

RTOS的學(xué)習(xí):依舊推薦正點原子,野火,因為這些實時操作系統(tǒng)開發(fā),可以基于STM32開發(fā)板,同時也有非常詳細(xì)的文檔和視頻教學(xué)。




ARM+Linux篇

學(xué)習(xí)完RTOS后,基本嵌入式所涉及的技術(shù)已經(jīng)掌握一半了,你也可以獨立完成一些小的項目,也可以找到一個不錯的工作,但是一定不要自我滿足,有機會一定要接觸Linux。

還是那句話:ARM+Linux,也是最為復(fù)雜的東西,如果你不去接觸Linux,你永遠(yuǎn)不知道嵌入式的魅力。


Linux開發(fā)又分為驅(qū)動開發(fā),內(nèi)核開發(fā),應(yīng)用開發(fā),每一個方向都需要幾年甚至幾十年的積累。

作為初學(xué)者,我們要做的就是宏觀了解,擴大我們的知識面,然后去選擇自己感興趣的方面。


6.1、學(xué)習(xí)內(nèi)容

  • Linux基礎(chǔ)篇

該部分主要學(xué)習(xí):Linux常用命令、VIM學(xué)習(xí)Linux的Shell編程、Gcc編譯Makefile等。

  • 驅(qū)動篇

該部分主要學(xué)習(xí):內(nèi)核模塊編譯原理、字符設(shè)備驅(qū)動框架、平臺設(shè)備驅(qū)動、設(shè)備樹、Pinctrl子系統(tǒng)、I2C子系統(tǒng)中斷子系統(tǒng)、塊設(shè)備驅(qū)動框架、Bootloader

  • 內(nèi)核篇

該部分主要學(xué)習(xí):系統(tǒng)調(diào)用存儲管理、進程管理、內(nèi)存管理、文件管理等。

  • 應(yīng)用篇

該部分主要學(xué)習(xí):QT編程、TCP/IP協(xié)議、HTTP協(xié)議等。


6.2、學(xué)習(xí)建議

  • 對于基礎(chǔ)學(xué)習(xí),剛接觸到Linux,一般比較難上手,與之前的單片機完全不同,需要一個熟悉環(huán)境的過程。

  • 對于驅(qū)動學(xué)習(xí),重要在于明白“如何在Linux環(huán)境下編寫驅(qū)動程序”,驅(qū)動的底層原理還是那樣,加了一層層的框架,需要我們?nèi)ナ煜ぁ?/span>

  • 對于內(nèi)核學(xué)習(xí),上述也是系統(tǒng)的幾大核心特色,重點在于"如何使Linux性能最優(yōu)"

  • 對于應(yīng)用學(xué)習(xí),上述的幾個方面也是基礎(chǔ),重點還在于開發(fā)什么應(yīng)用,去學(xué)習(xí)哪方面的知識,沒有定論。

對于Linux,有句老話“學(xué)習(xí)Linux,3年才算入門,5年才勉強算Linux工程師,對于不太熟悉的領(lǐng)域,博主也不敢妄加斷言?!?/span>


6.3、學(xué)習(xí)資料

  • 對于基礎(chǔ)學(xué)習(xí),推薦《鳥哥的Linux私房菜》,《Unix環(huán)境高級編程》等入門書籍。

  • 對于驅(qū)動開發(fā),推薦《Linux設(shè)備驅(qū)動開發(fā)詳解》,Linux內(nèi)核源碼詳解等。

  • 對于內(nèi)核學(xué)習(xí),推薦《Linux Shell腳本攻略》、《深入理解Linux內(nèi)核》等。

  • 對于應(yīng)用開發(fā),推薦《嵌入式Linux應(yīng)用開發(fā)完全手冊》、《Unix網(wǎng)絡(luò)編程》等。

  • 另外,推薦正點原子,野火,韋東山三個Linux開發(fā)教程,韋老師的課程好評居多,但還是看哪個更適合自己。




總結(jié)

全文整體的學(xué)習(xí)路線:嵌入式基礎(chǔ)學(xué)習(xí) -> 51單片機 -> STM32單片機 -> RTOS篇 -> ARM+Linux

每一個部分,也都從學(xué)習(xí)內(nèi)容學(xué)習(xí)建議,學(xué)習(xí)資料三個方面來展開,層層深入,步步指引。

文章既是我的學(xué)習(xí)歷程,又結(jié)合了一些大佬的學(xué)習(xí)分享,不斷調(diào)整總結(jié)出來的,如有異同,可以討論。

全文3000余字,耗時1周,如有幫助,望不吝點贊關(guān)注。

最后,文章所涉及的學(xué)習(xí)資料以及整理的思維導(dǎo)圖全盤奉上:【底部菜單欄】中獲??!


嵌入式藝術(shù)
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉