ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版)(Linux典藏大系)
定 價:69 元
- 作者:弓雷 等編著
- 出版時間:2014/2/1
- ISBN:9787302340522
- 出 版 社:清華大學出版社
- 中圖法分類:TP316.89
- 頁碼:466
- 紙張:膠版紙
- 版次:2
- 開本:16開
“Linux典藏大系”自2010年陸續(xù)出版以來,因其內容豐富、講解細膩、通俗易懂和實用性強等特色而深受廣大讀者的喜愛,長期位居同類圖書銷售排行榜的前列,累計銷量近10萬冊。
叢書中部分圖書榮獲51CTO讀書頻道“最受讀者喜愛的原創(chuàng)IT技術圖書獎”,還有多種圖書的中文繁體字版權輸出到了中國臺灣地區(qū)出版發(fā)行。叢書中的多個品種被國內幾十所培訓機構和大中專院校選為教材。叢書的出版還得到了國內Linux領域最知名的技術社區(qū)ChinaUnix的大力支持。讀者在ChinaUnix社區(qū)的論壇上與社區(qū)中的Linux愛好者進行了廣泛的交流,取得了良好的學習效果。2014年2月“Linux典藏大系“全新升級版(第2版)正式出版,第2版圖書迎合了Linux技術的最新發(fā)展,全部采用當前最流行和穩(wěn)定的Linux發(fā)行版或者相關工具,是Linux愛好者學習Linux的好幫手。
《Linux典藏大系:ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版)》是獲得了大量讀者好評的“Linux典藏大系”中的《ARM嵌入式Linux系統(tǒng)開發(fā)詳解》的第2版。《Linux典藏大系:ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版)》由淺入深,全面、系統(tǒng)地介紹了基于ARM體系結構的嵌入式Linux系統(tǒng)開發(fā)所涉及的方方面面技術,并提供了大量實例供讀者實戰(zhàn)演練。另外,《Linux典藏大系:ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版)》提供了9小時多媒體教學視頻及書中涉及的實例源程序,便于讀者高效、直觀地學習。
《Linux典藏大系:ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版)》共分4篇。第1篇介紹了嵌入式系統(tǒng)入門、嵌入式軟硬件系統(tǒng)、ARM處理器、嵌入式Linux、軟件開發(fā)環(huán)境建立和第一個Linux應用程序;第2篇介紹了Linux應用程序編程基礎、開發(fā)多進程/線程程序、網(wǎng)絡通信應用、串行口通信編程、嵌入式GUI程序開發(fā)和軟件項目管理;第3篇介紹ARM體系結構及開發(fā)實例、深入Bootloader、解析Linux內核、嵌入式Linux啟動流程、Linux文件系統(tǒng)、建立交叉編譯工具鏈、命令系統(tǒng)BusyBox、Linux內核移植,以及內核和應用程序調試技術;第4篇結合5個案例介紹了Linux設備驅動、網(wǎng)絡設備驅動、Flash設備驅動和USB驅動的開發(fā)過程,以此提高讀者的實戰(zhàn)水平。
《Linux典藏大系:ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版)》適合廣大從事嵌入式Linux系統(tǒng)開發(fā)的人員、對嵌入式Linux系統(tǒng)開發(fā)有興趣的愛好者及大中專院校相關專業(yè)的學生閱讀。
嵌入式Linux開發(fā)精品圖書全面升級,ChinaUnix社區(qū)鼎力推薦 由淺入深,全面解析基于ARM體系結構的嵌入式Linux系統(tǒng)開發(fā) 結合多個實例和5個典型案例,深入剖析嵌入式開發(fā)的原理及過程 贈送40段共9小時語音教學視頻 版本新穎:書中涉及的軟件及開發(fā)環(huán)境都是當前最為流行的版本 由淺入深:從嵌入式系統(tǒng)的軟硬件開始講解,逐步深入到實際開發(fā) 內容全面:涵蓋嵌入式Linux系統(tǒng)開發(fā)的大部分知識點和典型應用 注重原理:對每個知識點從概念和基本原理進行了詳細而透徹的分析 重點突出:對Bootloader和Linux內核的功能和移植進行了詳細介紹 實踐性強:結合多個典型實例和5個應用案例,提高讀者的開發(fā)水平推薦閱讀(請點叢書鏈接查看)“Linux典藏大系” (叢書暢銷10萬冊,全面、詳細、深入、實用,Linux愛好者必讀經(jīng)典)
隨著超大規(guī)模集成電路的發(fā)展,計算機處理器技術不斷提高,計算機芯片的處理能力越來越強,體積越來越小,計算機技術應用到生活的方方面面。與人們日常生活打交道最多的就是嵌入式系統(tǒng),從目前廣泛使用的手機、MP3播放器到家用電器,嵌入式系統(tǒng)的應用無處不在。嵌入式系統(tǒng)的開發(fā)占整個計算機系統(tǒng)開發(fā)的比重也越來越高。
嵌入式系統(tǒng)開發(fā)與傳統(tǒng)的PC程序開發(fā)不同。嵌入式系統(tǒng)開發(fā)涉及軟件和硬件的開發(fā),是一個協(xié)同工作的統(tǒng)一體。目前,已經(jīng)有許多的嵌入式系統(tǒng)硬件和操作系統(tǒng)軟件,其中應用最廣泛的是ARM嵌入式處理器和Linux系統(tǒng)。
目前,市場上嵌入式開發(fā)的書籍大多是針對某個特定領域編寫的,專業(yè)性和針對性較強,不適合初學者學習;谶@個原因筆者編寫了本書。本書是獲得了大量讀者好評的“Linux典藏大系”中的《ARM嵌入式Linux系統(tǒng)開發(fā)詳解》的第2版。在第1版的基礎上,本書進行了全新改版,升級了編程環(huán)境,對第1版書中的一些疏漏進行了修訂,也對書中的一些實例和代碼進行了重新表述,使得更加易讀。相信讀者可以在本書的引領下跨入嵌入式開發(fā)的大門。
關于“Linux典藏大系”
“Linux典藏大系”是清華大學出版社自2010年1月以來陸續(xù)推出的一個圖書系列,截止2012年,已經(jīng)出版了10余個品種。該系列圖書涵蓋了Linux技術的方方面面,可以滿足各個層次和各個領域的讀者學習Linux技術的需求。該系列圖書自出版以來獲得了廣大讀者的好評,已經(jīng)成為了Linux圖書市場上最耀眼的明星品牌之一。其銷量在同類圖書中也名列前茅,其中一些圖書還獲得了“51CTO讀書頻道”頒發(fā)的“最受讀者喜愛的原創(chuàng)IT技術圖書獎”。該系列圖書在出版過程中也得到了國內Linux領域最知名的技術社區(qū)ChinaUnix(簡稱CU)的大力支持和幫助,讀者在CU社區(qū)中就圖書的內容與活躍在CU社區(qū)中的Linux技術愛好者進行廣泛交流,取得了良好的學習效果。
關于本書第2版
本書第1版出版后深受讀者好評,并被ChinaUnix技術社區(qū)推薦。但是隨著技術的發(fā)展,本書第1版內容已經(jīng)無法滿足讀者的學習需求。應廣大讀者的要求,我們結合嵌入式技術的最新發(fā)展推出了本書的第2版。相比第1版,第2版圖書在內容上的變化主要體現(xiàn)在以下幾個方面:
。1)Linux開發(fā)環(huán)境由Ubuntu 8.04升級到12.04。
。2)更新了Cygwin、ADS、GCC等相關軟件。
。3)修訂了一些專有名詞及術語的不一致問題。
。4)刪除了部分已經(jīng)過時的內容,如Ubuntu的網(wǎng)絡配置等。
。5)給完整的實例代碼增加了行序號,方便讀者閱讀。
。6)糾正了部分函數(shù)講解錯誤,并修正了部分代碼的類型轉化等問題。
。7)將一些表達不準確的地方表述得更加準確。
本書特色
1.循序漸進,由淺入深
為了讓初學者快速進入嵌入式系統(tǒng)開發(fā)領域,本書一開始對嵌入式系統(tǒng)的軟件和硬件做了全面的介紹,讓讀者對嵌入式系統(tǒng)有一個基本的認識。同時,在書中講解的知識點都配備了完整的實例,讀者可以通過實例學習嵌入式系統(tǒng)開發(fā)的相關知識。
2.技術全面,內容充實
作者本人從事嵌入式系統(tǒng)開發(fā)多年,深入了解嵌入式系統(tǒng)開發(fā)的各個方面,在書中講解了嵌入式Linux開發(fā)的各個要點,包括Linux內核的構成、工作流程、驅動程序開發(fā)、文件系統(tǒng)、程序庫等知識,使讀者全面了解嵌入式Linux開發(fā)的各個知識點。
3.實例講解,理解深刻
嵌入式Linux開發(fā)書籍眾多,很多書籍偏重理論。本書所有的實例都經(jīng)過作者驗證,并且有詳細的操作過程和實驗結果。其次,本書的操作實例有完整的實驗環(huán)境描述,讀者可以通過實例加深對知識點的理解。
4.化整為零,深入剖析
嵌入式系統(tǒng)開發(fā)涉及知識面廣,技術復雜。本書剝繭抽絲,力求找出開發(fā)過程中關鍵的知識點。從關鍵點入手,通過簡單易懂的例子剖析技術原理,幫助讀者掌握復雜的技術。
5.詳解典型項目案例開發(fā),提高實戰(zhàn)水平
本書詳細分析了DM9000網(wǎng)卡驅動、NAND Flash設備驅動和USB驅動的實現(xiàn)。通過這三個項目案例,可以提高讀者的設備驅動開發(fā)水平,從而具備獨立進行驅動開發(fā)的能力。
6.提供多媒體教學視頻和源文件
本書專門提供了9小時多媒體教學視頻和實例源文件,便于讀者高效、直觀地學習。這些學習資料需要讀者按照封面的提示自行下載。
本書內容體系
第1篇 Linux嵌入式開發(fā)基礎篇(第1~6章)
本篇主要內容包括嵌入式系統(tǒng)入門、嵌入式軟硬件系統(tǒng)、ARM處理器、嵌入式Linux、軟件開發(fā)環(huán)境建立和第一個Linux應用程序。通過本篇的學習,讀者可以掌握Linux嵌入式開發(fā)環(huán)境的搭建和Linux嵌入式的基礎知識。
第2篇 Linux嵌入式開發(fā)應用篇(第7~12章)
本篇主要內容包括Linux應用程序編程基礎、開發(fā)多進程/線程程序、網(wǎng)絡通信應用、串行口通信編程、嵌入式GUI程序開發(fā)和軟件項目管理等內容。通過本篇的學習,讀者可以掌握Linux嵌入式的核心技術與應用。
第3篇 Linux系統(tǒng)篇(第13~21章)
本篇主要內容包括ARM體系結構及開發(fā)實例、深入Bootloader、解析Linux內核、嵌入式Linux啟動流程、Linux文件系統(tǒng)、建立交叉編譯工具鏈、命令系統(tǒng)BusyBox、Linux內核移植,以及內核和應用程序調試技術。通過本篇的學習,讀者可以對Linux系統(tǒng)從內核到文件系統(tǒng)再到啟動流程有一個非常清楚的了解。
第4篇 Linux嵌入式驅動開發(fā)篇(第22~25章)
本篇主要內容包括Linux設備驅動、網(wǎng)絡設備驅動程序、Flash設備驅動,以及USB驅動開發(fā)等。通過本篇的學習,讀者可以掌握Linux嵌入式開發(fā)的基本流程及思想。
本書讀者對象
* Linux嵌入式開發(fā)初學者;
* 需要系統(tǒng)學習Linux嵌入式開發(fā)的人員;
* Linux嵌入式從業(yè)人員;
* Linux嵌入式開發(fā)愛好者;
* 大中專院校的學生;
* 社會培訓班的學員。
本書作者
本書由弓雷主筆編寫。其他參與編寫的人員有吳振華、辛立偉、熊新奇、徐彬、晏景現(xiàn)、楊光磊、楊艷玲、姚志娟、俞晶磊、張建輝、張健、張林、張迎春、張之超、趙紅梅、趙永源、仲從浩、周建珍、楊文達。
本書編委會成員有歐振旭、陳杰、陳冠軍、頊宇峰、張帆、陳剛、程彩紅、毛紅娟、聶慶亮、王志娟、武文娟、顏盟盟、姚志娟、尹繼平、張昆、張薛。
閱讀本書時,有疑問可發(fā)E-mail到book@wanjuanchina.net或bookservice2008@163. com以獲得幫助。也可以在http://www.wanjuanchina.net論壇上留言,會有專人負責答疑。
編著者
弓雷,從事嵌入式系統(tǒng)軟件開發(fā)9年。擅長計算機通信技術,對操作系統(tǒng)內核及底層技術有深入研究。技術涉獵廣泛,熟悉Intel IXA架構網(wǎng)絡處理器、ARM體系結構、MIPS體系結構和TCP/IP網(wǎng)絡協(xié)議棧等。曾經(jīng)移植過Linux 2.6內核到嵌入式設備,參與研發(fā)了某部隊火控武器通信系統(tǒng)、無人駕駛汽車項目通信系統(tǒng)及10GE/POS骨干網(wǎng)流量管理系統(tǒng)等。目前擔任嵌入式軟件研發(fā)工程師和微碼軟件研發(fā)工程師,從事某公司骨干網(wǎng)P2P流量管理設備的研發(fā)。
第1篇 Linux嵌入式開發(fā)基礎篇
第1章 嵌入式系統(tǒng)入門
1.1 什么是嵌入式系統(tǒng)
1.2 嵌入式系統(tǒng)應用領域
1.2.1 家用電器和電子類產(chǎn)品
1.2.2 交通工具
1.2.3 公共電子設施
1.3 嵌入式系統(tǒng)發(fā)展
1.3.1 嵌入式微控制器
1.3.2 嵌入式微處理器
1.3.3 未來嵌入式系統(tǒng)發(fā)展的方向
1.4 典型的嵌入式系統(tǒng)組成
1.5 小結
第2章 嵌入式軟硬件系統(tǒng)
2.1 電路基本知識 第1篇 Linux嵌入式開發(fā)基礎篇
第1章 嵌入式系統(tǒng)入門
1.1 什么是嵌入式系統(tǒng)
1.2 嵌入式系統(tǒng)應用領域
1.2.1 家用電器和電子類產(chǎn)品
1.2.2 交通工具
1.2.3 公共電子設施
1.3 嵌入式系統(tǒng)發(fā)展
1.3.1 嵌入式微控制器
1.3.2 嵌入式微處理器
1.3.3 未來嵌入式系統(tǒng)發(fā)展的方向
1.4 典型的嵌入式系統(tǒng)組成
1.5 小結
第2章 嵌入式軟硬件系統(tǒng)
2.1 電路基本知識
2.1.1 什么是模擬電路
2.1.2 什么是數(shù)字電路
2.1.3 數(shù)制轉換
2.2 計算機組成原理
2.2.1 計算機體系的發(fā)展
2.2.2 中央處理器
2.2.3 存儲系統(tǒng)
2.2.4 總線系統(tǒng)
2.2.5 輸入輸出系統(tǒng)
2.3 軟件基礎知識
2.3.1 什么是軟件
2.3.2 軟件開發(fā)流程
2.3.3 常見的軟件開發(fā)模型
2.3.4 計算機編程語言
2.3.5 數(shù)據(jù)結構
2.4 操作系統(tǒng)知識
2.4.1 什么是操作系統(tǒng)
2.4.2 操作系統(tǒng)的發(fā)展歷史
2.4.3 操作系統(tǒng)由什么組成
2.4.4 幾種操作系統(tǒng)的設計思路
2.4.5 操作系統(tǒng)分類
2.5 小結
第3章 ARM處理器
3.1 微處理器和微控制器
3.2 ARM處理器介紹
3.2.1 ARM微處理器的應用領域
3.2.2 ARM的功能特點
3.3 ARM指令集
3.3.1 算術運算指令
3.3.2 邏輯運算指令
3.3.3 分支指令
3.3.4 數(shù)據(jù)傳送指令
3.4 ARM的結構
3.4.1 ARM體系結構的命名方法
3.4.2 處理器系列劃分
3.4.3 處理器工作模式
3.4.4 存儲系統(tǒng)
3.4.5 尋址方式
3.5 ARM的功能選型
3.5.1 ARM的選型原則
3.5.2 幾種常見的ARM核處理器選型參考
3.6 小結
第4章 嵌入式Linux
4.1 常見的嵌入式操作系統(tǒng)
4.1.1 VxWorks
4.1.2 Windows CE
4.1.3 PalmOS
4.1.4 Symbian
4.2 嵌入式Linux操作系統(tǒng)
4.2.1 什么是Linux
4.2.2 Linux與UNIX的不同——GPL版權協(xié)議介紹
4.2.3 Linux發(fā)行版
4.2.4 常見的嵌入式Linux系統(tǒng)
4.3 小結
第5章 建立軟件開發(fā)環(huán)境
5.1 獨立的Linux系統(tǒng)
5.1.1 安裝Ubuntu Linux
5.1.2 怎樣安裝、卸載軟件
5.1.3 怎樣配置系統(tǒng)服務
5.1.4 安裝主要的開發(fā)工具
5.1.5 安裝其他的開發(fā)工具和文檔
5.2 運行在Windows上的Linux系統(tǒng)
5.2.1 什么是Cygwin
5.2.2 如何安裝Cygwin
5.2.3 安裝開發(fā)環(huán)境
5.3 Linux常用工具
5.3.1 Linux shell和常用命令
5.3.2 文本編輯工具vi
5.3.3 搜索工具find和grep
5.3.4 FTP工具
5.3.5 串口工具minicom
5.4 Windows常用工具
5.4.1 代碼編輯管理工具Source Insight
5.4.2 串口工具XShell
5.5 ARM集成開發(fā)環(huán)境ADS
5.5.1 ADS集成開發(fā)環(huán)境介紹
5.5.2 配置ADS調試環(huán)境
5.5.3 建立自己的工程
5.6 小結
第6章 第一個Linux應用程序
6.1 向世界問好——Hello,World!
6.1.1 用vi編輯源代碼文件
6.1.2 用gcc編譯程序
6.1.3 執(zhí)行程序
6.2 程序背后做了什么
6.2.1 程序執(zhí)行的過程
6.2.2 窺視程序執(zhí)行中的秘密
6.2.3 動態(tài)庫的作用
6.3 程序如何來的——編譯的全部過程
6.3.1 編譯源代碼
6.3.2 連接目標文件到指定的庫
6.4 更簡單的辦法——用Makefile管理工程
6.4.1 什么是Makefile
6.4.2 它是如何工作的
6.4.3 如何使用Makefile
6.4.4 好的源代碼管理習慣
6.5 小結
第2篇 Linux嵌入式開發(fā)應用篇
第7章 Linux應用程序編程基礎
7.1 內存管理和使用
7.1.1 堆和棧的區(qū)別
7.1.2 內存管理函數(shù)malloc()和free()
7.1.3 實用的內存分配函數(shù)calloc()和realloc()
7.1.4 內存管理編程實例
7.2 ANSI C文件管理
7.2.1 文件指針和流
7.2.2 存儲方式
7.2.3 標準輸入、標準輸出和標準錯誤
7.2.4 緩沖
7.2.5 打開、關閉文件
7.2.6 讀寫文件
7.2.7 文件流定位
7.2.8 ANSI C文件編程實例
7.3 POSIX文件I/O編程
7.3.1 底層的文件I/O操作
7.3.2 文件描述符
7.3.3 創(chuàng)建/打開/關閉文件
7.3.4 讀寫文件內容
7.3.5 文件內容定位
7.3.6 修改已打開文件的屬性
7.3.7 POSIX文件編程實例
7.4 小結
第8章 開發(fā)多進程/線程程序
8.1 多進程開發(fā)
8.1.1 什么是進程
8.1.2 進程環(huán)境和屬性
8.1.3 創(chuàng)建進程
8.1.4 等待進程結束
8.1.5 退出進程
8.1.6 常用進程間通信的方法
8.1.7 進程編程實例
8.2 多線程開發(fā)
8.2.1 線程的概念
8.2.2 進程和線程對比
8.2.3 創(chuàng)建線程
8.2.4 取消線程
8.2.5 等待線程
8.2.6 使用pthread庫線程操作實例
8.3 小結
第9章 網(wǎng)絡通信應用
9.1 網(wǎng)絡通信基礎
9.1.1 TCP/IP協(xié)議族
9.1.2 IP協(xié)議
9.1.3 TCP協(xié)議
9.1.4 UDP協(xié)議
9.1.5 學習分析協(xié)議的方法
9.2 Socket通信基本概念
9.2.1 創(chuàng)建socket對象
9.2.2 面向連接的Socket通信實現(xiàn)
9.2.3 面向連接的echo服務編程實例
9.2.4 無連接的Socket通信實現(xiàn)
9.2.5 無連接的時間服務編程實例
9.3 Socket高級應用
9.3.1 Socket超時處理
9.3.2 使用Select機制處理多連接
9.3.3 使用poll機制處理多連接
9.3.4 多線程環(huán)境Socket編程
9.4 小結
第10章 串口通信編程
10.1 串口介紹
10.1.1 什么是串口
10.1.2 串口工作原理
10.1.3 串口流量控制
10.2 開發(fā)串口應用程序
10.2.1 操作串口需要用到的頭文件
10.2.2 串口操作方法
10.2.3 串口屬性設置
10.2.4 與Windows串口終端通信
10.3 串口應用實例——手機短信發(fā)送
10.3.1 PC與手機連接發(fā)送短信的物理結構
10.3.2 AT指令介紹
10.3.3 GSM AT指令集
10.3.4 PDU編碼方式
10.3.5 建立與手機的連接
10.3.6 使用AT指令發(fā)送短信
10.4 小結
第11章 嵌入式GUI程序開發(fā)
11.1 Linux GUI介紹
11.1.1 Linux GUI的發(fā)展
11.1.2 常見的嵌入式GUI
11.2 開發(fā)圖形界面程序
11.2.1 安裝Qt開發(fā)環(huán)境
11.2.2 建立簡單的Qt程序
11.2.3 Qt庫編程結構
11.3 深入Qt編程
11.3.1 使用Widget
11.3.2 對話框程序設計
11.3.3 信號與槽系統(tǒng)
11.4 移植Qtopia到ARM開發(fā)板
11.4.1 需要的資源
11.4.2 準備工作
11.4.3 編譯主機Qt工具
11.4.4 交叉編譯qtopia
11.5 小結
第12章 軟件項目管理
12.1 源代碼管理
12.1.1 什么是軟件的版本
12.1.2 版本控制的概念
12.2 版本控制系統(tǒng)Subversion
12.2.1 在Linux系統(tǒng)下使用Subversion服務端
12.2.2 在Windows系統(tǒng)下使用TortoiseSVN客戶端
12.3 開發(fā)文檔管理——常見的開發(fā)文檔
12.3.1 可行性研究報告
12.3.2 項目開發(fā)計劃
12.3.3 軟件需求說明書
12.3.4 概要設計
12.3.5 詳細設計
12.3.6 用戶手冊
12.3.7 其他文檔
12.4 使用trac管理軟件開發(fā)文檔
12.4.1 安裝trac
12.4.2 配置trac基本設置
12.4.3 配置trac全局腳本
12.4.4 設置trac的Web界面
12.5 Bug跟蹤系統(tǒng)
12.5.1 Bug管理的概念和作用
12.5.2 使用Bugzilla跟蹤Bug
12.6 小結
第3篇 Linux系統(tǒng)篇
第13章 ARM體系結構及開發(fā)實例
13.1 ARM體系結構介紹
13.1.1 ARM體系結構
13.1.2 ARM指令集介紹
13.2 編程模型
13.2.1 數(shù)據(jù)類型
13.2.2 處理器模式
13.2.3 寄存器
13.2.4 通用寄存器
13.2.5 程序狀態(tài)寄存器
13.2.6 異常處理
13.2.7 內存和內存I/O映射
13.3 內存管理單元
13.3.1 內存管理介紹
13.3.2 內存訪問順序
13.3.3 地址翻譯過程
13.3.4 訪問權限
13.4 常見接口和控制器
13.4.1 GPIO接口
13.4.2 中斷控制器
13.4.3 RTC控制器
13.4.4 看門狗定時器
13.4.5 試驗:使用GPIO點亮LED
13.5 小結
第14章 深入Bootloader
14.1 初識Bootloader
14.1.1 PC(個人電腦)上的Bootloader
14.1.2 什么是嵌入式系統(tǒng)的Bootloader
14.1.3 嵌入式系統(tǒng)常見的Bootloader
14.2 U-Boot分析
14.2.1 獲取U-Boot
14.2.2 U-Boot工程結構分析
14.2.3 U-Boot總體工作流程
14.3 U-Boot啟動流程分析
14.3.1 _start標號
14.3.2 reset標號
14.3.3 cpu_init_crit標號
14.3.4 lowlevel_init標號
14.3.5 relocate標號
14.3.6 start_armboot()函數(shù)
14.3.7 main_loop()函數(shù)
14.4 移植U-Boot到開發(fā)板
14.4.1 U-Boot移植的一般步驟
14.4.2 移植U-Boot到目標開發(fā)板
14.4.3 移植U-Boot的常見問題
14.5 小結
第15章 解析Linux內核
15.1 基本知識
15.1.1 什么是Linux內核
15.1.2 Linux內核版本
15.1.3 如何獲取Linux內核代碼
15.1.4 編譯內核
15.2 Linux內核的子系統(tǒng)
15.2.1 系統(tǒng)調用接口
15.2.2 進程管理子系統(tǒng)
15.2.3 內存管理子系統(tǒng)
15.2.4 虛擬文件系統(tǒng)
15.2.5 網(wǎng)絡堆棧
15.2.6 設備驅動
15.2.7 依賴體系結構的代碼
15.3 Linux內核代碼的工程結構
15.3.1 源代碼目錄布局
15.3.2 幾個重要的Linux內核文件
15.4 內核編譯系統(tǒng)
15.4.1 內核編譯系統(tǒng)基本架構
15.4.2 內核頂層Makefile分析
15.4.3 內核編譯文件分析
15.4.4 目標文件清除機制
15.4.5 編譯輔助程序
15.4.6 KBuild變量
15.5 小結
第16章 嵌入式Linux啟動流程
16.1 Linux內核初始化流程
16.2 PC的初始化流程
16.2.1 PC BIOS功能和作用
16.2.2 硬盤的數(shù)據(jù)結構
16.2.3 完整的初始化流程
16.3 嵌入式系統(tǒng)的初始化
16.4 Linux內核初始化
16.4.1 解壓縮內核映像
16.4.2 進入內核代碼
16.5 啟動init內核進程
16.6 根文件系統(tǒng)初始化
16.6.1 根文件系統(tǒng)介紹
16.6.2 掛載虛擬文件系統(tǒng)
16.7 內核交出權限
16.8 init進程
16.9 初始化RAM Disk
16.9.1 RAM Disk介紹
16.9.2 如何使用RAM Disk
16.9.3 實例:使用RAM Disk作為根文件系統(tǒng)
16.10 小結
第17章 Linux文件系統(tǒng)
17.1 Linux文件管理
17.1.1 文件和目錄的概念
17.1.2 文件的結構
17.1.3 文件的類型
17.1.4 文件系統(tǒng)的目錄結構
17.1.5 文件和目錄的存取權限
17.1.6 文件系統(tǒng)管理
17.2 Linux文件系統(tǒng)原理
17.2.1 非日志文件系統(tǒng)
17.2.2 日志文件系統(tǒng)
17.3 常見的Linux文件系統(tǒng)
17.3.1 ext2文件系統(tǒng)
17.3.2 ext3文件系統(tǒng)
17.3.3 ReiserFS文件系統(tǒng)
17.3.4 JFFS文件系統(tǒng)
17.3.5 cramfs文件系統(tǒng)
17.4 其他文件系統(tǒng)
17.4.1 網(wǎng)絡文件系統(tǒng)
17.4.2 /proc影子文件系統(tǒng)
17.5 小結
第18章 建立交叉編譯工具鏈
18.1 什么是交叉編譯
18.2 需要哪些東西
18.3 手工創(chuàng)建工具鏈
18.3.1 準備工作——獲取源代碼
18.3.2 開始了——建立工作環(huán)境
18.3.3 建立Linux內核頭文件
18.3.4 編譯安裝binutils
18.3.5 編譯安裝gcc的C編譯器
18.3.6 編譯安裝glibc庫
18.3.7 編譯安裝gcc的C、C++編譯器
18.3.8 最后的工作
18.4 使用腳本創(chuàng)建工具鏈
18.5 更簡便的方法——獲取已編譯好的交叉編譯環(huán)境
18.6 小結
第19章 強大的命令系統(tǒng)BusyBox
19.1 BusyBox簡介
19.1.1 簡單易懂的BusyBox
19.1.2 BusyBox工作原理
19.1.3 安裝BusyBox
19.2 交叉編譯BusyBox
19.3 使用BusyBox
19.3.1 BusyBox初始化
19.3.2 目標板BusyBox安裝
19.4 小結
第20章 Linux內核移植
20.1 Linux內核移植要點
20.2 平臺相關代碼結構
20.3 建立目標平臺工程框架
20.3.1 加入編譯菜單項
20.3.2 設置宏與代碼文件的對應關系
20.3.3 測試工程框架
20.4 建立目標平臺代碼框架
20.4.1 ARM處理器相關結構
20.4.2 建立machine_desc結構
20.4.3 加入處理函數(shù)
20.4.4 加入定時器結構
20.4.5 測試代碼結構
20.5 構建目標板代碼
20.5.1 處理器初始化
20.5.2 端口映射
20.5.3 中斷處理
20.5.4 定時器處理
20.5.5 編譯最終代碼
20.6 小結
第21章 內核和應用程序調試技術
21.1 使用gdb調試應用程序概述
21.2 基本的調試技術
21.2.1 列出源代碼
21.2.2 斷點管理
21.2.3 執(zhí)行程序
21.2.4 顯示程序變量
21.2.5 信號管理
21.2.6 調試實例
21.3 多進程調試
21.4 調試意外終止的程序
21.5 內核調試技術
21.5.1 printk打印調試信息
21.5.2 使用/proc虛擬文件系統(tǒng)
21.5.3 使用KDB調試工具
21.5.4 KDB調試指令
21.6 小結
第4篇 Linux嵌入式驅動開發(fā)篇
第22章 Linux設備驅動
22.1 設備驅動介紹
22.2 Linux內核模塊
22.2.1 內核模塊簡介
22.2.2 內核模塊的結構
22.2.3 內核模塊的加載和卸載
22.2.4 編寫一個基本的內核模塊
22.2.5 編譯內核模塊
22.2.6 為內核模塊添加參數(shù)
22.3 Linux設備驅動
22.3.1 PCI局部總線介紹
22.3.2 Linux設備驅動基本概念
22.3.3 字符設備
22.3.4 塊設備
22.3.5 網(wǎng)絡設備
22.4 字符設備驅動開發(fā)實例
22.4.1 開發(fā)一個基本的字符設備驅動
24.4.2 測試字符設備驅動
22.5 小結
第23章 網(wǎng)絡設備驅動程序
23.1 網(wǎng)絡基礎知識
23.1.1 ISO/OSI網(wǎng)絡參考模型
23.1.2 TCP/IP協(xié)議
23.2 以太網(wǎng)基礎
23.2.1 工作原理
23.2.2 常見以太網(wǎng)標準
23.2.3 拓撲結構
23.2.4 工作模式
23.3 網(wǎng)卡工作原理
23.4 內核網(wǎng)絡分層結構
23.4.1 內核網(wǎng)絡結構
23.4.2 與網(wǎng)絡有關的數(shù)據(jù)結構
23.4.3 內核網(wǎng)絡部分的全局變量
23.5 內核網(wǎng)絡設備驅動框架
23.5.1 net_device結構
23.5.2 數(shù)據(jù)包接收流程
23.5.3 數(shù)據(jù)包發(fā)送流程
23.6 實例:DM9000網(wǎng)卡驅動分析
23.6.1 DM9000芯片介紹
23.6.2 網(wǎng)卡驅動程序框架
23.6.3 DM9000網(wǎng)卡驅動主要數(shù)據(jù)結構
23.6.4 加載驅動程序
23.6.5 停止和啟動網(wǎng)卡
23.6.6 發(fā)送數(shù)據(jù)包
23.6.7 接收數(shù)據(jù)包
23.6.8 中斷和定時器處理
23.7 小結
第24章 Flash設備驅動
24.1 Linux Flash驅動結構
24.1.1 什么是MTD
24.1.2 MTD系統(tǒng)結構
24.2 Flash設備基礎
24.2.1 存儲原理
24.2.2 性能比較
24.3 內核MTD層
24.3.1 mtd_info結構
24.3.2 mtd_part結構
24.3.3 mtd_partition結構
24.3.4 map_info結構
24.3.5 nand_chip結構
24.4 Flash設備框架
24.4.1 NOR Flash設備驅動框架
24.4.2 NAND Flash設備驅動框架
24.5 Flash設備驅動實例——NOR Flash設備驅動剖析
24.5.1 數(shù)據(jù)結構
24.5.2 驅動初始化
24.5.3 驅動卸載
24.6 Flash設備驅動實例——NAND Flash設備驅動分析
24.6.1 S3C2440 NAND控制器介紹
24.6.2 數(shù)據(jù)結構
24.6.3 驅動初始化
24.6.4 驅動卸載
24.6.5 初始化NAND控制器
24.6.6 設置芯片操作
24.6.7 電源管理
24.7 小結
第25章 USB驅動開發(fā)
25.1 USB體系介紹
25.1.1 USB設計目標
25.1.2 USB體系概述
25.1.3 USB體系工作流程
25.2 USB驅動程序框架
25.2.1 Linux內核USB驅動框架
25.2.2 主機驅動結構
25.2.3 設備驅動結構
25.2.4 USB驅動程序框架
25.3 USB驅動實例剖析
25.3.1 USB串口驅動
25.3.2 USB鍵盤驅動
25.4 小結