聽哥一句勸,按這套嵌入式的課程內容和課程體系去學習
聽哥一句勸,按這套嵌入式的課程內容和課程體系去學習
一、嵌入式的難點
嵌入式開發(fā)比互聯網軟開(比如Java后端)還是要難一些的,比如Java開發(fā),基本也都是用戶態(tài)的東西,但嵌入式很多東西都深入到了內核態(tài)。
二、總體學習思路
總體來說,還是可以把嵌入式學習分為三個大的階段:
首先基礎學習階段,這就包括通用編程基礎(C語言、數據結構/算法、操作系統(tǒng)、計網、計組、Linux系統(tǒng)基礎)和基本的硬件基礎,扎實地掌握這兩大基礎,是后續(xù)持續(xù)發(fā)展和不斷進步的動力源泉。
其次就是嵌入式應用編程階段,或者說系統(tǒng)平臺編程階段。因為一般會以特定的嵌入式平臺和特定的嵌入式操作系統(tǒng)為依托,熟悉這個系統(tǒng)平臺上的編程方法和流程。以常見的ARM+Linux平臺為例,需要掌握從內存管理到多任務編程、文件I/O、網絡編程,甚至圖形化界面編程等幾個大的方面。
最后就是深入嵌入式底層開發(fā)階段,最常見的就是內核開發(fā)和驅動開發(fā),這些統(tǒng)屬于內核態(tài)開發(fā)范疇,所以需要對操作系統(tǒng)內部機制有所涉獵和理解,在此基礎上需要掌握從系統(tǒng)移植到內核開發(fā)、驅動開發(fā)的各個細節(jié),這是成神之路。
文章相對比較長,字數比較多,大家可以先打開頭像關注我,之后慢慢看,///插播一條:我自己在今年年初錄制了一套還比較系統(tǒng)的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像左下角黑色字體加我也能領取哦。最近比較閑,帶做畢設,帶學生參加省級或以上比賽///
三、嵌入式應用領域
工控、儀器儀表、消費電子、LoT等等。
四、嵌入式方向
純硬件:硬件電路、PCB、芯片等等。
軟硬結合:不帶操作系統(tǒng):單片機開發(fā)和嵌入式裸機開發(fā)
帶操作系統(tǒng):用戶態(tài):應用程序開發(fā)和內核態(tài):內核開發(fā)+驅動開發(fā)
五、嵌入式相關崗位
嵌入式Linux工程師、嵌入式應用工程師、嵌入式系統(tǒng)工程師
嵌入式內核工程師、嵌入式驅動工程師
六、嵌入式知識學習
C語言、C++、數據結構與算法、操作系統(tǒng)原理、操作系統(tǒng)原理、計算機原理、單片機原理、微機原理、Linux操作系統(tǒng)、嵌入式硬件基礎
七、常用開發(fā)工具
Linux操作系統(tǒng)、常見Linux命令和實用工具、Git/SVN、shell、Vim、GCC、Makefile、GDB、交叉編譯工具、SSh、FTP等等。
八、嵌入式典型平臺
體系結構:概念和體系結構、工作模式、指令集、尋址方式、寄存器、內存管理單元、常見接口和控制器、通用編程模型、GPIO、中斷、定時器、A/D轉換
九、常用協(xié)議
UART、IIC、SPI、CAN、USB、局域互聯網絡LIN、TCP/IP
十、無線模塊
藍牙、WIFI、ZigBee、RF
十一、傳感器
溫度、濕度、光敏、壓力、觸摸感應、紅外、多軸傳感器、GPS、顯示模塊
十二、嵌入式應用層開發(fā)
內存管理/使用:內存分配、內存管理
多任務/編程:進程、線程
文件I/O編程:文件、I/O
網絡編程:TCP、IP、UDP、Socket
圖形化界面編程:Qt
十三、嵌入式底層開發(fā)
可運行系統(tǒng):BootLoader、Linux內核、根文件系統(tǒng)
Linux內核編程
Linux驅動開發(fā):字符設備開發(fā)、塊設備開發(fā)、網絡設備開發(fā)、總線設備開發(fā)