注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡計算機組織與體系結構嵌入式軟件設計之思想與方法

嵌入式軟件設計之思想與方法

嵌入式軟件設計之思想與方法

定 價:¥32.00

作 者: 張邦術 編著
出版社: 北京航空航天大學出版社
叢編項:
標 簽: 計算機體系結構

ISBN: 9787811244205 出版時間: 2009-01-01 包裝: 平裝
開本: 16開 頁數(shù): 270 字數(shù):  

內容簡介

  本書從教學的角度出發(fā),全面討論了嵌入式軟件設計的思想與方法。在編排上循序漸進,從基礎準備,到驅動模型,再深入到整個系統(tǒng)及系統(tǒng)的構建。在講解上通過建立模型來幫助讀者系統(tǒng)掌握嵌入式軟件設計的普遍原理與編程接口。內容包括:高效、穩(wěn)定和規(guī)范的程序基礎,多任務環(huán)境,I/O系統(tǒng)的內部結構,驅動模型,BSP設計要素,嵌入式軟件設計的經(jīng)驗技巧;在硬件基礎方面討論了總線與設備的模型,基于MIPS和ARM SoC在多個系統(tǒng)平臺VxWorks,Lnux及WinCE下的系統(tǒng)資源的操控。本書可作為在校學生學習嵌入式軟件設計原理的教學參考用書,也可作為嵌入式軟件開發(fā)工程人員深入掌握系統(tǒng)軟件設計的指南,以及嵌入式軟件培訓的參考教材。

作者簡介

  張邦術,1999年畢業(yè)于電子科技大學,先后在聯(lián)想、泰鼎、微開和泰克公司從事近10年嵌入式軟件及系統(tǒng)軟件的研發(fā)工作,在VxWorks,Linux和WinCE系統(tǒng)平臺上的開發(fā),以及在音/視頻、移動媒體、測試儀器等領域具有豐富的設計經(jīng)驗,在軟件團隊的組建、培訓和項目管理等方面積累了大量經(jīng)驗。

圖書目錄

第一篇 基礎方法篇
第1章 程序基礎
1.1 設計高性能程序的必要性3
1.1.1 設計高性能程序的必要性3
1.1.2 嵌入式軟件的設計范疇3
1.1.3 嵌入式軟件的分層結構6
1.2 嵌入式軟件的程序設計要求8
1.2.1 代碼結果的要求9
1.2.2 代碼形式的要求10
1.3 嵌入式軟件開發(fā)的基本思路和原則10
1.3.1 系統(tǒng)分析,定義接口11
1.3.2 函數(shù)實現(xiàn),優(yōu)化算法12
1.3.3 清理代碼,補充注釋14
1.3.4 測試修訂,完善文檔 14
1.4 程序實例剖析14
1.4.1 正確理解棧14
1.4.2 內存泄漏18
1.4.3 消除編譯依賴18
1.4.4 消除潛在隱患20
1.4.5 規(guī)范實現(xiàn)范例21
1.4.6 性能優(yōu)化23
1.5 程序設計其他注意點30
1.5.1 謹慎使用“宏”30
1.5.2 正確理解預定義宏34
1.5.3 避免歧義37
第2章 多任務操作系統(tǒng)
2.1 板級支持包40
2.2 嵌入式操作系統(tǒng)與實時性40
2.2.1 嵌入式操作系統(tǒng)41
2.2.2 實時操作系統(tǒng)42
2.3 多任務概述42
2.3.1 進程、線程與任務43
2.3.2 何時需要多任務44
2.3.3 任務狀態(tài)的轉換50
2.3.4 進程調度與調試算法51
2.3.5 任務相關的API51
2.4 進程間共享代碼與可重入性53
2.4.1 共享代碼53
2.4.2 共享代碼可重入性問題53
2.4.3 使用私有數(shù)據(jù)55
2.4.4 使用臨界區(qū)數(shù)據(jù)57
2.5 線程間通信57
2.5.1 共享數(shù)據(jù)結構57
2.5.2 互斥59
2.5.3 信號量60
2.5.4 臨界區(qū)與信號量的實現(xiàn)實例63
第3章 硬件基礎
3.1 ARM74
3.1.1 ARM編程模式75
3.1.2 ARM指令概述78
3.1.3 ARM異常及處理80
3.2 MIPS86
3.2.1 MIPS編程模式87
3.2.2 MIPS指令概述90
3.2.3 MIPS中斷與異常95
3.3 接口基礎98
3.3.1 總線概述99
3.3.2 I2C總線105
3.3.3 PCI總線108
3.3.4 設備模型115
3.3.5 一個IDE控制器設備實例117
第二篇 驅動模型篇
第4章 驅動的通用模型
4.1 設備驅動的作用121
4.2 驅動類型123
4.2.1 Linux中的驅動類型123
4.2.2 WinCE中的驅動類型125
4.2.3 VxWorks中的驅動類型125
4.3 設備驅動的通用模型126
4.3.1 模塊部分的驅動126
4.3.2 設備的驅動例程127
第5章 VxWorks的驅動模型
5.1 VxWorks的I/O系統(tǒng)131
5.1.1 I/O系統(tǒng)概述131
5.1.2 文件名與設備133
5.1.3 基本I/O134
5.1.4 緩沖I/O136
5.1.5 格式化I/O136
5.2 VxWorks的驅動及其內部結構137
5.2.1 驅動的安裝、驅動表138
5.2.2 設備的創(chuàng)建、設備鏈表140
5.2.3 文件的打開、文件描述符表142
5.2.4 文件的讀、寫、控制和關閉操作143
第6章 Linux的驅動模型
6.1 Linux的驅動加載方式145
6.1.1 內核驅動模塊與模塊化驅動145
6.1.2 模塊化驅動的加載與卸載146
6.2 Linux的驅動架構147
6.2.1 一個最簡單的內核驅動148
6.2.2 一個最簡單的模塊驅動151
6.2.3 Linux驅動中注冊驅動153
6.2.4 Linux系統(tǒng)中的設備文件154
6.3 Linux字符型設備驅動155
6.3.1 驅動的加載與清理155
6.3.2 中斷的申請與釋放156
第7章 WinCE的驅動模型
7.1 WinCE驅動類型158
7.2 設備管理器及其驅動模型159
第三篇 BSP/OAL篇
第8章 BSP的基本概念
8.1 BSP與驅動161
8.2 BSP開發(fā)的目標任務162
第9章 BSP的設計要素
9.1 中斷處理163
9.1.1 物理中斷號與邏輯中斷號163
9.1.2 CPU中斷與中斷控制器擴展164
9.1.3 中斷源的查找165
9.1.4 中斷處理線程166
9.2 CPU異常166
9.2.1 異常向量表167
9.2.2 向量表的安裝173
9.2.3 異常處理代碼實例177
9.3 硬件I/O的訪問188
9.3.1 避免使用絕對物理地址188
9.3.2 內存一致性問題192
9.3.3 I/O訪問的刷新198
第10章 Linux的啟動過程
10.1 Linux的啟動流程199
10.2 Linux的啟動過程簡介201
10.2.1 _stext函數(shù)201
10.2.2 start_kernel函數(shù)203
10.2.3 setup_arch函數(shù)204
10.2.4 trap_init函數(shù)204
10.2.5 init_IRQ函數(shù)205
10.2.6 sched_init函數(shù)205
10.2.7 do_initcalls函數(shù)205
10.2.8 init函數(shù)206
10.2.9 init程序207
第11章 WinCE的設計
11.1 WinCE OS平臺開發(fā)簡介209
11.1.1 WinCE平臺的開發(fā)流程209
11.1.2 WinCE內核結構211
11.1.3 WinCE設計中的一些名詞術語212
11.2 WinCE BSP開發(fā)213
11.2.1 啟動裝載器213
11.2.2 OAL開發(fā)215
11.2.3 WinCE配置文件219
11.3 WinCE設備驅動的開發(fā)流程221
11.3.1 設備驅動源代碼221
11.3.2 修改配置文件222
11.3.3 向OS平臺注入驅動223
第四篇 擴展篇
第12章 理解程序的內部結構
12.1 x86匯編及其程序結構226
12.1.1 x86程序段定義227
12.1.2 關聯(lián)段寄存器、確定段的種類230
12.1.3 段組偽指令230
12.2 嵌入式系統(tǒng)中的程序結構231
12.2.1 嵌入式系統(tǒng)中執(zhí)行程序的映像231
12.2.2 鏈接器與命令腳本236
12.3 ELF文件格式241
12.3.1 ELF文件格式概述241
12.3.2 ELF文件格式分析器248
第13章 嵌入式系統(tǒng)的設計思想
13.1 直截了當?shù)乃枷?62
13.2 層次化的思想267
13.3 循序漸進的思想269
13.4 實踐是最好的老師269
13.5 團隊協(xié)作意識270
13.6 大膽嘗試與積極創(chuàng)新270
結 束 語272
參考文獻273
插圖索引
圖11 嵌入式軟件的分層結構7
圖21 VxWorks中的任務狀態(tài)轉換圖50
圖22 驅動中的可重入性問題154
圖23 驅動中的可重入性問題256
圖24 使用共享數(shù)據(jù)區(qū)訪問臨界區(qū)的例子58
圖31 ARM程序狀態(tài)寄存器格式77
圖32 MIPS CPU寄存器88
圖33 MIPS FPU寄存器90
圖34 I2C數(shù)據(jù)位的傳輸106
圖35 I2C起始條件和停止條件106
圖36 I2C總線數(shù)據(jù)傳輸時序圖107
圖37 PCI CONFIGADDRESS寄存器格式113
圖38 PCI類型0配置空間頭部114
圖39 ITE8172 IDE控制器框圖 118
圖51 驅動在系統(tǒng)中的層次結構132
圖52 VxWorks I/O系統(tǒng)的調用關系133
圖53 VxWorks驅動安裝140
圖54 VxWorks設備添加141
圖55 VxWorks文件打開142
圖56 文件讀操作的I/O控制流程143
圖61 Linux驅動與操作系統(tǒng)核心之間的關系147
圖71 WinCE驅動內部框圖158
圖72 WinCE系統(tǒng)中應用程序與設備驅動的交互160
圖91 驅動程序中完整的中斷處理架構164
圖92 IT8172G中斷控制器內部框圖177
圖101 Linux啟動流程框圖200
圖102 Linux啟動執(zhí)行過程細節(jié)201
圖111 WinCE OS開發(fā)的工作流程210
圖112 WinCE的內部層次結構211
圖113 WinCE BSP框圖214
圖121 x86匯編段結構228
圖122 宏匯編中的段鏈接映像230
圖123 x86段組定義 231
圖124 節(jié)的簡單格式237
圖125 節(jié)的完整定義239
圖126 口(ENTRY)的定義240
圖127 ELF目標文件格式242
插表索引
表31 ARM寄存器組織結構75
表32 ARM狀態(tài)寄存器的模式位78
表33 ARM異常處理的入口地址81
表34 ARM異常的優(yōu)先級86
表35 MIPS系統(tǒng)控制寄存器CP088
表36 MIPS32/MIPS64裝入/存儲指令所支持的數(shù)據(jù)類型91
表37 MIPS對齊的裝入存儲指令91
表38 MIPS非對齊的裝入存儲指令91
表39 MIPS原子更新的裝入存儲指令92
表310協(xié)處理器裝入存儲指令92
表311 MIPS立即數(shù)操作的算術指令92
表312 MIPS三操作數(shù)算術指令92
表313 MIPS二操作數(shù)算術指令93
表314 MIPS移位指令93
表315 MIPS乘除法指令94
表316 MIPS 256M區(qū)域內無條件跳轉指令95
表317 MIPS PC相對的條件轉移指令95
表318 MIPS的中斷、狀態(tài)及緣由寄存器的映射關系96
表319 MIPS異常向量的基地址97
表320 MIPS異常向量的偏移地址97
表321 I2C總線術語定義105
表322 PCI總線命令110
表323 ITE8172 IDE控制器的PCI配置寄存器119
表324 ITE8172 IDE總線主設備IDE輸入/輸出寄存器119
表325 IDE命令寄存器120
表111 WinCE常見的映像配置文件219
表121 字符串表簡單例子246
表122 對字符串表索引所得到的字符串246

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號