嵌入式Linux開發(fā)詳解:基于AT91RM9200和Linux2.6
定 價:29 元
- 作者:劉慶敏 ,等 著
- 出版時間:2010/5/1
- ISBN:9787512400719
- 出 版 社:北京航空航天大學出版社
- 中圖法分類:TP316.81
- 頁碼:246
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書介紹了嵌入式Linux開發(fā)需要掌握的基礎知識,采用分層的方法對關鍵技術進行了詳細的講解,且輔以大量實例。共分為7章。第1、2章介紹嵌入式系統(tǒng)和Linux的基礎知識。第3~7章從實踐的角度分層次介紹嵌入式Linux開發(fā)的流程和關鍵技術。其中,第3章介紹硬件平臺;第4章介紹Boot Loader的基礎理論,對Uboot的移植、代碼分析、關鍵技術情景分析等進行了深入探討;第5章介紹了Linux內核移植需要具備的知識,重點分析了內核映像格式以及Boot Loader與內核的通信機制;第6章在介紹嵌入式文件系統(tǒng)的基礎上,設計并實現(xiàn)了一個嵌入式混合文件系統(tǒng);第7章介紹了嵌入式開發(fā)環(huán)境的搭建,并簡單介紹了一個數(shù)據(jù)網(wǎng)關的實例。
本書內容可操作性強,適合嵌入式Linux開發(fā)初學者參考,也可以作為高等院校有關嵌入式系統(tǒng)開發(fā)與應用的實驗參考書。
曾經(jīng)夢想成為一名作家,就像喜歡的余秋雨、路遙、霍達一樣,思想躍動于筆端。不過似乎總是缺少那么一份靈性,文學之路與我漸行漸遠。幸運的是,緣于技術,拜China Unix所賜,有了這本書,也因此圓了一個兒時的夢想。
記得是從2006年夏天開始接觸嵌入式系統(tǒng).學習ARM、Linux,雖然忙碌但很充實。在學習的間隙,本著“好記性不如爛筆頭”的原則,想要把所學都記錄下來。但是傳統(tǒng)的紙筆記錄太慢,有時候難以把問題的場景清晰而又完整地記錄下來,就尋找合適的網(wǎng)絡記錄手段,于是就有了筆者的博客。
開始純粹是自己的總結筆記,沒想到網(wǎng)友的評價還不錯,博客的瀏覽量提高了,也因此交到了很多朋友。
在本書的編寫過程中,得到了很多人的支持和幫助。
第1章 嵌入式系統(tǒng)設計概述1
1.1 嵌入式系統(tǒng)的定義1
1.1.1 嵌入式系統(tǒng)的發(fā)展歷史2
1.1.2 嵌入式系統(tǒng)的組成3
1.1.3 嵌入式系統(tǒng)的特點4
1.2 嵌入式系統(tǒng)設計概述5
1.3 嵌入式系統(tǒng)的學習方法6
本章總結6
第2章 磨刀不誤砍柴工7
2.1 Linux概述7
2.2 Linux的安裝8
2.2.1 創(chuàng)建一個新的虛擬機9
2.2.2 在虛擬機上安裝Red Hat Linux 911
2.3 Red Hat Linux 9的初步設置18
2.3.1 VMware tools的安裝20
2.3.2 網(wǎng)絡設置22
2.4 使用shell提高效率24
2.4.1 shell初始化文件配置24
2.4.2 常用的腳本26
2.5 學習開發(fā)工具的使用30
2.5.1 Vim高級技巧30
2.5.2 編譯流程32
2.5.3 工程管理器make37
2.6 嵌入式Linux常用的命令42
2.6.1 Linux基本命令42
2.6.2 arm?linux?系列47
2.6.3 diff和patch的使用52
本章總結57
第3章 走馬觀花58
3.1 本書基于的硬件平臺58
3.1.1 ARM概述59
3.1.2 ARM命名規(guī)則60
3.1.3 AT91RM9200簡介61
3.1.4 K9I開發(fā)板概述63
3.2 讓系統(tǒng)先跑起來65
3.2.1 準備工作65
3.2.2 下載Boot Loader71
3.2.3 內核和文件系統(tǒng)72
3.2.4 搭建交叉編譯環(huán)境75
3.2.5 應用程序測試76
3.3 深入理解硬件平臺78
3.3.1 最小系統(tǒng)組成78
3.3.2 時鐘系統(tǒng)78
3.3.3 NVM82
3.3.4 JTAG接口87
本章總結91
第4章 Boot Loader92
4.1 準備工作92
4.1.1 整合資源92
4.1.2 代碼閱讀工具93
4.2 Boot Loader概述94
4.2.1 Boot Loader概念94
4.2.2 Boot Loader在嵌入式系統(tǒng)中的必要性95
4.2.3 Boot Loader的啟動流程96
4.2.4 Boot Loader如何固化97
4.3 AT91RM9200的啟動機制98
4.3.1 片內啟動98
4.3.2 片外啟動101
4.3.3 3種啟動場景102
4.4 Boot Loader的移植103
4.4.1 Loader和Boot104
4.4.2 Uboot的移植108
4.5 Uboot的3種啟動方式無關性設計114
4.5.1 背景介紹115
4.5.2 重映射的理論模型115
4.5.3 Uboot的不合理性分析116
4.5.4 解決方案116
4.6 Boot Loader深入分析119
4.6.1 將ELF文件轉換為BIN119
4.6.2 Uboot源代碼分析123
4.6.3 Uboot的命令機制129
4.6.4 Uboot的source實現(xiàn)133
本章總結139
第5章 Linux內核移植140
5.1 嵌入式操作系統(tǒng)的選擇140
5.2 Linux 2.6 介紹142
5.3 Makefile體系144
5.4 內核的移植150
5.4.1 基本移植151
5.4.2 出現(xiàn)的問題155
5.5 內核映像格式159
5.5.1 生成過程160
5.5.2 zImage自解壓引導過程163
5.6 Boot Loader與內核的通信機制168
5.6.1 基本模型168
5.6.2 tagged list組織方式169
5.6.3 Boot Loader實現(xiàn)173
5.6.4 Linux內核實現(xiàn)179
本章總結186
第6章 文件系統(tǒng)187
6.1 概述187
6.2 庫191
6.2.1 庫的概述191
6.2.2 庫的命名191
6.2.3 庫的制作方法192
6.3 一個最簡單的根文件系統(tǒng)193
6.4 基本功能完備的根文件系統(tǒng)201
6.4.1 修改現(xiàn)有的文件系統(tǒng)映像201
6.4.2 從零開始制作根文件系統(tǒng)204
6.4.3 網(wǎng)絡功能213
6.5 嵌入式混合文件系統(tǒng)——EFS226
6.5.1 問題提出226
6.5.2 系統(tǒng)設計方案226
6.5.3 組件實現(xiàn)229
6.5.4 系統(tǒng)集成設計231
6.5.5 輔映像制作236
本章總結237
第7章 應用程序238
7.1 應用開發(fā)環(huán)境的建立238
7.1.1 嵌入式Linux的GDB調試環(huán)境建立238
7.1.2 嵌入式Linux的NFS開發(fā)環(huán)境建立239
7.1.3 嵌入式Linux的TFTP開發(fā)環(huán)境建立241
7.1.4 嵌入式Linux的DHCP開發(fā)環(huán)境建立242
7.2 串行/網(wǎng)絡數(shù)據(jù)網(wǎng)關244
7.2.1 基本原理244
7.2.2 數(shù)據(jù)幀的設計245
7.2.3 網(wǎng)絡異常情況的處理245
本章總結246
參考文獻247
為什么要采用交叉編譯呢?原因有兩個。一是目標平臺所需要的BootLoader以及OS核心還沒有建立時,需要做交叉編譯。二是目標機設備不具備一定的處理器能力和存儲空間,即單獨在目標板上無法完成程序開發(fā),所以只好求助宿主機。這樣可以在宿主機上對即將在目標機上運行的應用程序進行編譯,生成可以在目標機上運行的代碼格式,然后移植到目標板上,也就是目前嵌入式程序開發(fā)的Host/Targct模式。
(3)嵌入式系統(tǒng)的程序需要固化
通用的系統(tǒng)在測試完成后就可以直接投入使用,其目標環(huán)境一般是PC機,因此在總體結構上與開發(fā)環(huán)境差別不大。而嵌入式系統(tǒng)的開發(fā)環(huán)境是PC機,但是應用軟件在目標環(huán)境下必須存儲在非易失性存儲器中,保證用戶關機后下次能夠再次使用。因此,在系統(tǒng)應用軟件開發(fā)完成之后,應生成固化版本。
此外,嵌入式系統(tǒng)還需要提供強大的硬件開發(fā)工具和軟件包的支持,需要設計者從速度、功能和成本綜合考慮。此外,嵌入式系統(tǒng)對穩(wěn)定性、可靠性、功耗、抗千擾性等方面的性能要求都比通用系統(tǒng)的要求更為嚴格,所以相對而言,嵌入式系統(tǒng)的軟件開發(fā)難度更大一些。