基本信息
作者:銳極電子科技有限公司
ISBN:10位[7810779788]13位[9787810779784]
內容簡介
本書分為基礎篇和實驗篇兩大部分,主要是針對理論和實踐相結合的嵌入式Linux開發的教材和培訓用書。基礎篇主要包括嵌入式系統基礎、嵌入式系統開發過程、ARM體系結構和嵌入式系統的BootLoad開發引導詳解,為嵌入式系統初學者能快速入門提供了基礎。實驗篇詳細講解了如何創建嵌入式系統開發環境、如何在ARM平台上移植Linux系統,以及Linux設備驅動程式開發、USB設備驅動程式開發、嵌入式Linux網路編程和圖形用戶接口開發等,每章都配有豐富的實驗內容,使讀者能夠理論聯繫實際,邊學邊用,更快更好地掌握所學知識。 本書可作為高等院校計算機類、電子類、電氣類、控制類等專業高年級本科生、研究生教材,也可供廣大工程技術人員參考使用,還可作為嵌入式培訓教材和參考書。
前言
如今,人類已經進入了後PC時代,伴隨信息技術與網路技術的高速發展,嵌入式技術已被廣泛套用於科學研究、工程設計、軍事技術以及文藝、商業等方方面面,成為後PC時代的主力軍。 嵌入式系統和Linux的有機結合,成為後PC時代計算機最普遍的套用形式。嵌入式Linux不僅繼承了Linux原始碼開放、核心穩定高效、軟體豐富、強大的網路支持功能、優秀的開發工具等優勢,而且還具備支持廣泛的處理器結構和硬體平台占有空間小、成本低等特點。
嵌入式Linux技術在中國有巨大的發展潛力和市場需求。有數據顯示,未來兩年里,在計算機、消費電子、通信、汽車電子、工業控制、軍事國防這六大主要套用領域,嵌入式Linux產品將達到80億美元的市場規模。
編寫目的
嵌入式Linux屬於一個交叉學科,涵蓋了微電子技術、電子信息技術、計算機軟體和硬體等多項技術領域的套用。另外嵌入式Linux需要相應的嵌入式開發板和軟體,還需要有經驗的人進行指導開發,目前國內大部分高校都很難達到這種要求,這也造成了目前國內嵌入式Linux開發人才極其缺乏的局面。
因此,上海銳極科技有限公司在自主研發的嵌入式Linux開發平台的基礎上編寫了此書,希望能幫助讀者快速跨入嵌入式Linux開發的門檻。
主要內容
本書主要分為兩大部分,基礎篇和實驗篇。基礎篇主要講解了嵌入式系統基礎知識、嵌入式系統開發過程、ARM體系結構和嵌入式系統的BootLoad開發引導,為嵌入式系統初學者能快速入門提供了基礎。
實驗篇詳細講解了如何創建嵌入式系統開發環境、如何在ARM平台上移植Linux系統、Linux設備驅動程式開發、USB設備驅動程式開發、嵌入式Linux網路編程和圖形用戶接口開發等,每章都配有豐富的實驗內容,使讀者能夠理論聯繫實際,邊學邊用,更快更好地掌握所學知識。
實驗平台
本書所用的硬體平台是銳極RJARM9?EDU教學實驗系統,所有的程式都是基於該平台下精心設計的實驗,實驗程式也可移植到其他ARM平台上。
本書由李道流編寫第1、6、10章,王冬青編寫第3、8、9章,陳猛編寫第4、7章,季樂威編寫第2、5章,全書由李道流統稿。
閱讀建議
本書以實踐為特色,提供了大量的實驗,若讀者能自己動手操作本書提供的每一個實驗,一定會取得很快的提高。
致謝
本書編寫參考了很多網友貢獻的寶貴資料,沒有你們無私的貢獻,此書也無法完成,在此特向那些無名作者表示謝意。
鑒於作者水平有限,加之時間倉促,本書一定有不少缺點和錯誤,希望得到廣大讀者批評指正。我們將在吸取大家意見和建議的基礎上,不斷完善此書的內容,在下一次改版中進行訂正。任何批評和建議請發到告知我們,以便共同提高。
目錄
第一篇 基礎篇 第1章 嵌入式系統基礎
1.1 嵌入式系統3
1.1.1 嵌入式系統的概念3
1.1.2 嵌入式系統的組成3
1.1.3 嵌入式系統的特點4
1.1.4 嵌入式系統的套用5
1.1.5 實時作業系統5
1.2 嵌入式處理器6
1.2.1 嵌入式處理器簡介6
1.2.2 嵌入式處理器分類6
1.3 嵌入式作業系統8
1.3.1 作業系統簡介8
1.3.2 嵌入式作業系統基本概念10
1.3.3 使用實時作業系統的必要性11
1.3.4 實時作業系統的優缺點11
1.4 ARM9實驗系統12
1.4.1 ARM9教學實驗系統簡介12
1.4.2 ARM9教學實驗系統操作步驟13
第2章 嵌入式系統開發過程
2.1 嵌入式軟體開發的特點17
2.2 嵌入式軟體的開發流程18
2.3 嵌入式系統調試方法19
2.3.1 ARM仿真器19
2.3.2 GDB調試20
2.4 嵌入式系統集成開發環境23
第3章 ARM體系結構
3.1 ARM介紹24
3.1.1 ARM微處理器系列25
3.1.2 ARM體系結構28
3.2 ARM編程模型32
3.2.1 工作狀態及切換32
3.2.2 存儲器格式32
3.2.3 存儲器訪問33
3.2.4 體系結構直接支持的指令和數據類型34
3.2.5 處理器模式34
3.2.6 內部暫存器35
3.2.7 異常40
第4章 BootLoader
4.1 嵌入式系統的引導代碼45
4.2 vivi45
4.3 U?Boot58
4.4 PPCBoot62
4.5 RJARM2410平台BootLoad代碼65
4.5.1 啟動分析65
4.5.2 片選69
4.6 ARMLinux啟動分析72
4.6.1 概述72
4.6.2 head.S和heads3c2410.S分析73
4.6.3 headarmv.S分析86
第二篇 實驗篇
第5章 創建嵌入式系統開發環境
5.1 嵌入式Linux的開發環境99
5.2 Cygwin100
5.3 交叉編譯的預備知識101
5.4 交叉編譯101
5.4.1 安裝Linux的頭檔案102
5.4.2 編譯安裝binutils105
5.4.3 編譯安裝gcc的C編譯器105
5.4.4 編譯安裝glibc106
5.4.5 編譯安裝gcc的C, C++編譯器107
5.5 Makefile解析108
5.6 實驗1: 一個簡單的應用程式——Helloworld110
第6章 Linux系統在ARM平台的移植
6.1 移植的概念115
6.2 Linux核心結構115
6.2.1 Linux核心組成115
6.2.2 子系統相互間的關係116
6.2.3 系統數據結構116
6.2.4 Linux系統實現結構117
6.2.5 Linux核心原始碼117
6.3 Linux作業系統移植118
6.3.1 Linux系統移植的兩大部分119
6.3.2 系統移植所必需的環境119
6.4 編譯Linux核心122
6.5 檔案系統簡介123
6.6 實驗2: RAMDISK檔案系統製作126
6.7 實驗3: Linux2.6核心移植131
第7章 Linux設備驅動程式開發
7.1 設備驅動概述144
7.2 設備驅動基礎151
7.3 設備驅動模組化編程155
7.4 實驗4: 框架型驅動161
7.5 實驗5: 小鍵盤+LED驅動171
7.6 實驗6: LCD驅動182
7.7 實驗7: IDE硬碟接口205
7.8 實驗8: 音頻輸入/輸出227
第8章 USB設備驅動程式開發
8.1 USB協定簡介259
8.2 USB體系結構261
8.3 USB通信協定263
8.4 USB設備驅動程式設計265
8.4.1 USB系統編程框架266
8.4.2 編寫USB設備驅動程式271
8.5 實驗9: USB接口277
第9章 嵌入式Linux網路編程
9.1 嵌入式Linux網路體系結構280
9.2 嵌入式Linux環境下的socket編程284
9.3 實驗10: 乙太網socket通信290
第10章 圖形用戶接口開發
10.1 嵌入式系統中的GUI簡介303
10.1.1 基於嵌入式Linux的GUI系統底層實現基礎303
10.1.2 3種嵌入式GUI系統的分析與比較304
10.2 MiniGUI編程305
10.2.1 概述305
10.2.2 視窗308
10.2.3 對話框、窗片和控制項313
10.2.4 訊息及訊息佇列313
10.2.5 圖形設備接口314
10.2.6 選單321
10.2.7 定時器322
10.2.8 滑鼠游標323
10.2.9 插入符323
10.2.10 鍵盤和滑鼠輸入324
10.2.11 鍵盤快捷鍵324
10.3 初識Qt/Embedded324
10.4 Qt/Embedded嵌入式圖形開發基礎339
10.4.1 Qt的資源340
10.4.2 系統要求341
10.4.3 架構342
10.4.4 視窗系統342
10.4.5 字型343
10.4.6 輸入設備343
10.4.7 輸入方法343
10.4.8 螢幕加速344
10.5 Qt/Embedded實戰演練344
10.6 實驗11: 圖形界面GUI實驗353
附錄A Linux下常用命令373
參考文獻385