嵌入式Linux開發(fā)詳解:基于AT91RM9200和Linux2.6
定 價:29 元
- 作者:劉慶敏 ,等 著
- 出版時間:2010/5/1
- ISBN:9787512400719
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類:TP316.81
- 頁碼:246
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書介紹了嵌入式Linux開發(fā)需要掌握的基礎(chǔ)知識,采用分層的方法對關(guān)鍵技術(shù)進(jìn)行了詳細(xì)的講解,且輔以大量實(shí)例。共分為7章。第1、2章介紹嵌入式系統(tǒng)和Linux的基礎(chǔ)知識。第3~7章從實(shí)踐的角度分層次介紹嵌入式Linux開發(fā)的流程和關(guān)鍵技術(shù)。其中,第3章介紹硬件平臺;第4章介紹Boot Loader的基礎(chǔ)理論,對Uboot的移植、代碼分析、關(guān)鍵技術(shù)情景分析等進(jìn)行了深入探討;第5章介紹了Linux內(nèi)核移植需要具備的知識,重點(diǎn)分析了內(nèi)核映像格式以及Boot Loader與內(nèi)核的通信機(jī)制;第6章在介紹嵌入式文件系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一個嵌入式混合文件系統(tǒng);第7章介紹了嵌入式開發(fā)環(huán)境的搭建,并簡單介紹了一個數(shù)據(jù)網(wǎng)關(guān)的實(shí)例。
本書內(nèi)容可操作性強(qiáng),適合嵌入式Linux開發(fā)初學(xué)者參考,也可以作為高等院校有關(guān)嵌入式系統(tǒng)開發(fā)與應(yīng)用的實(shí)驗(yàn)參考書。
曾經(jīng)夢想成為一名作家,就像喜歡的余秋雨、路遙、霍達(dá)一樣,思想躍動于筆端。不過似乎總是缺少那么一份靈性,文學(xué)之路與我漸行漸遠(yuǎn)。幸運(yùn)的是,緣于技術(shù),拜China Unix所賜,有了這本書,也因此圓了一個兒時的夢想。
記得是從2006年夏天開始接觸嵌入式系統(tǒng).學(xué)習(xí)ARM、Linux,雖然忙碌但很充實(shí)。在學(xué)習(xí)的間隙,本著“好記性不如爛筆頭”的原則,想要把所學(xué)都記錄下來。但是傳統(tǒng)的紙筆記錄太慢,有時候難以把問題的場景清晰而又完整地記錄下來,就尋找合適的網(wǎng)絡(luò)記錄手段,于是就有了筆者的博客。
開始純粹是自己的總結(jié)筆記,沒想到網(wǎng)友的評價還不錯,博客的瀏覽量提高了,也因此交到了很多朋友。
在本書的編寫過程中,得到了很多人的支持和幫助。
第1章 嵌入式系統(tǒng)設(shè)計(jì)概述1
1.1 嵌入式系統(tǒng)的定義1
1.1.1 嵌入式系統(tǒng)的發(fā)展歷史2
1.1.2 嵌入式系統(tǒng)的組成3
1.1.3 嵌入式系統(tǒng)的特點(diǎn)4
1.2 嵌入式系統(tǒng)設(shè)計(jì)概述5
1.3 嵌入式系統(tǒng)的學(xué)習(xí)方法6
本章總結(jié)6
第2章 磨刀不誤砍柴工7
2.1 Linux概述7
2.2 Linux的安裝8
2.2.1 創(chuàng)建一個新的虛擬機(jī)9
2.2.2 在虛擬機(jī)上安裝Red Hat Linux 911
2.3 Red Hat Linux 9的初步設(shè)置18
2.3.1 VMware tools的安裝20
2.3.2 網(wǎng)絡(luò)設(shè)置22
2.4 使用shell提高效率24
2.4.1 shell初始化文件配置24
2.4.2 常用的腳本26
2.5 學(xué)習(xí)開發(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
本章總結(jié)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 準(zhǔn)備工作65
3.2.2 下載Boot Loader71
3.2.3 內(nèi)核和文件系統(tǒng)72
3.2.4 搭建交叉編譯環(huán)境75
3.2.5 應(yīng)用程序測試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
本章總結(jié)91
第4章 Boot Loader92
4.1 準(zhǔn)備工作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的啟動機(jī)制98
4.3.1 片內(nèi)啟動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種啟動方式無關(guān)性設(shè)計(jì)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文件轉(zhuǎn)換為BIN119
4.6.2 Uboot源代碼分析123
4.6.3 Uboot的命令機(jī)制129
4.6.4 Uboot的source實(shí)現(xiàn)133
本章總結(jié)139
第5章 Linux內(nèi)核移植140
5.1 嵌入式操作系統(tǒng)的選擇140
5.2 Linux 2.6 介紹142
5.3 Makefile體系144
5.4 內(nèi)核的移植150
5.4.1 基本移植151
5.4.2 出現(xiàn)的問題155
5.5 內(nèi)核映像格式159
5.5.1 生成過程160
5.5.2 zImage自解壓引導(dǎo)過程163
5.6 Boot Loader與內(nèi)核的通信機(jī)制168
5.6.1 基本模型168
5.6.2 tagged list組織方式169
5.6.3 Boot Loader實(shí)現(xiàn)173
5.6.4 Linux內(nèi)核實(shí)現(xiàn)179
本章總結(jié)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)絡(luò)功能213
6.5 嵌入式混合文件系統(tǒng)——EFS226
6.5.1 問題提出226
6.5.2 系統(tǒng)設(shè)計(jì)方案226
6.5.3 組件實(shí)現(xiàn)229
6.5.4 系統(tǒng)集成設(shè)計(jì)231
6.5.5 輔映像制作236
本章總結(jié)237
第7章 應(yīng)用程序238
7.1 應(yīng)用開發(fā)環(huán)境的建立238
7.1.1 嵌入式Linux的GDB調(diào)試環(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)絡(luò)數(shù)據(jù)網(wǎng)關(guān)244
7.2.1 基本原理244
7.2.2 數(shù)據(jù)幀的設(shè)計(jì)245
7.2.3 網(wǎng)絡(luò)異常情況的處理245
本章總結(jié)246
參考文獻(xiàn)247
為什么要采用交叉編譯呢?原因有兩個。一是目標(biāo)平臺所需要的BootLoader以及OS核心還沒有建立時,需要做交叉編譯。二是目標(biāo)機(jī)設(shè)備不具備一定的處理器能力和存儲空間,即單獨(dú)在目標(biāo)板上無法完成程序開發(fā),所以只好求助宿主機(jī)。這樣可以在宿主機(jī)上對即將在目標(biāo)機(jī)上運(yùn)行的應(yīng)用程序進(jìn)行編譯,生成可以在目標(biāo)機(jī)上運(yùn)行的代碼格式,然后移植到目標(biāo)板上,也就是目前嵌入式程序開發(fā)的Host/Targct模式。
。3)嵌入式系統(tǒng)的程序需要固化
通用的系統(tǒng)在測試完成后就可以直接投入使用,其目標(biāo)環(huán)境一般是PC機(jī),因此在總體結(jié)構(gòu)上與開發(fā)環(huán)境差別不大。而嵌入式系統(tǒng)的開發(fā)環(huán)境是PC機(jī),但是應(yīng)用軟件在目標(biāo)環(huán)境下必須存儲在非易失性存儲器中,保證用戶關(guān)機(jī)后下次能夠再次使用。因此,在系統(tǒng)應(yīng)用軟件開發(fā)完成之后,應(yīng)生成固化版本。
此外,嵌入式系統(tǒng)還需要提供強(qiáng)大的硬件開發(fā)工具和軟件包的支持,需要設(shè)計(jì)者從速度、功能和成本綜合考慮。此外,嵌入式系統(tǒng)對穩(wěn)定性、可靠性、功耗、抗千擾性等方面的性能要求都比通用系統(tǒng)的要求更為嚴(yán)格,所以相對而言,嵌入式系統(tǒng)的軟件開發(fā)難度更大一些。