十年資深嵌入式大神:教你如何從零開(kāi)始學(xué)習(xí)路線解析
嵌入式開(kāi)發(fā)就是指在嵌入式操作系統(tǒng)下進(jìn)行開(kāi)發(fā),一般常用的系統(tǒng)有WinCE,ucos,vxworks,linux,android等。另外,用c,c++或匯編開(kāi)發(fā);用高級(jí)處理器,arm7,arm9,arm11,powerpc,mips,mipsel等,或加上操作系統(tǒng)也屬于嵌入式的開(kāi)發(fā)。
嵌入式系統(tǒng)(Embedded System)是指以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。舉例來(lái)說(shuō),大到油田的集散控制系統(tǒng)和工廠流水線,小到家用VCD機(jī)或手機(jī),甚至組成普通PC終端設(shè)備的鍵盤(pán)、鼠標(biāo)、硬盤(pán)、Modem等均是由嵌入式處理器控制的。
嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門(mén)最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專(zhuān)用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲(chǔ)器等)非常有限,并且對(duì)成本很敏感,有時(shí)對(duì)實(shí)時(shí)響應(yīng)要求很高等。特別是隨著消費(fèi)家電的智能化,嵌入式更顯重要。
像我們平常見(jiàn)到的手機(jī)、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數(shù)字相機(jī)(DC)、數(shù)字?jǐn)z像機(jī)(DV)、U-Disk、機(jī)頂盒(Set Top Box)、高清電視(HDTV)、游戲機(jī)、智能玩具、交換機(jī)、路由器、數(shù)控設(shè)備或儀表、汽車(chē)電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等都是典型的嵌入式系統(tǒng)。
第一部分:Linux平臺(tái)搭建與環(huán)境熟悉
了解linux系統(tǒng);區(qū)分各種版本的Linux系統(tǒng),以便于拓展 Linux視野。
1、Linux 簡(jiǎn)介;
2、Linux 系統(tǒng)的主要特點(diǎn);
3、Linux 的組成;
4、主要的 Linux 版本;
5、嵌入式 Linux簡(jiǎn)介與發(fā)展
第二部分:虛擬機(jī)安裝和LINUX系統(tǒng)安裝
1、虛擬機(jī)安裝;
2、Linux系統(tǒng)的安裝;
3、Linux系統(tǒng)的常用軟件的安裝;
4、Linux快速入門(mén)
5、 熟悉運(yùn)用 Linux環(huán)境下,常用命令的操作與系統(tǒng)設(shè)置,如常用的 Shell;掌握基本的Shell 應(yīng)用
第三部分:嵌入式LINUX環(huán)境搭建
1、 建立嵌入式 Linux開(kāi)發(fā)環(huán)境
2、 熟悉嵌入式開(kāi)發(fā)平臺(tái)
3、 嵌入式 Linux開(kāi)發(fā)工具
4、 Linux下的調(diào)試技巧
5、 MAKE工程管理器
6、 硬件環(huán)境的搭建;arm-linux-gcc與 gcc安裝配置
第四部分: U-Boot
了解 U-Boot 的作用及工作流程;了解Bootloader 的代碼結(jié)構(gòu)、編譯過(guò)程;移植U-Boot;掌握常用的U-Boot命令。
1、 Bootloader介紹
2、 u-boot工程介紹
3、 u-boot的編譯使用
4、 u-boot源碼分析
5、 u-boot資源分配
6、 配置編譯u-boot
7、 u-boot移植過(guò)程
8、 u-boot常用命令操作
9、 添加u-boot新命令
10、設(shè)置u-boot環(huán)境變量
11、 u-boot驅(qū)動(dòng)添加如網(wǎng)卡:DM9000
第五部分:LINUX內(nèi)核移植
熟悉內(nèi)核的原碼結(jié)構(gòu)和kbuild Makefile語(yǔ)法;掌握和內(nèi)核、驅(qū)動(dòng)模塊編譯相關(guān)的原理及方法。
1、Linux內(nèi)核介紹
2、Linux內(nèi)核特點(diǎn)
3、Linux內(nèi)核源代碼結(jié)構(gòu)
4、Linux內(nèi)核選項(xiàng)解析
5、Linux內(nèi)核編譯鏈接
6、內(nèi)核模塊編譯、使用方法
第六部分:LINUX根文件系統(tǒng)
1、busybox 包移植、編譯
2、Linux跟文件系統(tǒng)制作過(guò)程
3、根文件系統(tǒng)介紹
4. nfs文件服務(wù)器系統(tǒng)搭建
第七部分:LINUX應(yīng)用學(xué)習(xí)
嵌入式Linux應(yīng)用開(kāi)發(fā)和系統(tǒng)開(kāi)發(fā)是嵌入式Linux中最重要的一部分,也是企業(yè)人才需求最廣的一部分。
主要目標(biāo)是精通嵌入式Linux下的程序設(shè)計(jì),熟練掌握嵌入式Linux的開(kāi)發(fā)環(huán)境、系統(tǒng)編程以及網(wǎng)絡(luò)編程,熟悉C++、QT編程并且深刻體會(huì)整個(gè)嵌入式Linux項(xiàng)目開(kāi)發(fā)流程,強(qiáng)化學(xué)員對(duì)Linux應(yīng)用開(kāi)發(fā)的能力。
1、Linux系統(tǒng)中的進(jìn)程的概念,在應(yīng)用程序中線程與父子進(jìn)程的創(chuàng)建與應(yīng)用
2、線程之間、進(jìn)程之間的通信
3、進(jìn)程間通信基本概念
4、管道(PIPE)
5、信號(hào)(SIGNAL)
6、內(nèi)存映射(MAPPED MEMORY)
7、消息隊(duì)列(MESSAGE QUEUE)
8、信號(hào)量(SEMAPHORE)
9、共享內(nèi)存(SHARE MEMORY)@
10、tcPip協(xié)議在應(yīng)用程序中的編程開(kāi)發(fā)(SOCKET套接字編程開(kāi)發(fā))
10.1. ISO/OSI七層協(xié)議模型與IP網(wǎng)絡(luò)四層模式
10.2.TCP/IP協(xié)議簇
10.3. 基于嵌入式Linux的TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)
10.4. 基于嵌入式Linux的SOCKET編程
10.5.UDP與TCP的區(qū)別
10.6. UDP SERVER-CLIENT關(guān)系程
11、文件讀寫(xiě)與存儲(chǔ)
嵌入式設(shè)計(jì)應(yīng)具備的基本技能
1、Linux 基礎(chǔ)
- 安裝Linux操作系統(tǒng)
- Linux文件系統(tǒng)
- Linux常用命令
- Linux啟動(dòng)過(guò)程詳解
- 熟悉Linux服務(wù)能夠獨(dú)立安裝Linux操作系統(tǒng),能夠熟練使用Linux系統(tǒng)的基本命令
- 認(rèn)識(shí)Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng)
- Linux基本命令實(shí)踐
- 設(shè)置Linux環(huán)境變量
- 定制Linux的服務(wù)Shell
- 編程基礎(chǔ)使用vi編輯文件
- 使用Emacs編輯文件
- 使用其他編輯器
2、Shell 編程基礎(chǔ)
- Shell簡(jiǎn)介
- 認(rèn)識(shí)后臺(tái)程序Bash編程
- 熟悉Linux系統(tǒng)下的編輯環(huán)境
- 熟悉Linux下的各種Shell
- 熟練進(jìn)行shell編程熟悉vi基本操作
- 熟悉Emacs的基本操作
- 比較不同shell的區(qū)別
- 編寫(xiě)一個(gè)測(cè)試服務(wù)器是否連通的shell腳本程序
- 編寫(xiě)一個(gè)查看進(jìn)程是否存在的shell腳本程序
- 編寫(xiě)一個(gè)帶有循環(huán)語(yǔ)句的shell腳本程序
3、Linux下的C編程基礎(chǔ)
- linux c語(yǔ)言環(huán)境概述
- Gcc使用方法
- Gdb調(diào)試技術(shù)
- AutoconfAutomake Makefile 代碼優(yōu)化
- 熟悉Linux系統(tǒng)下的開(kāi)發(fā)環(huán)境
- 熟悉Gcc編譯器
- 熟悉Makefile規(guī)則編寫(xiě)Hello,World程序
- 使用 make命令編譯程序
- 編寫(xiě)帶有一個(gè)循環(huán)的程序
- 調(diào)試一個(gè)有問(wèn)題的程序
4、嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)
- 嵌入式系統(tǒng)概述
- 交叉編譯
- 配置TFTP服務(wù)
- 配置NFS服務(wù)
- 下載Bootloader和內(nèi)核
- 嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程熟悉嵌入式系統(tǒng)概念以及開(kāi)發(fā)流程
- 建立嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境制作cross_gcc工具鏈
- 編譯并下載U-boot
- 編譯并下載Linux內(nèi)核
- 編譯并下載Linux應(yīng)用程序
5、嵌入式系統(tǒng)移植
- Linux內(nèi)核代碼
- 平臺(tái)相關(guān)代碼分析
- ARM平臺(tái)介紹
- 平臺(tái)移植的關(guān)鍵技術(shù)
- 移植Linux內(nèi)核到 ARM平臺(tái)
- 了解移植的概念
- 能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到ARM9開(kāi)發(fā)板
6、嵌入式 Linux 下串口通信
- 串行I/O的基本概念
- 嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程
- Linux系統(tǒng)的文件和設(shè)備
- 與文件相關(guān)的系統(tǒng)調(diào)用
- 配置超級(jí)終端和MiniCOM
- 能夠熟悉進(jìn)行串口通信
- 熟悉文件I/O
- 編寫(xiě)串口通信程序
- 編寫(xiě)多串口通信程序
7、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計(jì)
- Linux系統(tǒng)進(jìn)程概述
- 嵌入式系統(tǒng)的進(jìn)程特點(diǎn)
- 進(jìn)程操作
- 守護(hù)進(jìn)程
- 相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進(jìn)程的概念
- 能夠編寫(xiě)多進(jìn)程程序編寫(xiě)多進(jìn)程程序
- 編寫(xiě)一個(gè)守護(hù)進(jìn)程程序
- sleep系統(tǒng)調(diào)用任務(wù)管理
- 同步與通信Linux任務(wù)概述任務(wù)調(diào)度
- 管道 信號(hào) 共享內(nèi)存 任務(wù)管理 API
- 了解Linux系統(tǒng)任務(wù)管理機(jī)制
- 熟悉進(jìn)程間通信的幾種方式
- 熟悉嵌入式Linux中的任務(wù)間同步與通信編寫(xiě)一個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸
- 編寫(xiě)一個(gè)使用共享內(nèi)存的程序
8、嵌入式系統(tǒng)中多線程程序設(shè)計(jì)
- 線程的基礎(chǔ)知識(shí)
- 多線程編程方法
- 線程應(yīng)用中的同步問(wèn)題了解線程的概念
- 能夠編寫(xiě)簡(jiǎn)單的多線程程序編寫(xiě)一個(gè)多線程程序