近年來,随着計算機技術及集成電路技術的發展,嵌入式技術應用越來越廣泛,在航空航天、軍工、工控、醫療、電子、通訊、網絡等領域得到廣泛應用。
嵌入式技術也無疑成為當前熱門的IT技術之一,也越來越多的人想學習嵌入式技術,加入到這個行業中來。那嵌入式都要學習哪些内容?學習路線是怎樣的?下面我們一起來看看:
幹貨滿滿,建議先收藏起來~
嵌入式是一種軟硬件的綜合性技術,要學習的内容比較多,包括嵌入式軟件、嵌入式硬件,以及相關行業、産品的專業知識等。
但是作為零基礎入行,我們不可能,也沒有時間和精力把所有的知識都學個遍,隻需要掌握重點知識,尤其是一些不變的知識,然後再在工作中來拓展知識面,這樣才能起到事半功倍的學習效果。
嵌入式軟件工程師要做的事情就是根據産品需求,設計好軟件并讓硬件工作起來。嵌入式産品硬件部分,大體都是相同的,核心由CPU、RAM和FLASH幾大部分組成,而軟件會根據需求千差萬别。
而産品的具體功能就需要由軟件來實現,所以嵌入式軟件設計的工作量會是硬件設計的4-5倍,對應的就是嵌入式軟件工程師需求數量比硬件工程師大,而且嵌入式軟件技術學習起來相對容易一些!
下面我們重點來看看嵌入式軟件工程師的學習路線是怎樣的。
第一階段:C/C 、linux 操作系統 、數據結構與算法設計
C語言做為嵌入式領域的核心基礎,其掌握好壞的程度直接關系到後面内容學習的深度,同時C語言也是企業面試中核心考察點之一。
Linux系統已經占有嵌入式操作系統的 90%市場份額,掌握 Linux 操作系統不僅為嵌入式系統開發和應用打下基礎,也是為大數據、雲計算等新興網絡服務業務提供重要支撐。
數據結構是面試中考察的一個重點,也是後期階段項目和綜合項目程序設計的基礎,掌握一定數據結構和算法的思維,将有助于提高崗位競争力。
- 本階段需要掌握C/C 語言常用關鍵字的用法,熟練使用順序、分支和循環結構設計程序 ;
- 理解C語言指針含義,能夠熟練使用指針進行任意空間的操作,熟悉常用内存的分段機制 ;
- 理解一維數組空間和多維數組空間的使用方法,熟悉多維指針的邏輯特性和應用場景 ;
- 掌握C/C 語言函數的定義,理解函數重載的原理,熟悉函數指針的設計模式 ;
- 理解C 多态、虛類等面向對象的底層實現機制,了解C/C 語言編譯器工作流程 ;
- 熟悉Linux操作系統常用命令和文件系統結構 ;
- 了解常用的shell編程方法,熟悉make和Cmake工具的使用和配置 ;
- 熟悉常用數據結構的特點,掌握鍊表的常用操作方法,理解棧和隊列的特點和實現方法 ;
- 了解二叉樹的常用性質,理解深度遍曆和廣度遍曆的算法特征 ;
- 了解圖中常用的算法設計思想 ;
- 掌握查找、排序的經典算法設計思想和程序實現,了解STL的數據結構特性等。
第二階段:Linux 文件編程、Linux 多任務、Linux 網絡編程、嵌入式數據庫
通過上一階段的訓練,在本階段需要細化 Linux 操作系統下 IO文件操作,掌握Linux下文件IO和标準IO的内部原理,通過對動态庫和靜态庫原理分析,掌握其嵌入式商業項目開發中模塊化設計思維。
做為嵌入式應用開發工程師,多任務的資源管理、同步管理、互斥管理是重要的技能,也是面試時的熱門話題。因此這階段需要從Linux的進程和線程内存資源出發,剖析Linux下多任務的熱點問題,掌握處理多任務編程。
随着智能家居、車聯網、5G 通訊的普及,網絡服務成為了嵌入式應用研發的重要方向,從各大招聘網站上可以看得出對于網絡編程的需求非常的大。
- 掌握Linux下文件IO和标準IO的編程方法,理解其各自特點和應用場景;
- 熟悉Linux下VFS設計思想,掌握常用系統調用的使用方法;
- 了解Linux下進程的狀态和控制方法,父子進程、孤兒進程、守護進程、僵屍進程的特點;
- 掌握Linux下多進程控制程序方法;
- 熟練使用pthread庫實現Linux下的多線程任務,理解多線程的互斥和同步的方法;
- 掌握Linux下常用進程間通信的方法;
- 理解socket編程,熟悉TCP、UDP客戶服務器編程模型;
- 了解HTTP協議,了解select或epoll多路複用通信,理解libevent等反應堆設計模式;
- 熟悉使用版本控制工具,如git或svn工具。
第三階段:Qt編程
工控、車載系統中Qt被廣泛使用,這一階段需要掌握商業Qt開發方法。
- 掌握Qt5、Qt6的特點,熟悉Qmake、Cmake環境維護方法
- 理解Qt信号和槽的工作原理,熟悉常用控件的使用和自定義信号和槽的方法
- 掌握Qt的常用布局方式和約束關系
- 理解Qt的進程和線程工作原理,能夠使用Qt進行多任務處理
- 理解Qt的網絡編程方法,熟悉Qt的自定義組件開發方法
第四階段:ARM體系結構與接口技術
ARM 芯片目前發展趨勢越來越迅猛,地球上每一個人身上平均就有3塊 ARM 的芯片,本階段重點學習ARM體系的結構,從底層了解CPU的運行機制,在掌握一些基礎彙編後,為嵌入式底層開發打下堅實基礎。
- 了解ARM 體系結構的編程模型,寄存器和常用彙編的使用場景;
- 理解CortexA和CortexM下的中端控制器工作方式,了解NVIC工作方式;
- 掌握stm32開發配置環境,理解flash和ram調試程序方式;
- 熟悉GPIO、EXTI、UART、IIC、Timer控制器工作原理和編程方式;
- 掌握ST公司的HAL庫開發方法。
第五階段:嵌入式Linux系統移植
做為硬件系統上的軟件開發,交叉編譯器的作用非常重要,要求在掌握交叉編譯器工作原理基礎下,能夠熟悉常用的嵌入式開發中使用的工具選項,對嵌入式 Bootloader有深入理解。
Linux内核是目前嵌入式主流的操作系統,需要掌握Linux内核源碼結構,内核配置和編譯及調試方法,熟悉BSP工程師的常用方法,也為後期學習打下基礎。
嵌入式 BSP 工程師除了熟悉内核定制外,對于産品的文件系統也是工作的重頭,要求熟悉常用的嵌入式根文件系統制作方法,掌握根文件系統的工作原理。
- 掌握嵌入式交叉編譯器的常用工具作用和使用方法,熟悉常用工具選項的含義;
- 理解嵌入式編譯、鍊接的原理,熟悉二進制文件和ELF文件特點和制作方法;
- 理解嵌入式Bootloader工作原理,掌握Uboot移植和使用方法;
- 理解Linux内核編譯、配置、啟動原理,了解常用BSP開發定制方法;
- 熟悉嵌入式最小根文件系統的制作方法,busybox、buildroot、ycoto的制作嵌入式根文件系統的方法;
- 掌握嵌入式常用網絡配置方法,熟悉NFS、Ramdisk、Yaffs2等文件系統方法。
第六階段:Linux驅動編程
這一階段要求掌握 Linux 内核開發環境特點,能夠獨立完成Linux驅動模塊開發環境搭建和編程。
字符設備是 Linux 驅動中占比最大的設備,掌握字符設備驅動的編寫方法,可以應付實際工程中大部分設備驅動開發,也為後面内核驅動子系統的學習提供保障。要求掌握linux字符設備核心結構和核心操作驅動接口編寫方法,剖析源碼,完成驅動的編程學習。
- 掌握Linux内核模塊編程的方法和驅動模塊開發的環境搭建方法;
- 掌握Linux内核下字符設備工作原理,熟悉file_operations結構體核心成員的使用;
- 能夠熟練使用内核鍊表、紅黑樹解決應用空間和内核空間的需求;
- 掌握container_of原理,内核Kfifo結構的設計和使用方法;
- 了解内核中斷控制子系統的結構,熟悉利用中斷控制系統實現驅動異步事件的方法;
- 了解常用Linux上半部和下半部機制;
- 掌握Linux的設備樹下的驅動設計方法,熟悉bus驅動設計思想。
以上就是嵌入式軟件工程師要學習的主要内容,零基礎入門學習嵌入式的話周期還是較長,門檻較高。自學的話,還是需要較強的學習能力和專業基礎的。但是隻要認真學習,循序漸進,一步步紮實學好,半年堅持下來,相信會成功上岸。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!