內容提要
全書在
ARM9和Linux的基本開發環境下深入淺出地敘述了嵌入式Linux的系統開發與套用。全書共7章,包括:嵌入式系統、嵌入式Linux開發基礎、開發環境的建立、嵌入式Linux網路編程、
嵌入式設備驅動、
嵌入式圖形用戶界面(GUI)設計和嵌入式Linux綜合設計項目實例。書中通過大量的例程來講解知識要點,並提供了極有參考價值的開發案例和習題,讀者可以通過這些例程和開發案例對嵌入式Linux開發有一個系統的學習和提高。
章節目錄
目 錄
前言
第1章 嵌入式系統概述 1
1.1 嵌入式系統的定義 1
1.1.1 嵌入式系統的組成和特點 2
1.1.2 嵌入式系統的發展歷程及趨勢 2
1.2 嵌入式系統的體系結構和分類 4
1.2.1 嵌入式系統的體系結構 4
1.2.2 嵌入式系統的分類 5
1.3
嵌入式微處理器 6
1.3.1 嵌入式微處理器的分類 6
1.3.2
ARM嵌入式處理器的核心和架構 6
1.3.3
ARM微處理器結構 14
1.3.4 ARM嵌入式處理器的特點
及套用領域 15
1.3.5
嵌入式處理器的選型原則 15
1.4
嵌入式作業系統 16
1.4.1 作業系統的概念和分類 16
1.4.2 嵌入式Linux作業系統 16
1.4.3 Windows CE作業系統 17
1.4.4
μC/OS-II作業系統 19
1.4.5 Symbian作業系統 20
1.4.6 VxWorks作業系統 22
1.5 嵌入式系統的設計與開發 23
1.5.1 嵌入式系統的設計與開發流程 23
1.5.2 嵌入式系統的模擬仿真與調試 23
本章小結 25
習題與思考題 25
第2章 嵌入式Linux開發基礎 26
2.1 Linux的基本操作 26
2.1.1 用戶系統相關命令 26
2.1.2 檔案目錄相關命令 29
2.1.3 壓縮打包相關命令 30
2.1.4 網路相關命令 31
2.1.5
重定向與管道 31
2.1.6 Linux幫助系統 32
2.2 Linux下C語言程式設計基礎 32
2.2.1 VI的使用 33
2.2.2 GCC編譯器 36
2.2.3 GDB調試器的使用 38
2.2.4 GNU make和makefile 42
2.3 Linux
Shell編程 46
2.4 Linux進程控制編程 53
2.4.1 Linux進程概述 53
2.4.2 Linux進程編程 54
2.4.3 Linux進程通信 58
2.5 Linux下的多執行緒編程 74
2.5.1
執行緒概述 74
2.5.2 執行緒的基本操作 75
2.5.3 執行緒的訪問控制 78
2.5.4 “生產者—消費者”實驗 86
本章小結 88
習題與思考題 88
第3章 開發環境的建立 89
3.1 基於
ARM9的博創2410s開發
實驗平台 89
3.2 ARM與宿主機的通信 90
3.2.1
串口通信 90
3.2.2 乙太網接口 91
3.2.3 USB接口 92
3.2.4
JTAG接口 92
3.3
交叉編譯環境的建立 92
3.3.1 宿主機環境搭建 93
3.3.2 交叉編譯環境的建立 97
3.4 Boot Loader技術 99
3.4.1 初識Boot Loader工作原理 99
3.4.2 VIVI的代碼分析與移植 103
3.4.3
U-Boot的分析與移植 106
3.5 ARM-Linux核心的編譯與移植 113
3.5.1 Linux 核心版本與特點 113
3.5.2
Linux核心移植 115
3.6
根檔案系統的建立與燒寫 121
3.6.1 嵌入式Linux常用的檔案系統 122
3.6.2 根檔案系統的目錄結構 125
3.6.3 定製系統檔案 125
3.6.4 NFS檔案系統的建立與使用 126
3.6.5 Samba服務的建立與使用 128
3.6.6 使用BusyBox構建
根檔案系統 133
3.7 建立嵌入式Linux應用程式 136
本章小結 139
習題與思考題 140
第4章 嵌入式Linux網路編程 141
4.1 TCP/IP概述 141
4.1.1
OSI參考模型與TCP/IP
參考模型 141
4.1.2 TCP/IP協定族 142
4.1.3 TCP和UDP 143
4.2 網路編程基礎 145
4.2.1 socket概述 145
4.2.2 socket的基本函式 150
4.3 socket應用程式設計 154
4.3.1 TCP編程實例 154
4.3.2 UDP編程實現 157
本章小結 159
習題與思考題 159
第5章 嵌入式設備驅動 160
5.1 Linux下設備驅動概述 160
5.1.1 設備的分類 160
5.1.2 設備檔案 161
5.1.3 主設備號與次設備號 161
5.1.4 設備檔案系統與系統檔案系統 162
5.2 設備驅動程式的結構 163
5.3 字元設備驅動 166
5.4 LCD設備驅動 173
5.4.1 LCD工作原理 174
5.4.2 FrameBuffer機制簡介 174
5.4.3 LCD驅動開發流程 175
5.5 塊設備驅動 177
5.5.1 塊設備驅動程式簡介 177
5.5.2 塊設備驅動程式工作原理 177
5.5.3 塊設備驅動主要數據結構 178
5.5.4 塊設備驅動編寫流程 181
5.6 鍵盤驅動 182
5.6.1 鍵盤的分類 182
5.6.2 鍵盤工作原理 183
5.6.3 鍵盤驅動程式的實現 184
5.7 Linux網路驅動程式 187
5.7.1 網路設備概述 187
5.7.2 網路設備的載入方法 188
5.7.3 重要數據結構 190
5.7.4 網路設備的初始化 192
5.7.5 打開和關閉網路設備 192
5.7.6 傳送過程的實現 192
5.7.7 接收過程的實現 193
5.7.8 中斷控制 194
5.7.9 NE2000兼容
網卡驅動 程式的移植 195
5.8 觸控螢幕接口設計與Linux驅動編程 198
5.8.1 觸控螢幕接口概述 198
5.8.2 觸控螢幕驅動的體系接口 200
5.8.3 觸控螢幕的
Linux驅動程式分析 201
5.8.4 觸控螢幕的測試與校準 207
本章小結 210
習題與思考題 210
第6章 Qt圖形編程 211
6.1
嵌入式GUI簡介 211
6.1.1
Qt/Embedded 211
6.1.2 MiniGUI 212
6.1.3 Microwindows 212
6.1.4 OpenGUI 213
6.1.5 常見GUI的參數比較 213
6.2 Qt/Embedded開發基礎 214
6.2.1
Qt/Embedded介紹 214
6.2.2 Qt/Embedded的安裝與
環境變數設定 216
6.2.3 Qt/Embedded信號和插槽機制 217
6.2.4 QtDesigner的使用 221
6.2.5 Qt/Embedded視窗實例 222
6.3 基於Qt技術的Qtopia 225
6.3.1 基於Qt技術的
Qtopia系統
平台 226
6.3.2 Qtopia介紹及其開發環境的
建立 226
6.3.3 Qt/Embedded和Qtopia下
應用程式的實現 228
6.4 Qt編程綜合實驗 231
6.4.1 基於PC的“Hello World”程式 232
6.4.2 發布
Qt/Embedded程式
到目標板 239
本章小結 241
習題與思考題 241
第7章 嵌入式Linux綜合設計
項目實例 242
7.1 網路視頻監控系統 242
7.2 車載信息娛樂系統 244
7.2.1 實例說明 244
7.2.2 設計思路分析 245
7.2.3 硬體電路設計 246
7.2.4 軟體設計 248
7.3 基於
嵌入式平台的電梯監控系統 251
7.3.1 系統概述 251
7.3.2 系統設計 253
7.3.3 系統實現 256
7.4
無線點菜系統 266
7.4.1 設計思路分析 266
7.4.2 系統硬體設計 267
7.4.3 系統軟體設計 267
7.4.4 總結 278
7.5 基於嵌入式與Web Service的
智慧型家居系統 278
7.5.1 系統概述 278
7.5.2 系統設計 280
7.5.3 系統實現 296
附錄 309
附錄A S3C2410X引腳及信號定義 309
附錄B 國外高校嵌入式系統課程的
體系結構 323
參考文獻 327
基本信息
作者: 金偉正 叢書名:
電子信息與電氣學科規劃教材
上架時間:2011-4-28
出版日期:2011 年4月
開本:16開
頁碼:309
版次:1-1
內容簡介
嵌入式系統技術已被廣泛地套用于軍事、
工業控制系統、信息家電、通信設備、醫療儀器、智慧型儀器儀表等眾多領域。linux是一個優秀的作業系統,
嵌入式作業系統是近年來的熱門話題。嵌入式系統原理與套用對大學生、研究生今後的工作科研有著很重要的作用,也是科研人員、工程人員必備的知識。
《嵌入式linux系統開發與套用》在介紹嵌入式作業系統與一般原理基礎上,詳細地論述了嵌入式系統開發過程中的主要技術問題,著重介紹主流的、廣受歡迎的linux作業系統的設計與實現,包括linux的核心開發原理。《嵌入式linux系統開發與套用》注重原理講解和實驗相結合,培養學生的理論和實際動手能力。全書分為13章,內容包括嵌入式系統概論、linux基礎知識、linux編程環境、linux外殼程式編程、構建嵌入式linux開發平台、 arm調試環境、
嵌入式bootloader技術、
linux核心配置、arm-linux核心分析和移植、嵌入式檔案系統、linux多執行緒編程、嵌入式web設計、嵌入式linux的
gui等內容。
《嵌入式linux系統開發與套用》內容豐富,圖文並茂,語言流暢,敘述清楚,通俗易懂,注重理解與實例,可操作性強,大部分章節配有實例和
源程式。《嵌入式linux系統開發與套用》可作為計算機學科、
電子信息及電氣學科等相關專業(
電子工程、
通信工程、計算機、信號處理等專業)本科生、研究生及工程碩士的
嵌入式課程的教材,也可供對嵌入式系統感興趣的技術人員參考使用。
目錄
《嵌入式linux系統開發與套用》
第1章 嵌入式系統概論
1.1 嵌入式系統概述
1.1.1 嵌入式系統的歷史
1.1.2 什麼是嵌入式系統
1.1.3 嵌入式系統的特點
1.1.5 嵌入式系統的套用領域
1.1.6 嵌入式系統的發展趨勢
1.2 嵌入式系統開發
1.2.2 嵌入式系統中的硬體
1.2.3 嵌入式系統中的軟體
1.2.4 嵌入式系統軟體開發的一般過程
1.3 嵌入式作業系統
1.3.1 嵌入式作業系統概述
1.3.2 嵌入式作業系統的分類
1.3.3 嵌入式作業系統的特點
1.3.4 典型的嵌入式作業系統
.1.3.5 嵌入式作業系統的選擇
1.4 linux作業系統
1.4.1 linux作業系統概述
1.4.2 linux的重要性
1.4.3 嵌入式linux系統開發平台
1.4.4 linux的發展前景
1.5 思考題
第2章 linux基礎知識
2.1 認識linux作業系統
2.1.1 linux簡明歷史
2.1.2 linux系統的特點和組成
2.1.3 linux的開發過程
2.2 基本操作命令
2.2.1 字元界面簡介
2.2.2 常用命令簡介
2.3 linux檔案與目錄系統
2.3.2 linux目錄系統
2.4 shell簡介
2.5 網路服務簡介
2.5.1 linux支持的網路協定
2.5.2 linux的網路服務
2.6 思考題
第3章 linux編程環境
3.1 linux編程環境介紹
3.1.1 系統平台環境
3.1.2 開發工具環境
3.1.3 基於文本模式的開發平台
3.1.4 集成開發平台eclipse+cdt
3.1.5 文檔幫助環境
3.2 常用編輯器
3.2.1 vim編輯器
3.2.2 emacs編輯器
3.3 gcc編譯器的使用
3.3.1 gcc的主要選項
3.3.2 gnu c擴展簡介
3.4 gnu make管理項目
3.4.1 make簡介
3.5 gdb調試
3.5.1 gdb命令介紹
3.5.2 gdb調試例程
3.6 思考題
第4章 linux外殼程式編程
4.1 創建和運行外殼程式
4.1.2 運行外殼程式
4.2 使用外殼變數
4.2.2 讀取變數的值
4.2.4 引號的作用
4.3 數值運算命令
4.4.1 if表達式
4.5.1 for語句
4.5.2 while語句
4.5.3 until語句
4.6 shift命令
4.7 select語句
4.8 repeat語句
4.9 函式
4.10 shell套用舉例
4.11 思考題
第5章 構建嵌入式linux開發平台
5.1 gnu跨平台開發工具鏈
5.2 嵌入式linux核心
5.4 bootloader簡介
5.5 思考題
第6章 arm調試環境
6.1 arm 調試工具簡介
6.1.1 jtag仿真器
6.1.2 multi-ice server
6.2 ads軟體調試工具
6.2.1 使用metrowork codewarrior for arm developer suite
6.2.2 使用realview debugger
6.2.3 使用axd debugger
7.1 bootloader的基本概念
7.1.1 bootloader所支持的cpu和嵌入式板
7.1.2 bootloader的安裝點和啟動過程
7.1.3 bootloader的模式
7.1.4 bootloader與主機之間的通信方式
7.2 bootloader典型結構框架
7.2.1 bootloader總體流程
7.2.2 bootloader的stage1
7.2.3 bootloader的stage2
7.3 典型bootloader分析和移植
7.3.1 u-boot
7.3.2 blob
7.4 其他bootloader介紹
7.4.1 redboot
7.4.2 armboot
7.4.3 ppcboot
7.4.4 vivi
7.4.5 yamon
7.5 思考題
8.1 核心概述
8.2 嵌入式linux核心代碼結構
8.3 核心開發的特點
8.3.1 沒有libc庫
8.3.2 gnu c
8.3.3 沒有記憶體保護機制
8.3.5 容積小而固定的棧
8.3.6 同步和並發
8.3.7 可移植性的重要性
8.4 嵌入式linux核心的配置
8.4.1 makefile
8.4.2 配置檔案
8.5 配置舉例
8.6 思考題
第9章 arm-linux核心分析和移植
9.1.2 arm微處理器的類型
9.1.3 arm微處理器的暫存器結構
9.1.4 arm微處理器的指令結構
9.2.1 記憶體管理單元mmu
9.2.3 arm-linux存儲機制的建立
9.2.4 arm-linux對進程虛擬空間的管理
9.3.1 task_struct數據結構
9.3.2 linux進程的創建、執行和消亡
9.4 arm-linux中斷與中斷處理
9.4.1 linux處理中斷概述
9.4.3 arm的異常中斷種類
9.5 arm-linux系統啟動與初始化
9.5.1 核心數據結構的初始化
9.5.2 外設初始化
9.5.3 init進程和linittab檔案
9.5.4 rc啟動腳本
9.5.5 shell的啟動
9.6 linux驅動程式簡介
9.6.1 設備的分類
9.6.2 設備號
9.6.3 設備節點
9.7 linux模組化機制
9.7.1 linux的模組化
9.7.2 模組的載入
9.7.3 模組的卸載
9.8 arm-linux核心裁減
9.9 嵌入式linux的移植
9.9.1 移植準備
9.9.2 移植步驟
9.9.3 配置核心選項
9.10 思考題
10.1.1 linux檔案系統概述
10.1.2 linux檔案系統布局
10.1.3 linux支持的檔案系統
10.2 嵌入式檔案系統簡介
10.2.1 nor flash與nand flash介紹
10.2.2 mtd介紹
10.2.3 cramfs檔案系統簡介
10.2.4 romfs檔案系統簡介
10.4 根檔案系統設定
10.5 busybox
10.5.1 busybox簡介
10.6 嵌入式檔案系統的設計
10.6.1 檔案系統格式的選型的基本策略
10.6.2 混合型檔案系統的設計
10.7 思考題
11.1.2 tcp/ip協定棧的數據流向
11.1.3 tcp協定與udp協定
11.2 http協定
11.2.1 http協定的方法
11.2.2 http協定訊息頭
11.2.3 http協定使用舉例
11.2.4 核心網路服務
11.3 socket編程基礎
11.3.1 socket描述
11.3.2 socket描述符
11.4.1 協定標準
11.4.2 瘦web伺服器
11.4.3 嵌入式套用接口技術
11.4.4 實現形式
11.4.5 emit
11.4.6 rompager
11.5 web伺服器構建
11.6 思考題
第12章 嵌入式linux的gui
12.1.1 minigui
12.1.2 qt/embedded
12.1.3 nano-x
12.1.4 opengui
12.2 minigul程式設計基礎
12.2.1 minigui v1.3.3軟體包
12.2.2 minigui的特點
12.2.3 視窗處理過程
12.2.4 minigui的執行緒機制
12.2.5 minigui的體系結構
12.2.6 minigui的底層引擎
12.2.7 minigui的三種運行模式
12.2.8 minigui移植
12.3.1 qt/embedded的圖形引擎實現基礎
12.3.2 qt/embedded的
事件驅動基礎
12.3.3 qt/embedded底層支持分析
12.3.4 qt/embedded的移植
12.4 思考題
參考文獻