C++嵌入式開發實例精解

C++嵌入式開發實例精解

作者: Igor Viarheichyk 譯 劉顒
出版社: 清華大學
出版在: 2022-07-01
ISBN-13: 9787302607809
ISBN-10: 730260780X
裝訂格式: 平裝





內容描述


本書詳細闡述了與C++嵌入式開發相關的基本解決方案,主要包括嵌入式系統的基礎知識,配置開發環境,與不同的體系結構協同工作,處理中斷,調試、日誌和分析,內存管理,多線程和同步機制,通信和序列化,外圍設備,降低功耗,時間點和時間間隔,錯誤處理和容錯機制,實時系統、安全性系統的指導原則,微控制器編程等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。


目錄大綱


目    錄
第1章  嵌入式系統的基礎知識 1
1.1  考查嵌入式系統 1
1.1.1  與台式機或Web應用程序的不同之處 1
1.1.2  嵌入式系統的類型 2
1.1.3  微控制器 2
1.1.4  片上系統 3
1.1.5  專用集成電路 4
1.1.6  現場可編程門陣列 4
1.2  與有限的資源協同工作 4
1.3  考查性能影響 4
1.4  與不同的架構協同工作 5
1.4.1  字節順序 5
1.4.2  對齊問題 7
1.4.3  定寬整數類型 8
1.5  處理硬件錯誤 8
1.5.1  硬件的早期版本 8
1.5.2  硬件的不可靠性 9
1.5.3  環境條件的影響 9
1.6  C++嵌入式開發 9
1.6.1  不必為無用的事務付諸實踐 10
1.6.2  基於面向對象編程的代碼復雜度計算 12
1.6.3  資源獲取時即初始化 12
1.6.4  異常機制 14
1.6.5  強大的標準庫 16
1.6.6  線程和內存模型 16
1.7  遠程部署軟件 17
1.8  遠程運行軟件 18
1.9  日誌和診斷 18
1.10  本章小結 19
第2章  配置開發環境 21
2.1  在Docker容器中配置構建系統 22
2.1.1  實現方式 22
2.1.2  工作方式 23
2.1.3  更多內容 24
2.2  與模擬器協同工作 24
2.2.1  實現方式 25
2.2.2  工作方式 25
2.2.3  更多內容 27
2.3  交叉編譯 27
2.3.1  準備工作 27
2.3.2  實現方式 27
2.3.3  工作方式 28
2.3.4  更多內容 31
2.4  連接至嵌入式系統 31
2.4.1  準備工作 31
2.4.2  實現方式 31
2.4.3  工作方式 32
2.4.4  更多內容 33
2.5  調試嵌入式應用程序 34
2.5.1  準備工作 34
2.5.2  實現方式 34
2.5.3  工作方式 35
2.5.4  更多內容 36
2.6  針對遠程調試使用gdbserver 37
2.6.1  準備工作 37
2.6.2  實現方式 37
2.6.3  工作方式 38
2.6.4  更多內容 39
2.7  使用CMake作為構建系統 40
2.7.1  準備工作 40
2.7.2  實現方式 40
2.7.3  工作方式 41
2.7.4  更多內容 44
第3章  與不同的體系結構協同工作 45
3.1  定寬整數類型 45
3.1.1  實現方式 46
3.1.2  工作方式 47
3.1.3  更多內容 48
3.2  處理size_t類型 48
3.2.1  實現方式 48
3.2.2  工作方式 49
3.2.3  更多內容 50
3.3  檢測平臺的字節順序 50
3.3.1  實現方式 51
3.3.2  工作方式 52
3.3.3  更多內容 53
3.4  轉換字節順序 53
3.4.1  實現方式 54
3.4.2  工作方式 57
3.5  處理數據對齊問題 58
3.5.1  實現方式 59
3.5.2  工作方式 60
3.5.3  更多內容 61
3.6  處理打包結構 61
3.6.1  實現方式 62
3.6.2  工作方式 62
3.6.3  更多內容 63
3.7  緩存行對齊數據 63
3.7.1  實現方式 63
3.7.2  工作方式 65
3.7.3  更多內容 66
第4章  處理中斷 67
4.1  數據輪詢 67
4.2  中斷服務程序 68
4.3  對ISR的一般考慮 68
4.4  8051微控制器中斷 69
4.5  實現中斷服務程序 70
4.5.1  實現方式 70
4.5.2  工作方式 72
4.6  通過8位自動重載模式生成一個5 kHz的方波信號 73
4.6.1  實現方式 74
4.6.2  工作方式 75
4.7  使用Timer 1作為事件計數器計數一個1 Hz脈沖 76
4.7.1  實現方式 76
4.7.2  工作方式 78
4.7.3  更多內容 79
4.8  串行接收和傳輸數據 79
4.8.1  實現方式 80
4.8.2  工作方式 80
4.8.3  更多內容 81
第5章  調試、日誌和分析 83
5.1  技術需求 83
5.2  在GDB中運行源程序 84
5.2.1  實現方式 84
5.2.2  工作方式 86
5.2.3  更多內容 90
5.3  處理斷點 91
5.3.1  實現方式 91
5.3.2  工作方式 92
5.3.3  更多內容 96
5.4  處理核心轉儲 96
5.4.1  實現方式 96
5.4.2  工作方式 97
5.4.3  更多內容 99
5.5  使用gdbserver進行調試 99
5.5.1  準備工作 100
5.5.2  實現方式 100
5.5.3  工作方式 100
5.6  添加調試日誌機制 101
5.6.1  實現方式 101
5.6.2  工作方式 102
5.6.3  更多內容 104
5.7  與調試和發布版本協同工作 104
5.7.1  實現方式 105
5.7.2  工作方式 106
5.7.3  更多內容 108
第6章  內存管理 109
6.1  使用動態內存分配 109
6.1.1  實現方式 110
6.1.2  工作方式 112
6.2  對象池 112
6.2.1  實現方式 113
6.2.2  工作方式 115
6.2.3  更多內容 118
6.3  環狀緩沖區 118
6.3.1  實現方式 119
6.3.2  工作方式 121
6.4  使用共享內存 124
6.4.1  實現方式 125
6.4.2  工作方式 128
6.4.3  更多內容 131
6.5  使用專用內存 131
6.5.1  實現方式 131
6.5.2  工作方式 133
6.5.3  更多內容 135
第7章  多線程和同步機制 137
7.1  C++語言中的線程支持 137
7.1.1  實現方式 138
7.1.2  工作方式 139
7.2  數據同步機制 140
7.2.1  實現方式 140
7.2.2  工作方式 141
7.2.3  更多內容 143
7.3  使用條件變量 143
7.3.1  實現方式 143
7.3.2  工作方式 145
7.3.3  更多內容 147
7.4  使用原子變量 147
7.4.1  實現方式 148
7.4.2  工作方式 150
7.4.3  更多內容 151
7.5  使用C++內存模型 152
7.5.1  實現方式 152
7.5.2  工作方式 154
7.5.3  更多內容 155
7.6  無鎖同步機制 155
7.6.1  實現方式 155
7.6.2  工作方式 157
7.6.3  更多內容 158
7.7  在共享內存中使用原子變量 159
7.7.1  實現方式 159
7.7.2  工作方式 162
7.8  異步函數和特性 164
7.8.1  實現方式 165
7.8.2  工作方式 166
7.8.3  更多內容 168
第8章  通信和序列化 169
8.1  在應用程序中使用進程間的通信 169
8.1.1  實現方式 170
8.1.2  工作方式 172
8.1.3  更多內容 175
8.2  進程間的通信機制 175
8.2.1  準備工作 175
8.2.2  實現方式 176
8.2.3  工作方式 177
8.2.4  更多內容 178
8.3  消息隊列和發布者-訂閱者模式 178
8.3.1  實現方式 179
8.3.2  工作方式 182
8.3.3  更多內容 184
8.4  針對回調使用C++ lambda函數 185
8.4.1  實現方式 185
8.4.2  工作方式 186
8.4.3  更多內容 187
8.5  數據序列化 187
8.5.1  實現過程 188
8.5.2  工作方式 190
8.5.3  更多內容 191
8.6  使用FlatBuffers庫 192
8.6.1  實現方式 192
8.6.2  工作方式 194
8.6.3  更多內容 195
第9章  外圍設備 197
9.1  控制通過GPIO連接的設備 197
9.1.1  實現方式 197
9.1.2  工作方式 199
9.2  脈沖寬度調制 201
9.2.1  實現方式 201
9.2.2  工作方式 203
9.2.3  更多內容 204
9.3  在Linux中使用ioctl訪問實時時鐘 204
9.3.1  實現方式 205
9.3.2  工作方式 207
9.3.3  更多內容 208
9.4  使用libgpiod控制GPIO引腳 208
9.4.1  實現方式 209
9.4.2  工作方式 210
9.4.3  更多內容 211
9.5  控制I2C外圍設備 211
9.5.1  實現方式 212
9.5.2  工作方式 216
9.5.3  更多內容 219
第10章  降低功耗 221
10.1  技術需求 221
10.2  考查Linux中的節能模式 221
10.2.1  實現方式 222
10.2.2  工作方式 223
10.2.3  更多內容 224
10.3  利用RTC進行喚醒 224
10.3.1  實現方式 224
10.3.2  工作方式 225
10.3.3  更多內容 226
10.4  控制USB設備的自動掛起 226
10.4.1  實現方式 226
10.4.2  工作方式 227
10.4.3  更多內容 229
10.5  配置CPU頻率 230
10.5.1  實現方式 230
10.5.2  工作方式 231
10.5.3  更多內容 235
10.6  等待事件 235
10.6.1  實現方式 235
10.6.2  工作方式 238
10.6.3  更多內容 241
10.7  利用PowerTOP分析功耗 241
10.7.1  實現方式 241
10.7.2  工作方式 242
10.7.3  更多內容 244
第11章  時間點和時間間隔 245
11.1  C++ Chrono庫 245
11.1.1  實現方式 245
11.1.2  工作方式 246
11.1.3  更多內容 247
11.2  測量時間間隔 247
11.2.1  實現方式 248
11.2.2  工作方式 249
11.2.3  更多內容 250
11.3  處理延遲問題 250
11.3.1  實現方式 250
11.3.2  工作方式 252
11.3.3  更多內容 253
11.4  使用單調遞增時鐘 254
11.4.1  實現方式 254
11.4.2  工作方式 256
11.4.3  更多內容 257
11.5  使用POSIX時間戳 258
11.5.1  實現方式 258
11.5.2  工作方式 259
11.5.3  更多內容 260
第12章  錯誤處理和容錯機制 261
12.1  處理錯誤代碼 261
12.1.1  實現方式 261
12.1.2  工作方式 264
12.1.3  更多內容 265
12.2  針對錯誤處理使用異常 265
12.2.1  實現方式 266
12.2.2  工作方式 267
12.2.3  更多內容 269
12.3  捕捉異常時使用常量引用 269
12.3.1  實現方式 269
12.3.2  工作方式 271
12.3.3  更多內容 272
12.4  處理靜態對象 273
12.4.1  實現方式 273
12.4.2  工作方式 275
12.5  與定時器協同工作 276
12.5.1  實現方式 277
12.5.2  工作方式 278
12.6  高可用系統的心跳信號 280
12.6.1  實現方式 280
12.6.2  工作方式 283
12.6.3  更多內容 287
12.7  實現軟件反抖動邏輯 287
12.7.1  實現方式 287
12.7.2  工作方式 289
第13章  實時系統 291
13.1  使用Linux中的實時調度器 291
13.1.1  實現方式 292
13.1.2  工作方式 293
13.2  使用靜態分配的內存 295
13.2.1  實現方式 295
13.2.2  工作方式 297
13.2.3  更多內容 298
13.3  避免錯誤處理異常 298
13.3.1  實現方式 299
13.3.2  工作方式 301
13.3.3  更多內容 302
13.4  實時系統 302
13.4.1  實現方式 302
13.4.2  工作方式 303
13.4.3  更多內容 304
第14章  安全性系統的指導原則 305
14.1  使用全部函數的返回值 305
14.1.1  實現方式 306
14.1.2  工作方式 308
14.1.3  更多內容 310
14.2  使用靜態代碼分析器 310
14.2.1  實現方式 311
14.2.2  工作方式 311
14.2.3  更多內容 312
14.3  使用前置條件和後置條件 312
14.3.1  實現方式 313
14.3.2  工作方式 314
14.3.3  更多內容 316
14.4  代碼正確性的正規驗證方案 316
14.4.1  實現方式 316
14.4.2  工作方式 317
14.4.3  更多內容 319
第15章  微控制器編程 321
15.1  設置開發環境 321
15.1.1  實現方式 321
15.1.2  工作方式 322
15.1.3  更多內容 323
15.2  編譯並上傳程序 323
15.2.1  實現方式 323
15.2.2  工作方式 323
15.2.3  更多內容 325
15.3  調試微控制器代碼 326
15.3.1  實現方式 326
15.3.2  工作方式 327




相關書籍

Understanding Linux Network Internals (Paperback)

作者 Christian Benvenuti

2022-07-01

Radio Propagation and Adaptive Antennas for Wireless Communication Links: Terrestrial, Atmospheric and Ionospheric

作者 Nathan Blaunstein Christos Christodoulou

2022-07-01

Linux Kernel Programming Part 2 - Char Device Drivers and Kernel Synchronization: Create user-kernel interfaces, work with peripheral I/O, and handle

作者 Billimoria Kaiwan N.

2022-07-01