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