Rust汽車電子開發實踐
司江平 周炯皓 張超
商品描述
"《Rust汽車電子開發實踐》專註於介紹Rust編程語言在汽車電子領域的應用。隨著汽車行業向智能化、電動化和網聯化的快速演進,傳統的C/C++編程語言在內存安全、數據競爭等問題上逐漸顯露出局限性。Rust語言以其獨特的內存安全保證、現代的並發處理能力和跨平臺的兼容性,為汽車電子軟件開發提供了新的解決方案。 《Rust汽車電子開發實踐》從Rust語言的基本語法和特性講起,逐步深入到其在嵌入式系統中的應用,尤其關註汽車電子領域。書中詳細介紹了Rust的所有權系統、類型系統、並發編程以及錯誤處理等核心概念,同時探討了Rust在汽車電子領域的具體應用。 《Rust汽車電子開發實踐》不僅理論知識豐富,還提供了大量的代碼示例和項目實踐。無論是初學者還是有經驗的開發者,都能通過本書深入瞭解並掌握Rust在汽車電子領域的應用。"
作者簡介
司江平,曾擔任多家公司CPO、CTO等研發管理職務,服務國內外多個世界500強企業;擁有豐富的嵌入式、大數據和人工智能等產品的實戰經驗,並擁有多項發明專利。
目錄大綱
目 錄
開篇 1
第1章 Rust語言簡介 2
1.1 Rust語言概述 3
1.2 Rust語言特性 4
1.3 Rust語言發展歷程和現狀 6
1.4 Rust語言與C/C++的比較 8
1.5 Rust語言學習資源 10
1.6 總結與討論 10
1.7 練習 11
第2章 初識Rust 12
2.1 IDE環境介紹 12
2.2 安裝Rust 14
2.2.1 Windows安裝 14
2.2.2 Linux或macOS安裝 14
2.2.3 故障排除 15
2.2.4 更新與卸載 15
2.2.5 本地文檔 16
2.3 第一個Rust程序:Hello world 16
2.4 Cargo介紹 17
2.4.1 創建項目 17
2.4.2 編譯並運行Cargo項目 18
2.4.3 發布 19
2.4.4 依賴 19
2.5 調試Rust 20
2.6 總結與討論 21
2.7 練習 22
第3章 編程基礎概念 23
3.1 關鍵字 23
3.2 變量 23
3.3 常量 25
3.4 數據類型 25
3.5 函數 28
3.6 註釋 29
3.7 控制流 30
3.8 總結與討論 34
3.9 練習 34
第4章 所有權 35
4.1 棧與堆 35
4.2 所有權規則 36
4.3 變量作用域 37
4.4 內存與分配 38
4.5 變量與數據交互的方式:移動(move) 39
4.6 變量與數據交互的方式:克隆(clone) 40
4.7 所有權與函數 41
4.8 引用與借用 42
4.9 可變引用 42
4.10 懸垂引用 45
4.11 總結與討論 47
4.12 練習 48
第5章 結構體 49
5.1 結構體實例 49
5.2 使用結構體 50
5.3 結構體方法 51
5.4 關聯函數 53
5.5 總結與討論 53
5.6 練習 54
第6章 枚舉 55
6.1 枚舉值 55
6.2 Option枚舉 56
6.3 match控制流 58
6.4 綁定值的模式 60
6.5 匹配Option<T> 61
6.6 匹配的一些知識點 61
6.7 if let控制流 62
6.8 總結與討論 63
6.9 練習 64
第7章 模塊系統 65
7.1 包和crate 65
7.2 模塊 66
7.3 引用模塊項目的路徑 68
7.4 使用pub關鍵字 69
7.5 使用use關鍵字 71
7.6 使用as關鍵字 71
7.7 使用第三方的包 72
7.8 總結與討論 72
7.9 練習 74
第8章 練手:寫個猜數字游戲 75
8.1 處理輸入和輸出 75
8.2 生成一個秘密數字 77
8.3 比較 79
8.4 循環猜數 83
8.5 總結與討論 84
8.6 練習 84
第9章 嵌入式系統簡介 85
9.1 嵌入式系統概述 85
9.2 汽車中的嵌入式設備 86
9.3 嵌入式系統的組成 88
9.4 汽車中的嵌入式技術 90
9.5 嵌入式系統開發流程 91
9.6 汽車嵌入式軟件開發 93
9.7 嵌入式系統常見的問題 97
9.8 Rust語言在嵌入式系統中的優勢 98
9.9 總結與討論 98
9.10 練習 99
第10章 Rust在Linux中的應用 100
10.1 在Windows系統下編譯Linux程序 100
10.2 命令行程序 103
10.3 my_ls程序 103
10.4 錯誤處理 105
10.5 優化my_ls 108
10.6 總結與討論 109
10.7 練習 109
第11章 Rust的文件操作 110
11.1 Linux的文件系統 110
11.2 Rust創建文件 111
11.3 讀寫文件 113
11.4 設置文件指針指向的位置 118
11.5 總結與討論 120
11.6 練習 120
第12章 多線程處理 121
12.1 進程與線程 121
12.2 閉包 122
12.3 迭代器 131
12.4 線程 134
12.5 多線程共享狀態 143
12.6 總結與討論 148
12.7 練習 149
第13章 汽車電子生態環境介紹 150
13.1 汽車電子主要供應商 151
13.1.1 汽車電子Tier 1供應商 151
13.1.2 汽車電子國內外主要芯片供應商 152
13.2 汽車電子應用場景 154
13.3 MCU簡介 159
13.3.1 車規級MCU 160
13.3.2 ECU、MCU、VCU、HCU、PCU…… 161
13.4 車規級MCU的分類及其主要產品 164
13.4.1 車規級MCU的分類 164
13.4.2 車規級MCU的主要廠商及其產品 165
13.5 總結與討論 172
13.6 練習 173
第14章 Rust語言在MCU中的應用 174
14.1 Rust語言MCU開發環境搭建 174
14.2 Rust嵌入式開發環境的初步使用 184
14.3 初級應用:點亮LED 192
14.4 進階應用:實現LED閃爍 202
14.5 進階應用:按鍵控制 207
14.6 進階應用:按鍵中斷 211
14.7 CAN通信 217
14.8 總結與討論 226
14.9 練習 227
第15章 Rust在TCxx硬件平臺上的開發 228
15.1 工具鏈說明 229
15.2 硬件平臺 232
15.3 TC375 Lite Kit Example 234
15.4 總結與討論 258
15.5 練習 259
第16章 Rust進階應用之DDS 260
16.1 DDS中間件簡介 260
16.2 DDS的發布/訂閱模式 262
16.3 DDS在汽車電子中的應用 263
16.4 DDS發布/訂閱模式的Rust實現 264
16.5 總結與討論 275
16.6 練習 276
第17章 汽車電子開發展望 277
17.1 汽車電子開發現狀 277
17.2 汽車電子中Rust的發展機會 279
17.3 反思與計劃 281
附錄 關鍵字 283