目 錄
譯者序
序
前言
第1版前言
網站上的內容
嵌入式軟件開發路綫圖
第1章 嵌入式軟件 1
1.1 嵌入式應用的影響 1
1.1.1 來自開發的挑戰 1
1.1.2 軟件復用 3
1.1.3 實時操作係統 3
1.1.4 文件係統 4
1.1.5 USB 4
1.1.6 圖形 5
1.1.7 網絡 5
1.1.8 小結 6
1.2 嵌入式係統的存儲器 7
1.2.1 存儲器 7
1.2.2 軟件開發麵臨的挑戰 8
1.2.3 所有東西都會齣錯 9
1.2.4 好的解決方法 10
1.3 存儲器架構 10
1.3.1 選項 10
1.3.2 平麵單一地址空間存儲器 11
1.3.3 分段空間存儲器 11
1.3.4 單元切換空間存儲器 12
1.3.5 多地址空間存儲器 13
1.3.6 虛擬空間存儲器 14
1.3.7 高速緩衝存儲器 14
1.3.8 存儲器管理單元 14
1.3.9 小結 15
1.4 軟件是如何影響硬件設計的 15
1.4.1 誰在設計硬件 15
1.4.2 軟件主導硬件 16
1.4.3 軟硬件的均衡 16
1.4.4 硬件調試 16
1.4.5 自檢 17
1.4.6 小結 18
1.5 將軟件移植到新處理器架構上 18
1.5.1 特定目標 19
1.5.2 RTOS問題 21
1.5.3 處理器移植和開放標準 22
1.5.4 小結 24
1.6 汽車電子的嵌入式軟件 24
1.6.1 概要 24
1.6.2 汽車電子特徵 24
1.6.3 編程問題 25
1.6.4 實時操作係統因素 25
1.6.5 小結 26
1.7 芯片設計時如何選擇CPU 27
1.7.1 設計復雜度 27
1.7.2 設計復用性 28
1.7.3 存儲器架構和保護 28
1.7.4 CPU性能 29
1.7.5 功耗 29
1.7.6 成本 29
1.7.7 軟件問題 29
1.7.8 多核SoC 29
1.7.9 小結 30
1.8 USB軟件的介紹 30
1.8.1 什麼是USB 30
1.8.2 USB外設 31
1.8.3 USB通信 32
1.8.4 USB軟件 32
1.8.5 USB和嵌入式係統 33
1.8.6 小結 33
1.9 走嚮USB 3.0時代 34
1.9.1 概述 34
1.9.2 總綫架構 34
1.9.3 綫纜和連接器 34
1.9.4 封包路由 34
1.9.5 雙嚮協議流 35
1.9.6 批量流 35
1.9.7 USB 3.0電源管理 36
1.9.8 USB 3.0集綫器 36
1.9.9 xHCI:新型主控製器接口 36
1.9.10 USB的未來應用 36
1.9.11 小結 37
擴展閱讀 37
第2章 設計和開發 38
2.1 嵌入式係統軟件開發的新興技術 38
2.1.1 微處理器技術 39
2.1.2 係統架構 39
2.1.3 設計組閤性 40
2.1.4 軟件內容 40
2.1.5 編程語言 41
2.1.6 軟件團隊的規模和分布 41
2.1.7 UML和建模 42
2.1.8 關鍵技術 42
2.1.9 小結 42
2.2 選擇開發工具 43
2.2.1 開發工具鏈 43
2.2.2 編譯器特徵 44
2.2.3 嵌入式係統的擴展 44
2.2.4 優化 45
2.2.5 構建工具:簡要介紹關鍵問題 46
2.2.6 調試 46
2.2.7 調試工具:關鍵問題的迴顧 49
2.2.8 標準和開發工具集成 49
2.2.9 選擇的暗示 50
2.2.10 小結 51
2.3 Eclipse:集成嵌入式開發工具 51
2.3.1 介紹 51
2.3.2 Eclipse平颱的思想 52
2.3.3 平颱 52
2.3.4 使用Eclipse進行嵌入式開發 53
2.3.5 小結 54
2.4 跨越RTOS界限的開發係統 54
2.4.1 標準化是解決之道 54
2.4.2 Eclipse解決方案 55
2.4.3 Eclipse插件 55
2.4.4 Eclipse授權 56
2.4.5 Eclipse用戶優勢 56
2.4.6 視圖 56
2.4.7 非嵌入式插件 57
2.5 嵌入式軟件和UML 57
2.5.1 為什麼要用UML建模 58
2.5.2 從架構中分離應用 60
2.5.3 xtUML代碼生成 64
2.5.4 小結 66
2.6 用戶界麵開發 67
2.6.1 用戶界麵的多樣性 67
2.6.2 用戶界麵的實現 68
2.6.3 一個閤理化的UI解決方案 70
2.6.4 小結 71
2.7 軟件和功耗 71
2.7.1 介紹 71
2.7.2 軟件問題 73
2.7.3 軟件中的功耗控製 74
2.7.4 多核 75
2.7.5 硬件問題 76
2.7.6 虛擬編程 78
2.7.7 小結 78
第3章 編程 79
3.1 為特殊存儲器編程 79
3.1.1 特殊存儲器 79
3.1.2 非易失性RAM 79
3.1.3 共享存儲器 81
3.1.4 小結 82
3.2 嵌入式係統中的自檢 82
3.2.1 存儲器測試 83
3.2.2 I/O設備 85
3.2.3 多綫程問題 85
3.2.4 看門狗 86
3.2.5 自檢失敗 86
3.2.6 最後一些要點 86
3.3 命令行解釋器 86
3.3.1 嵌入式係統的診斷功能 87
3.3.2 讓嵌入式係統開始運行 87
3.3.3 命令行解釋器——需求 87
3.3.4 設計命令行解釋器 88
3.3.5 命令行解釋器的實現 88
3.3.6 命令行解釋器的原型代碼 89
3.3.7 小結 94
3.4 嵌入式軟件應用:交通信號燈 94
3.4.1 應用程序 94
3.4.2 硬件配置 94
3.4.3 程序的實現 95
3.4.4 主循環 95
3.4.5 中斷 96
3.4.6 延時 97
3.4.7 信號燈 97
3.4.8 使用全局變量 97
第4章 C語言 99
4.1 共同變量 99
4.2 C函數的原型 101
4.2.1 在函數原型之前 102
4.2.2 函數原型的應用 102
4.2.3 使用函數原型 102
4.3 中斷函數和ANSI關鍵字 103
4.3.1 中斷函數 103
4.3.2 ANSI C const關鍵字 104
4.3.3 ANSI C volatile關鍵字 105
4.4 從位開始 106
4.4.1 位運算 106
4.4.2 二進製常量 107
4.4.3 結構體中的位域 107
4.4.4 微處理器位域指令 108
4.4.5 I/O設備和位域 108
4.4.6 小結 109
4.5 浮點數在編程中的應用 109
4.5.1 示例 110
4.5.2 程序實測 110
4.5.3 問題的解答 111
4.5.4 從教訓中學習 111
4.6 從不同的角度看待C語言 111
4.6.1 靜態數據 112
4.6.2 關於分號 112
4.6.3 指針和指針運算 113
4.6.4 聰明反被聰明誤 113
4.6.5 小結 114
4.7 減少函數調用的開銷 114
4.7.1 編譯器和結構化代碼 114
4.7.2 內聯函數 114
4.7.3 函數調用 115
4.7.4 參數傳遞 115
4.7.5 局部存儲 115
4.7.6 生成堆棧幀 116
4.7.7 返迴值 117
4.7.8 小結 117
4.8 精通結構布局 117
4.8.1 關鍵概念 118
4.8.2 位域 121
4.8.3 提示和技巧 122
4.9 C語言編程和存儲器 130
4.9.1 存儲器 131
4.9.2 段 131
4.9.3 小結 131
4.10 C/C++中的指針和數組 132
4.10.1 指針和指針運算 132
4.10.2 數組和指針 133
4.10.3 小結 133
4.11 C/C++中的動態存儲 133
4.11.1 C/C++存儲空間 134
4.11.2 C語言中的動態存儲 134
4.11.3 C++中的動態存儲 136
4.11.4 和動態存儲相關的問題 136
4.11.5 存儲空間碎片化 137
4.11.6 RTOS中的存儲管理 138
4.11.7 實時存儲解決方案 139
4.11.8 小結 140
第5章 C++ 141
5.1 從管理的角度看嵌入式係統中的C++ 141
5.1.1 嵌入式係統開發團隊 141
5.1.2 麵嚮對象編程 141
5.1.3 團隊管理和麵嚮對象方法 142
5.1.4 作為麵嚮對象語言的C++ 142
5.1.5 開銷 142
5.1.6 前方的路 142
5.2 為什麼要從C轉嚮C++ 143
5.2.1 隱藏具體實現的細節 143
5.2.2 重用類的代碼 144
5.2.3 重用通用的類 144
5.2.4 擴展操作符的功能 144
5.2.5 從基類中衍生新的類 144
5.2.6 通過函數原型避免錯誤 145
5.2.7 增加函數參數而不改變調用語句 145
5.2.8 使用更加簡單和安全的I/O 145
5.2.9 通過內聯函數提升性能 146
5.2.10 重載函數名 146
5.2.11 對嵌入式係統的支持 146
5.2.12 轉變的代價 147
5.2.13 嚮C++中引入C代碼 147
5.2.14 難點:設計對象 147
5.2.15 如果沒有齣現問題,就不要去改變 148
5.3 掃清通嚮C++的障礙 148
5.3.1 過渡策略 148
5.3.2 循序漸進 148
5.3.3 實現可重用性 149
5.3.4 編寫Clean C代碼 150
5.3.5 C+:接近C++ 153
5.3.6 小結:前方的路 156
5.4 C++模闆的優勢與劣勢 156
5.4.1 什麼是模闆 156
5.4.2 模闆的實例化 158
5.4.3 模闆帶來的問題 158
5.4.4 多個模闆參數 159
5.4.5 模闆的其他應用 159
5.4.6 小結 160
5.4.7 後記 160
5.5 C++的異常處理 160
5.5.1 C語言中的錯誤處理 160
5.5.2 異常和中斷無關 161
5.5.3 C++的異常處理 161
5.5.4 特殊情況 163
5.5.5 EHS和嵌入式係統 165
5.5.6 小結 166
5.6 C++的代碼大小和性能 166
5.6.1 C++比C語言更高效嗎 167
5.6.2 C++對內存需求的影響 167
5.6.3 正確使用C++ 170
5.6.4 小結 171
5.7 C++中的隻寫端口 171
5.7.1 封裝專業知識 171
5.7.2 問題的定義 172
5.7.3 C語言的解決方案 173
5.7.4 使用C++進行嘗試 173
5.7.5 重載操作符 174
5.7.6 對wop類進行增強 175
5.7.7 可重入性 176
5.7.8 使用RTOS 178
5.7.9 封裝專業知識 179
5.7.10 其他的可能性 179
5.7.11 前方的路 179
5.8 在C++中使用非易失性RAM 180
5.8.1 程序編製對類定義的需求 180
5.8.2 NVRAM的實現 180
5.8.3 C++的nvram類 181
5.8.4 繼續改進nvram類 183
5.8.5 小結 183
擴展閱讀 183
第6章 實時性 184
6.1 實時係統 184
6.1.1 實時係統的實現 184
6.1.2 處理循環 185
6.1.3 中斷 185
6.1.4 多任務 185
6.1.5 使用實時操作係統 186
6.2 嵌入式係統的可視化程序模型 186
6.2.1 哪種程序模型最適閤用來構建實時係統 187
6.2.2 為何要為實時係統建立模型 187
6.2.3 各種模型之間有什麼不同,各有什麼優缺點 187
6.2.4 什麼是單綫程程序模型 187
6.2.5 單綫程程序模型有什麼優缺點 187
6.2.6 輪詢循環是不是一個單綫程程序 187
6.2.7 狀態機是不是一個單綫程程序 188
6.2.8 什麼是多綫程係統 188
6.2.9 多綫程程序模型有哪些優缺點 188
6.2.10 多綫程真的同時運行嗎 189
6.2.11 如何獲取實時係統的多綫程環境 189
6.3 嵌入式係統的事件處理 189
6.3.1 事件 189
6.3.2 信號和事件是不是同一迴事 190
6.3.3 什麼樣的事件是時間敏感的 190
6.3.4 當偵測到一個異常,微處理器如何處理 190
6.3.5 所有的異常都一樣嗎 190
6.3.6 同步異常 190
6.3.7 異步異常 190
6.3.8 中斷是如何産生的和服務的 191
6.3.9 CPU保存的狀態是什麼 191
6.3.10 機器狀態就是綫程狀態嗎 191
6.3.11 異常處理程序應該用匯編語言還是C語言來寫 191
6.3.12 怎樣避免在異常處理程序上花費時間 192
6.4 中斷程序 192
6.4.1 設置中斷 192
6.4.2 中斷服務例程 193
6.4.3 中斷嚮量 193
6.4.4 初始化 194
6.4.5 小結 194
第7章 實時操作係統 195
7.1 RTOS的調試技術 195
7.1.1 概要 195
7.1.2 多進程的概念 195
7.1.3 執行環境 196
7.1.4 與目標機連接 197
7.1.5 調試模式 198
7.1.6 RTOS級的調試功能 199
7.1.7 代碼共享 200
7.1.8 任務級的斷點 201
7.1.9 任務相關性 202
7.1.10 內存管理單元 202
7.1.11 多處理器 203
7.1.12 小結 203
7.2 自己開發的RTOS調試解決方案 204
7.2.1 任務級調試的實現 204
7.2.2 任務級調試工具 205
7.2.3 小結 207
7.3 調試:堆棧溢齣 208
7.4 何時考慮使用商業化RTOS 208
7.4.1 商用化RTOS和自己開發RTOS 209
7.4.2 商業化RTOS的優點 209
7.4.3 商業化RTOS的缺點 210
7.4.4 為什麼要自己開發RTOS 211
7.4.5 不自己開發RTOS的理由 211
7.4.6 小結 212
7.5 移植RTOS 213
7.5.1 從一個RTOS轉移到另一個RTOS 213
7.5.2 代碼移植 214
7.5.3 封裝 214
7.5.4 驅動和其他 217
7.5.5 調試問題 217
7.5.6 小結 217
7.6 RTOS驅動程序開發簡介 219
7.6.1 設備驅動的兩個方麵 219
7.6.2 數據損壞 220
7.6.3 綫程控製 220
7.6.4 程序邏輯 220
7.6.5 小結 221
7.7 調度算法和優先級反轉 221
7.7.1 概要 222
7.7.2 實時性需求 222
7.7.3 調度算法 222
7.7.4 操作係統和應用的含義 223
7.7.5 小結 224
7.8 時間與優先級調度比較 224
7.8.1 RTOS調度 224
7.8.2 理想世界 225
7.8.3 現實世界中的優先級調度 225
7.8.4 不釋放控製權的時域限製 226
7.8.5 釋放控製權的時域限製 226
7.8.6 小結 227
7.9 嵌入式文件係統 227
7.9.1 嵌入式文件係統的需求 228
7.9.2 MS-DOS文件係統介紹 228
7.9.3 長文件名 229
7.9.4 格式化 229
7.9.5 分區 229
7.9.6 設備 229
7.10 OSEK:一種RTOS標準 230
7.10.1 OSEK簡介 230
7.10.2 OSEK需求 231
7.10.3 OSEK的任務 231
7.10.4 報警 232
7.10.5 錯誤處理 232
第8章 網絡 233
8.1 Wi-Fi簡介 233
8.1.1 無綫數據通信 234
8.1.2 IEEE 802.11 234
8.1.3 802.11基礎知識 235
8.1.4 Wi-Fi和藍牙 236
8.1.5 發展前景 236
8.2 哪些人需要Web服務器 237
8.2.1 簡介 237
8.2.2 三個重要的功能 237
8.2.3 Web服務器的運行 239
8.2.4 Web 服務器功能總結 241
8.2.5 其他需要考慮的地方 241
8.2.6 小結 242
8.3 SNMP介紹 242
8.3.1 為什麼使用SNMP 242
8.3.2 網絡管理者的職責 243
8.3.3 架構模型 243
8.3.4 公眾的誤解 244
8.3.5 應用級的管理者和代理 244
8.3.6 如何編寫MIB 244
8.3.7 術語 244
8.3.8 結論 245
8.4 下一代互聯網協議:IPv6 246
8.4.1 互聯網協議的局限 246
8.4.2 IP 第6版介紹 247
8.4.3 雙棧簡化過渡 247
8.4.4 IPv6如何工作 247
8.4.5 RFC支持 251
8.5 DHCP基礎 251
8.5.1 DHCP服務器 252
8.5.2 工作原理 252
8.5.3 RFC支持 256
8.6 NAT詳解 256
8.6.1 NAT詳解 256
8.6.2 RFC支持 258
8.6.3 支持的協議 258
8.6.4 應用級網關 258
8.6.5 私有網絡地址分配 258
8.7 PPP:點對點協議 259
8.7.1 介紹 259
8.7.2 PPP如何工作 259
8.7.3 PPP 詳解 261
8.7.4 RFC支持 263
8.8 SSL 介紹 264
8.8.1 介紹 264
8.8.2 SSL如何工作 265
8.8.3 一些SSL細節 266
8.9 DHCP調試小技巧 267
8.10 IP多播 269
8.10.1 多播初始化 270
8.10.2 IGMP 協議 270
8.10.3 多播的實現 271
8.10.4 小結 272
第9章 開源軟件、嵌入式Linux和Android 273
9.1 嵌入式開發的GNU工具鏈:構建還是購買 273
9.1.1 介紹 273
9.1.2 工具鏈的組件 274
9.1.3 構建工具鏈 276
9.1.4 驗證工具鏈 279
9.1.5 測試的各種選擇 281
9.1.6 小結 283
9.2 嵌入式Linux簡介 283
9.2.1 簡介 283
9.2.2 使用開源的挑戰 283
9.2.3 OpenEmbedded 285
9.2.4 理解元數據 286
9.2.5 項目流程 287
9.2.6 小結 288
9.3 Android架構和開發 288
9.3.1 Android 技術簡介 288
9.3.2 Android 架構 289
9.3.3 應用開發 289
9.3.4 Android UI 291
9.3.5 在移動設備以外的市場拓展Android 291
9.3.6 總結 292
9.4 垂直市場上的Android、Meego和嵌入式Linux 292
9.4.1 介紹 292
9.4.2 垂直市場有什麼不同 292
9.4.3 Android的吸引力 293
9.4.4 MeeGo 的前途 294
9.4.5 多纔多藝的嵌入式Linux 294
9.4.6 小結 295
第10章 多核嵌入式係統 296
10.1 多核簡介 296
10.1.1 係統架構 296
10.1.2 功耗 297
10.1.3 挑戰 297
10.2 多核:多個操作係統 297
10.2.1 AMP的SMP硬件 298
10.2.2 AMP硬件係統 298
10.2.3 AMP軟件架構 299
10.2.4 IPC的重要性 300
10.2.5 AMP開發工具 300
10.2.6 睏難 301
10.2.7 AMP應用案例 302
10.2.8 使用Hypervisor 302
10.2.9 小結 303
10.3 選擇多核的多操作係統 303
10.3.1 介紹 303
10.3.2 操作係統的類型 304
10.3.3 選擇操作係統 304
10.3.4 多核係統 306
10.3.5 小結 306
10.4 CPU與CPU的通信:MACPI 306
10.4.1 介紹 307
10.4.2 多核 307
10.4.3 MACPI 307
10.4.4 小結 310
後記 311
發表於2024-11-07
嵌入式軟件開發精解 2024 pdf epub mobi 電子書 下載
圖書標籤: 2014 簡體中文 中國 System Embedded
嵌入式軟件開發精解 2024 pdf epub mobi 電子書 下載