內容簡介
《基於ARM的嵌入式Windows CE系統高級開發技術》是2011 年10月清華大學出版社出版的圖書,作者是李尚柏、鐘睿、粟思科。
嵌入式系統涉及嵌入式硬體設備、嵌入式作業系統和嵌入式套用軟體等多種技術和概念。本書從嵌入式系統設計和套用開發的角度,系統、全面、詳細地介紹了基於windows ce的嵌入式系統的設計原理、開發步驟和高級套用開發技術。全書共12章,分為3部分,第1~3章為基礎和概念部分,介紹了嵌入式系統的基本概念、嵌入式微處理器及其主要的片內外設;第4~8章為windows ce操作部分,介紹了windows ce嵌入式作業系統的特性、體系結構、系統原理、設計方法、驅動程式開發以及應用程式開發;第9~12章為提高部分,在介紹基本原理、設計方法的基礎上,為了加深讀者對嵌入式系統基本概念和原理的理解,提高讀者的設計水平,以套用實例分析的形式,重點討論了嵌入式系統開發中常見但不易解決的技術難題,包括無作業系統的應用程式開發、windows ce中斷驅動程式的開發、windows ce核心的修改和擴展以及嵌入式系統引導程式的修改和擴展等。
《基於arm的嵌入式windows ce系統高級開發技術》採用循序漸進、深入淺出、理論聯繫實際的寫作理念,既有理論分析,又有豐富生動的套用實例,使讀者能夠快速、全面地掌握嵌入式系統設計與開發中的基本技能。
《基於arm的嵌入式windows ce系統高級開發技術》採用循序漸進、深入淺出、理論聯繫實際的寫作理念,既有理論分析,又有豐富生動的套用實例,使讀者能夠快速、全面地掌握嵌入式系統設計與開發中的基本技能。
《基於arm的嵌入式windows ce系統高級開發技術》可作為從事嵌入式系統開發的工程技術人員的參考用書,也可作為高等院校電子工程、計算機、微電子、自動控制等相關專業本科生和研究生的教材。
圖書目錄
第1章 嵌入式系統概論 1
1.1 概述 1
1.2 嵌入式系統簡介 1
1.3 嵌入式微處理器 2
1.3.1 arm嵌入式微處理器 3
1.3.2 其他類型的嵌入式微處理器 4
1.3.3 嵌入式微處理器的選型 4
1.4 嵌入式作業系統 6
1.4.1 嵌入式作業系統的特點 7
1.4.2 嵌入式作業系統分類 7
1.4.3 常見嵌入式作業系統簡介 8
1.4.4 常用嵌入式作業系統特徵比較 9
1.5 本章小結 10
1.6 複習與思考 10
第2章 arm微處理器基礎 11
2.1 概述 11
2.2 arm處理器簡介 11
2.2.1 arm處理器結構特點 12
2.2.2 arm的版本 13
.2.2.3 arm結構的變體 14
2.2.4 常見arm型號簡介 15
2.2.5 arm9tdmi核心 17
2.2.6 arm9流水線結構 18
2.3 arm微處理器的編程模型 19
2.3.1 數據類型 19
2.3.2 存儲格式 20
2.3.3 存儲器組成 21
2.3.4 工作狀態 22
2.3.5 工作模式 22
2.3.6 arm暫存器 23
2.4 arm的中斷與異常 26
2.4.1 arm異常種類 27
2.4.2 異常的回響與處理 28
2.4.3 異常優先權與異常向量 30
2.5 arm編程技術和套用實例 30
2.5.1 異常處理程式的安裝 30
2.5.2 軟體中斷異常 33
2.5.3 內嵌式彙編的使用 39
2.6 本章小結 41
2.7 複習與思考 41
第3章 arm9核心處理器常用資源 42
3.1 概述 42
3.2 arm920t核心及其處理器簡介 42
3.3 boot rom 45
3.3.1 boot rom地址映射 46
3.3.2 boot rom引導過程 46
3.3.3 啟動狀態硬體配置 48
3.4 系統控制器 49
3.4.1 系統的復位與啟動 50
3.4.2 時鐘控制 51
3.4.3 電源管理 53
3.5 向量中斷控制器 53
3.5.1 中斷優先權 54
3.5.2 中斷源 54
3.5.3 關於中斷的進一步討論 56
3.6 lcd控制器 58
3.7 圖形加速器 60
3.8 maverickcrunch數字協處理器 61
3.9 dma控制器 61
3.10 usb控制器 62
3.11 存儲控制器 64
3.12 gpio 65
3.13 本章小結 66
3.14 複習與思考 67
第4章 windows ce作業系統 68
4.1 概述 68
4.2 windows ce作業系統簡介 68
4.2.1 windows ce的版本和發展史 69
4.2.2 windows ce與windows xp embedded 69
4.3 windows ce系統特點 70
4.3.1 系統功能模組化 70
4.3.2 穩定的實時性支持 71
4.3.3 良好的兼容性和平台支持 72
4.3.4 豐富的多媒體支持 72
4.3.5 廣泛的全球性支持 73
4.3.6 強大的開發平台支持 73
4.3.7 廣闊的套用前景 73
4.4 windows ce開發概述 74
4.4.1 windows ce開發類型 74
4.4.2 windows ce開發流程 74
4.5 windows ce的開發工具 76
4.5.1 platform builder簡介 76
4.5.2 evc簡介 82
4.5.3 visual studio 84
4.5.4 windows ce標準sdk簡介 85
4.6 遠程訪問工具 86
4.6.1 遠程工具的連線 87
4.6.2 遠程檔案瀏覽工具 87
4.6.3 遠程註冊表編輯器 88
4.6.4 遠程系統信息查看工具 89
4.6.5 遠程測評工具 89
4.6.6 遠程核心跟蹤工具 90
4.6.7 遠程堆查看工具 91
4.6.8 遠程進程瀏覽工具 91
4.6.9 遠程訊息監視工具 92
4.7 本章小結 93
4.8 複習與思考 93
第5章 windows ce體系結構 94
5.1 概述 94
5.2 wince作業系統模型 95
5.2.1 硬體層 96
5.2.2 oem層 96
5.2.3 作業系統層 97
5.2.4 應用程式層 99
5.3 進程和執行緒 99
5.3.1 進程 99
5.3.2 執行緒 103
5.3.3 執行緒同步 109
5.3.4 進程間的通信 120
5.4 記憶體管理 123
5.4.1 rom與ram 123
5.4.2 物理記憶體與虛擬記憶體 124
5.4.3 記憶體的組織結構 125
5.4.4 進程地址空間結構 127
5.4.5 堆和棧 128
5.4.6 記憶體管理函式 130
5.5 檔案管理與註冊表 131
5.5.1 檔案系統 131
5.5.2 wince檔案i/o函式 132
5.5.3 對象存儲 133
5.5.4 註冊表 134
5.6 用戶界面和圖形子系統簡介 140
5.6.1 圖形系統 140
5.6.2 視窗系統 141
5.6.3 事件系統 141
5.7 套用實例:進程間的通信方法 144
5.7.1 剪貼簿 145
5.7.2 wm_copydata訊息 147
5.7.3 記憶體映射檔案 149
5.7.4 點到點訊息佇列 152
5.8 本章小結 155
5.9 複習與思考 156
第6章 windows ce的核心定製 157
6.1 概述 157
6.2 板級支持包 157
6.2.1 bsp的基本概念 158
6.2.2 bsp包的內容 158
6.2.3 bsp的安裝 159
6.3 windows ce核心定製 160
6.3.1 windows ce基本核心定製 160
6.3.2 核心的編譯 171
6.3.3 核心下載 173
6.3.4 作業系統映像的調試 174
6.4 作業系統映像的配置檔案 179
6.4.1 bib檔案 180
6.4.2 reg檔案 184
6.4.3 dat檔案 184
6.4.4 db檔案 185
6.5 sdk的生成與導出 186
6.6 核心定製範例 186
6.6.1 添加人機接口組件 186
6.6.2 存儲設備支持 187
6.7 本章小結 188
6.8 複習與思考 188
第7章 windows ce驅動程式 189
7.1 概述 189
7.1.1 驅動開發的硬體基礎 190
7.1.2 驅動開發前的必要準備 191
7.2 wince驅動程式 192
7.2.1 驅動程式分類 192
7.2.2 wince設備驅動概覽 195
7.3 設備管理器 198
7.3.1 設備註冊信息 199
7.3.2 設備命名 201
7.3.3 設備索引 201
7.3.4 設備管理api 202
7.3.5 驅動程式載入 202
7.4 驅動程式的資源 204
7.4.1 i/o資源管理器 204
7.4.2 中斷處理 205
7.4.3 記憶體管理和使用 211
7.5 流接口設備驅動 217
7.5.1 流接口驅動的結構 217
7.5.2 流接口驅動的訪問 223
7.5.3 流接口驅動的訪問方式 225
7.6 pcmcia設備驅動程式剖析 225
7.6.1 wince的pcmcia卡設備驅動結構 226
7.6.2 ep9315的pcmcia匯流排接口 227
7.6.3 pcmcia卡設備驅動的實現 229
7.7 本章小結 244
7.8 複習與思考 244
第8章 windows ce應用程式開發 245
8.1 概述 245
8.2 wince mfc與標準桌面系統mfc的差異 245
8.2.1 完全支持的mfc類 246
8.2.2 不完全支持的mfc類 248
8.2.3 不支持的類 252
8.2.4 wince專用類 253
8.3 wince數據結構差異 254
8.3.1 支持的數據結構 254
8.3.2 不支持的數據結構 256
8.4 字元及字元串處理差異 256
8.4.1 ansi字元串和unicode字元串 257
8.4.2 字元串處理函式 257
8.4.3 ansi字元串與unicode字元串之間的轉換 258
8.4.4 mfc類cstring對字元串的處理 260
8.5 網路編程 260
8.5.1 winsock網路編程接口 261
8.5.2 wince網路編程函式 262
8.5.3 udp編程 264
8.5.4 tcp編程 270
8.6 ftp編程 284
8.6.1 ftp伺服器註冊表設定 285
8.6.2 ftp編程函式 286
8.6.3 ftp編程實例 287
8.7 資源共享編程 297
8.7.1 smb伺服器的註冊表設定 297
8.7.2 資源共享編程函式 300
8.7.3 磁碟共享編程實例 301
8.8 本章小結 308
8.9 複習與思考 309
第9章 套用實例——無作業系統的應用程式開發 310
9.1 概述 310
9.2 ads開發環境簡介 310
9.2.1 codewarrior 311
9.2.2 axd 312
9.2.3 multi-ice 313
9.3 ads應用程式開發 314
9.3.1 建立工程項目 314
9.3.2 產生源檔案代碼 316
9.3.3 編譯項目 317
9.3.4 項目的軟體調試 320
9.4 嵌入式系統引導程式 325
9.4.1 bootloader的任務和開發方式 325
9.4.2 ep9315開發板的啟動配置 326
9.4.3 bootloader代碼分析 327
9.5 無作業系統應用程式的生成和調試 334
9.5.1 無作業系統應用程式的生成 334
9.5.2 無作業系統應用程式的下載 337
9.5.3 無作業系統應用程式的引導和測試 337
9.5.4 應用程式中異常中斷處理 339
9.6 本章小結 341
9.7 複習與思考 341
第10章 套用實例——windows ce中斷驅動程式開發 342
10.1 概述 342
10.1.1 創建驅動程式工程 343
10.1.2 流驅動程式接口代碼 345
10.1.3 模組定義檔案(*.def檔案) 347
10.1.4 驅動程式註冊表 348
10.1.5 驅動程式的產生、載入和測試 348
10.1.6 應用程式接口測試 349
10.2 驅動程式中斷的使用 350
10.2.1 windows ce邏輯中斷 350
10.2.2 硬體中斷到邏輯中斷映射的實現 352
10.2.3 中斷的安裝 353
10.2.4 egpio中斷的映射 355
10.2.5 egpio中斷的安裝 356
10.3 驅動程式中數據的輸入和輸出 358
10.3.1 驅動程式中物理記憶體的映射 358
10.3.2 驅動程式中記憶體的使用 359
10.3.3 在中斷中獲取設備的數據 361
10.3.4 應用程式從驅動中讀取數據 362
10.3.5 從應用程式獲取數據 362
10.4 驅動程式共享應用程式的地址空間 363
10.4.1 應用程式記憶體到驅動程式地址空間的映射 363
10.4.2 驅動程式中使用應用程式的地址空間 367
10.4.3 在驅動程式中向應用程式發訊息 369
10.4.4 在應用程式中回響驅動程式的訊息 370
10.5 本章小結 370
10.6 複習與思考 371
第11章 套用實例——核心驅動的修改和擴展 372
11.1 概述 372
11.2 m41st95實時時鐘晶片簡介 373
11.2.1 m41st95的spi匯流排接口 373
11.2.2 m41st95的內部暫存器 375
11.3 ep9315的spi接口 377
11.3.1 spi接口暫存器 377
11.3.2 spi的工作過程 380
11.4 m41st95與ep9315的硬體、軟體接口 381
11.4.1 硬體接口 381
11.4.2 ep9315 spi接口的初始化 382
11.4.3 m41st95的初始化 384
11.4.4 m41st95的多暫存器讀寫 387
11.5 windows ce下實時時鐘的核心實現 389
11.5.1 windows ce的時鐘系統及其用戶接口 390
11.5.2 windows ce實時時鐘的核心實現 392
11.5.3 windows ce實時時鐘的實現步驟 394
11.5.4 修改核心代碼應注意的問題 397
11.6 本章小結 398
11.7 複習與思考 398
第12章 套用實例——引導程式的修改和擴展 399
12.1 概述 399
12.2 ep9315的sdram控制器 400
12.3 sdram接口及地址映射 403
12.3.1 sdram存儲器電路及定址方式 403
12.3.2 4bank×13row×9col sdram的地址映射 405
12.3.3 4bank×13row×10col sdram的地址映射 406
12.4 sdram的初始化 407
12.4.1 sdram的模式暫存器 407
12.4.2 sdram的初始化 408
12.5 arm處理器的記憶體管理部件mmu 412
12.5.1 存儲器管理部件 412
12.5.2 虛擬地址到物理地址的變換 413
12.5.3 記憶體訪問過程 419
12.5.4 地址映射表的程式實現 420
12.5.5 sdram擴容後的地址映射表 426
12.6 windows ce的存儲器管理 427
12.6.1 虛擬地址模型及其地址映射 427
12.6.2 系統記憶體配置 431
12.6.3 系統記憶體配置調整 434
12.7 本章小結 435
12.8 複習與思考 435
參考文獻 436
附錄a arm指令速查表 437
附錄b thumb指令速查表 448