【畢業季|進擊的技術er】作為一名職場人,精心總結的嵌入式學習路線圖

活動地址:畢業季·進擊的技術er

文章目錄

    • 0、作者介紹
    • 1、前言
    • 2、嵌入式基礎必備知識
      • 2.1、學習內容
      • 2.2、學習建議
      • 2.3、學習資料
    • 3、嵌入式入門篇——51單片機
      • 3.1、學習內容
      • 3.2、學習建議
      • 3.3、學習資料
    • 4、STM32進階篇
      • 4.1、學習內容
      • 4.2、學習建議
      • 4.3、學習資料
    • 5、小而美的RTOS
      • 5.1、學習內容
      • 5.2、學習建議
      • 5.3、學習資料
    • 6、ARM+Linux篇
      • 6.1、學習內容
      • 6.2、學習建議
      • 6.3、學習資料
    • 7、總結

僅以此篇,送給剛畢業的你,望你前程似錦,未來道路一片光明。

?

0、作者介紹

我是一名嵌入式工程師,畢業近三年,回想畢業典禮,依稀還在昨日。

從畢業剛入世界500強企業,到弄明白心之所向,投身于熱愛的領域,耗費了太多的時間與經歷,今天我想以不一樣的視角,帶你去探索嵌入式技術er如何在技術領域快速成長
?
人們常說:“人生就是一場場游戲,我們要做的,就是打怪,升級,通關”,學習嵌入式的過程也是如此。

查看源圖像

1、前言

最近在CSDN上看到,好多人發布畢業季的話題,借此機會,也想著重新審視一下自己的學習歷程,以及結合自身和大牛,分享一些學習經驗,希望對大家有所啟發和幫助。

本文主要目的是為了

  • 提供一張嵌入式學習路線地圖
  • 提供不同階段的學習建議
  • 推薦不同階段的學習資料

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

?

本文將嵌入式學習路線分為幾個方面

  • 嵌入式基礎必備知識
  • 51單片機
  • STM32單片機
  • 小而美的RTOS
  • ARM+LINUX

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

?

2、嵌入式基礎必備知識

查看源圖像

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

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

?

2.1、學習內容

image-20220618093005641

  • C語言基礎

該部分,主要包括幾個核心知識點:三大語法結構常用的數據類型函數結構體指針文件操作等。

  • 硬件基礎知識

該部分,核心知識點在于:電路基礎知識數電模電基礎知識常用的電子元器件等。

  • 數據結構

核心知識點:數組隊列鏈表堆棧散列表等。

  • 操作系統

核心知識點:進程管理內存管理文件管理輸入輸出管理等。

  • 計算機原理

核心知識點:數據表示和運算存儲系統指令系統總線系統中央處理器輸入輸出系統等。

?

2.2、學習建議

  • 對于C語言基礎學習,一定要重點熟練掌握,根基的牢固直接決定了我們的代碼質量。
  • 對于硬件基礎學習,要適當了解,要能夠看懂一些簡單的電路結構,認識常用的電子元器件。
  • 對于數據結構學習,前五個是必備學習的,可能在剛開始學習的時候,可能會感覺不到作用在哪里,但是隨著接觸到嵌入式底層設計以及算法設計的時候,才會恍然大悟。
  • 對于操作系統學習,重點學習其思想,對相關知識點有一個大概的了解,后續接觸到繼續重點學習,這些無論是RTOS,還是Linux,都有涉及到的。
  • 對于計算機原理學習,可以將其看作是嵌入式系統的各個模塊的詳解,會讓你對嵌入式有一個整體的了解,每一個部分都值得深究。

?

2.3、學習資料

  • C語言基礎:推薦經典書籍**《C語言程序設計》(第2版)譚浩強版本**。
  • 硬件基礎:大學里面的《數電模電》書籍所涉及的知識即可。
  • 數據結構:推薦經典書籍**《數據結構》——嚴蔚敏版**。
  • 操作系統、計算機原理:我用的是**《王道》的系列叢書**,個人感覺不錯。

計算機組成、數據結構、操作系統、數據庫是嵌入式或者說計算機的入門必讀書籍,并且也被列入高校教材內,是真正的基礎知識。

?

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

這里涉及到一個重要的學習方法:項目導向的學習法

?

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

image-20220618091321192

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

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

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

?

3.1、學習內容

image-20220618093041553

該部分,主要在最小嵌入式系統中,實現各種有趣的實驗。通過51單片機的學習,我們要做到:

  • 軟件類

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

  • 硬件類

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

?

3.2、學習建議

  • 對于軟件類,我們主要做到:認識單片機,熟悉單片機的GPIO的輸入、輸出操作,串口通信協議掌握等,這些部分都是任何一款嵌入式設備的必備技能
  • 對于硬件類:我們主要做到:能看懂電路圖熟悉一些簡單模塊的設計電路,了解Altium Designer的使用方法。

?

3.3、學習資料

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

?

莊子說:“水之積也不厚,則其負大舟也無力。“

該部分,是嵌入式領域的基石,只有將基礎打牢,才能負得起Linux泰坦號。

?

4、STM32進階篇

查看源圖像

STM32是C51的進階版,擁有C51的基礎知識,開發STM32會得心應手。

STM32的系統架構以及硬件設計相比于C51來說,都是上升了一個維度的,這也是為什么我推薦入門學習C51的原因。

?

STM32F407平臺為基礎,去學習目前嵌入式主流的一些技術,探尋底層的原理,做到不同平臺,都能夠得心應手。

?

4.1、學習內容

image-20220618093112817

  • 基礎練習

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

  • 進階練習

該部分,主要練習:DMA通信SPI通信CAN通信LCD顯示屏ADC

  • 高階練習

該部分,主要學習:STM32時鐘架構總線架構電源管理代碼框架SDIO通信USB通信等。

?

4.2、學習建議

  • 對于基礎練習,主要目的是為了方便讓我們從C51STM32環境的過渡。
  • 對于進階練習,主要練習一些通信類相關的協議,可以結合一些傳感器進行開發。
  • 對于高階練習,主要目的是為了熟悉單片機的設計架構,編程的框架,以及一些更復雜的通信技術。

另外,STM32會有寄存器和庫函數兩個版本,建議交叉學習,理解會更加深刻。

?

4.3、學習資料

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

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

?

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

?

5、小而美的RTOS

查看源圖像

RTOS,實時操作系統,可以理解為STM32Linux之間的橋梁,由于其實現思想大都取之于Linux,所以也稱之為精簡版的Linux

我們常用的有實時操作系統有:UCOSVxWorkFreeRtos,近些年RT-Thread也異軍突起。

學習這些簡單的嵌入式系統,一來能夠幫助我們為學習Linux操作系統打下基礎,二來也能夠擴寬我們的職業道路。

前面也說過了,無論是UCOSFreeRtosRt-thread,其內部的設計思想大同小異,下面主要以Ucos為例。

5.1、學習內容

image-20220618092246693

  • 實時系統學習

該部分,主要學習:移植Ucos系統多任務管理調度算法消息隊列信號量互斥量事件內存管理等。

?

5.2、學習建議

  • 對于實時系統學習,除了上述的那些核心知識點外,還要結合2.1 基礎必備知識操作系統書籍加深理解。

?

5.3、學習資料

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

?

6、ARM+Linux篇

查看源圖像

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

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

?

Linux開發又分為驅動開發內核開發應用開發,每一個方向都需要幾年甚至幾十年的積累。

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

6.1、學習內容

image-20220618092751914

  • Linux基礎篇

該部分主要學習:Linux常用命令VIM學習Linux的Shell編程Gcc編譯Makefile等。

  • 驅動篇

該部分主要學習:內核模塊編譯原理字符設備驅動框架平臺設備驅動設備樹Pinctrl子系統I2C子系統中斷子系統塊設備驅動框架Bootloader

  • 內核篇

該部分主要學習:系統調用存儲管理進程管理內存管理文件管理等。

  • 應用篇

該部分主要學習:QT編程TCP/IP協議HTTP協議等。

?

6.2、學習建議

  • 對于基礎學習,剛接觸到Linux,一般比較難上手,與之前的單片機完全不同,需要一個熟悉環境的過程。
  • 對于驅動學習,重要在于明白“如何在Linux環境下編寫驅動程序”,驅動的底層原理還是那樣,加了一層層的框架,需要我們去熟悉。
  • 對于內核學習,上述也是系統的幾大核心特色,重點在于"如何使Linux性能最優"
  • 對于應用學習,上述的幾個方面也是基礎,重點還在于開發什么應用,去學習哪方面的知識,沒有定論。

對于Linux,有句老話“學習Linux,3年才算入門,5年才勉強算Linux工程師,對于不太熟悉的領域,博主也不敢妄加斷言。”

?

6.3、學習資料

  • 對于基礎學習,推薦**《鳥哥的Linux私房菜》《Unix環境高級編程》**等入門書籍。
  • 對于驅動開發,推薦**《Linux設備驅動開發詳解》**,Linux內核源碼詳解等。
  • 對于內核學習,推薦**《Linux Shell腳本攻略》《深入理解Linux內核》**等。
  • 對于應用開發,推薦**《嵌入式Linux應用開發完全手冊》《Unix網絡編程》**等。
  • 另外,推薦正點原子,野火,韋東山三個Linux開發教程,韋老師的課程好評居多,但還是看哪個更適合自己。

?

7、總結

全文整體的學習路線:嵌入式基礎學習 -> 51單片機 -> STM32單片機 -> RTOS篇 -> ARM+Linux

每一個部分,也都從學習內容學習建議學習資料三個方面來展開,層層深入,步步指引。

文章既是我的學習歷程,又結合了一些大佬的學習分享,不斷調整總結出來的,如有異同,可以討論。

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

最后,文章所涉及的學習資料以及整理的思維導圖全盤奉上:【Linux學習路線——DonGe】

六月的陽光燦爛,分別的淚花閃閃。不必把相聚的誓言宣,深厚的友情記在心間。今日告別,來日再見。同學們,讓我們重逢在完美的明天。祝你前程似錦,一帆風順!

活動地址:畢業季·進擊的技術er

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213636.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213636.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213636.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

印刷包裝企業做什么認證才有優勢

最近幾年,外貿出口過程中,越來越多的印刷和包裝企業被客戶要求進行各類認證和審核,比如,產品印刷包裝/吊牌等。他們已經意識到,印刷包裝供應商對于整個供應鏈管理的重要性,尤其是那些明確標示了…

由pandas.loc引發的未知錯誤AttributeError: ‘str‘ object has no attribute ‘isna‘

由于data.loc[value]和 data[data.keyvalue] 這兩者之間有一定的差異,第一種方式返回的可能是series,第二種方式返回的是dataframe,所以在做復雜條件篩選的的時候,可能會爆str相關的錯誤。 例如: account_instal[(ac…

嵌入式開發按怎樣的路線學習較好?

嵌入式開發按怎樣的路線學習較好? 在開始前我有一些資料,是我根據自己從業十年經驗,熬夜搞了幾個通宵,精心整理了一份「嵌入式從專業入門到高級教程工具包」,點個關注,全部無償共享給大家!&…

mysql的行鎖具體是怎么工作的

mysql行級鎖是怎么工作的? 加鎖的對象是索引,加鎖的基本單位是 next-key lock。在能使用記錄鎖或者間隙鎖就能避免幻讀現象的場景下, next-key lock 就會退化成記錄鎖或間隙鎖。 鎖的范圍,總結一下就是,對于唯一索引&a…

張馳咨詢:掌握流程改進的關鍵,深入了解六西格瑪綠帶培訓

尊敬的讀者,當您尋求提升個人能力,加強企業流程管理時,六西格瑪綠帶培訓無疑是您的不二選擇。本文將帶您深入了解六西格瑪綠帶培訓的核心內容、必備工具和實際案例,以助您在職業生涯中一帆風順。 六西格瑪綠帶培訓主要針對中層管…

C++- 格式化輸出

1.常規–格式化輸出 %d //整型輸出 %ld //長整型輸出 %o //以八進制數形式輸出整數 %x //以十六進制數形式輸出整數,或輸出字符串的地址 %u //以十進制數輸出unsigned型數據(無符號數)注意&…

element 點擊button彈出圖片 運用自帶隱藏的圖片查看器el-image-viewer瀏覽圖片

最近在開發一個圖片預覽效果,由于位置有限,沒有原始的縮略圖。 看了下elementUI的文檔,基本都是需要有縮略圖的情況下,才能有放大的圖。 所以網上找了下有個不錯的方案,其實也是elementUI自帶的功能,只是AP…

論文查重怎么找到需要更改的【詳細說明】

大家好,今天來聊聊論文查重怎么找到需要更改的,希望能給大家提供一點參考。 以下是針對論文重復率高的情況,提供一些修改建議和技巧: 論文查重怎么找到需要更改的 論文查重是保證學術誠信和提高論文質量的重要環節小發貓偽原創。…

班級管理的重要性

班級管理,就像是一座橋,連接著學生和老師,它的重要性不言而喻。 營造良好的學習氛圍 班級管理不僅僅是維護秩序,更是營造一個積極向上的學習氛圍。一個好的班級管理,能讓學生更加專注于學習,提高學習效率。…

Linux上的MAC地址欺騙

Linux上的MAC地址欺騙 1、查看mac地址法1:ifconfig法2:ip link show 2、臨時性改變 MAC 地址法1:使用iproute2工具包法2:使用macchanger工具 3、永久性改變 MAC 地址3.1 在 Fedora、RHEL下實踐3.2 在 Debian、Ubuntu、Linux Mint下…

人工智能革命近在咫尺:利用數據實現社會影響、增強決策力和新機遇

人工智能(AI)是指由計算機系統或機器執行的智能行為,如學習、推理和解決問題。人工智能不再是科幻小說中的事物,而是已經成為我們日常生活中不可或缺的一部分。從語音助手到自動駕駛汽車,從人臉識別到機器翻譯&#xf…

數據結構之----原碼、反碼、補碼

數據結構之----原碼、反碼、補碼 什么是原碼? 原碼:我們將數字的二進制表示的最高位視為符號位,其中 0 表示正數,1 表示負數,其余位表示數字 的值。 什么是反碼? 反碼:正數的反碼與其原碼相…

網絡攻擊(二)--情報搜集階段

4.1. 概述 在情報收集階段,你需要采用各種可能的方法來收集將要攻擊的客戶組織的所有信息,包括使用社交網絡、Google Hacking技術、目標系統踩點等等。 而作為滲透測試者,你最為重要的一項技能就是對目標系統的探查能力,包括獲知…

文生圖:AE/VAE/VQVAE/VQGAN/DALLE模型

文生圖模型演進:AE、VAE、VQ-VAE、VQ-GAN、DALL-E 等 8 模型本文中我們回顧了 AE、VAE、VQ-VAE、VQ-VAE-2 以及 VQ-GAN、DALL-E、DALL-E mini 和 CLIP-VQ-GAN 等 8 中模型,以介紹文生圖模型的演進。https://mp.weixin.qq.com/s/iFrCEpAJ3WMhB-01lZ_qIA 1…

pta模擬題(7-38 完全二叉樹的層序遍歷)

一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是完美二叉樹。對于深度為 D 的,有 N 個結點的二叉樹,若其結點對應于相同深度完美二叉樹的層序遍歷的前 N 個結點,這樣的樹就是完全二叉樹。 給定一棵完全…

GaussDB數據庫語法及gsql入門

一、GaussDB數據庫語法入門 之前我們講了如何連接數據庫實例,那連接數據庫后如何使用數據庫呢?那么我們今天就帶大家了解一下GaussDB,以下簡稱GaussDB的基本語法。 關于如何連接數據庫,請戳這里。 學習本節課程之后&#xff0c…

【開題報告】基于SpringBoot的消防知識科普平臺的設計與實現

1.選題背景 消防知識科普平臺的設計與實現是為了提高公眾對于消防安全的認知和應對能力,促進社會消防文化的普及和發展。在中國,火災事故時有發生,造成了重大人員傷亡和財產損失。因此,建立一個基于Spring Boot的消防知識科普平臺…

docker---網絡

docker的網絡模式: 1、橋接模式:創建docker時不需要指定網絡類型,默認模式。 2、host模式: 容器將不會虛擬出自己的網卡,也沒有自己的ip地址,全部使用宿主機的ip和端口。 3、container模式:容器和容器之間…

第五屆計算機能力挑戰賽國賽C語言組題解(專科組)

前言: ??前兩天計算機能力挑戰賽國賽結束了,拿著題做了一遍,發現難度真的不大,比省賽簡單多了,只是有時候可能有的同學拿著題,沒認真仔細去讀,或者說緊張了導致自己發揮不好吧。以下是個人的題…

【運維】將Linux的硬盤當內存用,Linux內存不夠用的時候如何用硬盤提升內存

文章目錄 內存不夠用,可以用硬盤當內存嗎如何取消這種交換空間交換空間是優先使用的還是說原始內存是會被優先使用的 內存不夠用,可以用硬盤當內存嗎 是的,可以使用硬盤作為虛擬內存來擴展容器中的內存。這個過程被稱為“交換”或“交換空間…