要想學好嵌入式Linux,首先要解決兩個重要問題:
1. 學什么?
2. 怎么學?
首先解決第一個問題。
嵌入式Linux的系統架構包括軟件和硬件兩個部分,如下圖:
再來看看一個成熟的嵌入式產品的開發流程是怎么一個過程:
- 1.硬件開發
- 責任人: 硬件工程師
- 負責部分:基於EVM板, 添加、修改、刪除硬件
- 2.Bootloader移植
- 責任人:系統工程師或驅動工程師
- 負責部分:將Bootloader移植到流程1所開發出來的硬件平台
- 3. Linux內核
- 責任人:系統工程師或驅動工程師
- 負責部分:將Linux內核移植到流程1所開發出來的硬件平台
- 4.根文件系統制作
- 責任人:系統工程師
- 負責部分:制作供內核啟動的根文件系統
- 5.1 業務相關的應用程序
- 責任人:應用工程師
- 負責部分:開發和產品密切相關的應用程序
- 5.2 業務相關的驅動程序
- 責任人:驅動工程師
- 負責部分:開發和產品密切相關的驅動程序,如觸摸屏、無線網卡
- 6. 功能測試,性能測試,系統集成測、實驗局(系統設備)、發布
看完上面這些,你應該對嵌入式Linux有一個大概的認識了。我們再來理清一下知識結構,再對其進行細分。先來看預覽一下“學什么”知識結構:
- 1.嵌入式處理器與裸機程序
- 2.Linux系統管理
- 3.Linux應用程序開發
- 4.Linux驅動程序開發
- 5.Linux內核開發與系統移植
再來對每一項要學習的東西進行匯集:
處理器:
1. ARM處理器工作模式
2. ARM系統寄存器
3. ARM尋址方式
4. ARM 匯編指令集
5. ARM環境C語言編程
6. ARM中斷與異常
7. ADS集成開發環境
8. 裸機程序開發(串口、LCD、時鍾、LED、按鍵……)
系統管理:
1. Linux定制安裝
2. Linux命令詳解
3. samba、nfs、tftp、wireshark使用
4. Shell編程
應用程序開發:
1. GCC、GDB、Makefile
2. 文件、時間編程
3. 多進程、多線程程序設計
4. 進程間通訊
5. 網絡編程
6. QT圖形化應用程序開發
7. Android圖形化應用程序開發
內核開發:
1. Linux內核配置與裁剪
2. Linux內核模塊開發
3. 根文件系統制作
4. 進程子系統
5. 內存子系統
6. Proc文件系統
7. 系統調用
8. 內核定時器
9. 內核異常分析
驅動程序開發:
1. 字符設備驅動程序
2. 總線、設備、驅動模型
3. 硬件訪問技術
4. 中斷處理
5. Input設備驅動
6. Platform驅動程序
7. PCI、USB驅動程序
8. 網卡驅動程序
9. 觸摸屏驅動程序
10. 串口驅動程序
參考資料:國嵌嵌入式Linux