嵌入式軟件的時間分析——汽車行業領域的嵌入式軟件理論、分析及實踐
內容描述
汽車中軟件部分的比重正穩步提升。 軟件中的運行時行為-Timing(時間性能測量)這一部分與此同時呈爆發性增長。造成此狀況的原因有很多:軟件中越來越多的部分與安全性相關,系統本身變得越來越復雜,而且大多數情況下的多核應用比預期的要困難。現代汽車領域中的控制器單元仍舊不能忽略時間性能測量這一主題。時間性能測量問題分析及解決的成本毫無疑問是非常高的,尤其是在項目後期。此外,安全規範如 ISO 26262 規定了涉及嵌入式軟件時間性能的要求。這本書介紹了基礎內容,以便於用正確的時間性能測量方法去開發軟件或者解決嚴重的時間性能測量問題。它同時著眼於各種各種分析方法,涵蓋了開發過程中的所有階段,並通過大量實際範例以及針對開發者工作的具體建議來為其理論奠定基礎。 即使書中大部分實際範例出自汽車行業領域,但其全部內容幾乎都可以直接轉之應用於其他領域。
目錄大綱
目 錄
第1章 基礎知識 1
1.1 實時系統 1
1.2 階段性的軟件開發模型——V-Model 1
1.3 編譯過程:從模型到可執行文件 3
1.3.1 基於模型的軟件開發和代碼生成 3
1.3.2 C 預編譯器 3
1.3.3 C 編譯器 5
1.3.4 編譯器執行的代碼優化 6
1.3.5 匯編器 6
1.3.6 鏈接器 7
1.3.7 定位器 7
1.3.8 鏈接腳本 8
1.3.9 調試器 10
1.4 總結 12
第2章 處理器基礎知識 13
2.1 處理器的構造 13
2.1.1 CISC 和 RISC 14
2.1.2 寄存器 14
2.2 代碼執行 15
2.3 存儲器尋址及其模式 17
2.3.1 對數據訪問最重要的尋址模式 18
2.3.2 跳轉和調用的尋址模式 20
2.3.3 選擇尋址模式 20
2.4 等待狀態,突發訪問 22
2.5 緩存 23
2.5.1 緩存結構和緩存行 24
2.5.2 組相聯緩存及緩存逐出 25
2.6 流水線 27
2.7 中斷 28
2.8 陷阱/異常 29
2.9 數據一致性 29
2.10 對比桌面處理器, 嵌入式處理器的特點 31
2.11 總結 32
第3章 操作系統 33
3.1 無操作系統: 無限循環加中斷 33
3.1.1 周期中斷的實現示例 33
3.1.2 輪詢——無中斷地實現 34
3.1.3 可擴展性 36
3.2 OSEK/VDX 36
3.2.1 任務 36
3.2.2 中斷 39
3.2.3 ErrorHook 39
3.2.4 基本調度策略 39
3.3 多任務: 協作與搶占 41
3.3.1 兩種追蹤的圖示說明(示例 1) 41
3.3.2 堆棧消耗(示例 2) 43
3.3.3 確保數據一致性 45
3.3.4 協作式多任務處理的限制 45
3.3.5 為減少OS_Schedule()調用而可實施的優化 47
3.3.6 總結 47
3.4 POSIX 47
3.4.1 進程 49
3.4.2 線程 49
3.4.3 POSIX 線程狀態圖 51
3.4.4 調度策略 52
3.5 總結 52
第4章 軟件時間理論 53
4.1 時間參數 53
4.1.1 RTOS 調度(OSEK、AUTOSAR CP 等)時間參數 53
4.1.2 與 POSIX相關的時間參數 58
4.2 統計參數 58
4.2.1 最小值和最大值 59
4.2.2 平均值 59
4.2.3 直方圖 60
4.2.4 非定期事件的發生模式 60
4.3 CPU負載 61
4.3.1 定義 62
4.3.2 選擇觀測範圍 64
4.3.3 擴增的 CPU 負載 65
4.3.4 使用後台任務時的 CPU 負載 66
4.4 總線負載 67
4.5 邏輯執行時間 67
4.6 總結 68
第5章 軟件時間分析方法 69
5.1 概覽及在不同層面上的分類 69
5.1.1 通信層級 69
5.1.2 調度層級 70
5.1.3 代碼層級 71
5.2 術語定義 72
5.2.1 追蹤 72
5.2.2 分析、時間測量和(再次)追蹤 72
5.3 靜態代碼分析 73
5.3.1 基礎功能和工作流 73
5.3.2 用例 75
5.3.3 靜態代碼分析的限制 76
5.3.4 靜態代碼分析專家訪談 78
5.4 代碼模擬 80
5.4.1 功能與工作流 80
5.4.2 用例 81
5.4.3 靜態代碼模擬的限制 82
5.4.4 與代碼模擬領域專家的訪談 83
5.5 運行時間測量 86
5.5.1 基本功能和工作流 86
5.5.2 用例 95
5.5.3 運行時間測量的限制 96
5.6 基於硬件的追蹤 97
5.6.1 基本功能和工作流 97
5.6.2 用例 99
5.6.3 基於硬件的追蹤的限制 101
5.6.4 基於硬件的追蹤專家訪談 102
5.7 基於軟件方法的追蹤 108
5.7.1 基本功能和工作流 108
5.7.2 用例 115
5.7.3 基於測量的追蹤的限制 115
5.7.4 基於測量的追蹤領域專家訪談 116
5.8 調度模擬 121
5.8.1 基本功能和工作流 121
5.8.2 用例 124
5.8.3 調度模擬的限制 124
5.8.4 調度模擬專家訪談 125
5.9 靜態調度分析 127
5.9.1 基本功能和工作流 128
5.9.2 用例 129
5.9.3 靜態調度分析的限制 131
5.9.4 靜態調度分析專家訪談 131
5.10 使用進化算法進行優化 135
5.11 時間分析方法在 V-Model中的應用 137
第6章 軟件時間問題案例 139
6.1 中斷都是哪來的? 139
6.2 OSEK ECC:並非最優選擇 140
6.3 重置17 min後發生偶發崩潰 143
6.4 遺漏及重復的傳感器數據 144
6.5 拉著手剎去比賽 149
6.6 實際測量得到的 WCET 比靜態代碼分析得到的更大 150
6.7 有時候網絡管理報文來得太早了 151
6.8 系列項目中無間斷的時間分析 152
6.9 時間分析使得車廠節省了1200萬歐元 152
6.10 總結 153
第7章 多核及多ECU環境下的軟件時間 154
7.1 多核基礎知識 154
7.1.1 Amdahl vs.Gustafson——誰是對的? 155
7.1.2 CPU 核心——同構(Homogeneous)、異構(Heterogeneous)
還是鎖步(Lock-step)? 155
7.1.3 鎖步多核 156
7.1.4 英飛凌 AURIX——同類、異類和鎖步 157
7.2 並發執行的多種類型 158
7.2.1 應用程序的並行執行 158
7.2.2 函數的並行執行 159
7.2.3 指令的並行執行 164
7.3 數據一致性,Spinlocks 165
7.3.1 確保數據一致性的理想解決方案 168
7.3.2 確保數據一致性的成本 169
7.4 存儲地址克隆 170
7.5 總結 172
第8章 軟件運行時間優化 174
8.1 調度層級的運行時間優化 174
8.1.1 防止跨核心通信 174
8.1.2 避免使用 ECC 任務 174
8.1.3 合理使用異構多核處理器 175
8.1.4 避免需要確保數據一致性的機制 175
8.1.5 通過優化偏移實現周期性任務的負載均衡 175
8.1.6 拆分任務 177
8.1.7 將功能遷移到執行頻率較低的任務 177
8.2 針對存儲器使用的運行時間優化 178
8.2.1 快速存儲器的最優利用 178
8.2.2 數據對齊 180
8.2.3 代碼對齊和緩存優化 181
8.3 代碼層級的運行時間優化 182
8.3.1 優化頻繁調用的小函數 184
8.3.2 優化根函數sqrt 184
8.3.3 AURIX的線性內核 ID 187
8.3.4 計算至達到飽和 190
8.3.5 處理器特定的通用指令 191
8.3.6 編譯器優化 192
8.4 運行時間優化總結與指南 199
第9章 開發過程中的方法技巧 202
9.1 與時間相關的各種需求 202
9.1.1 時間需求 202
9.1.2 對於方法和工具的需求 207
9.1.3 通用需求模板 208
9.2 開發期間的協作 209
9.3 軟件運行時間概念、調度設計和操作系統配置 210
9.4 軟件運行時間調試 210
9.5 運行時間優化 211
9.6 時間驗證 211
9.6.1 測試階段“分析” 212
9.6.2 測試階段“POI(興趣點)追蹤” 212
9.6.3 測試階段“極端情況” 212
9.6.4 測試階段“憑經驗確定空間” 212
9.7 盡早考慮後期的功能 213
9.8 最終產品中的時間監測 214
9.9 一個好例子:Vitesco Technologies出品的CoReMa 215
9.10 總結 216
第10章 AUTOSAR 218
10.1 AUTOSAR CP 219
10.1.1 功能架構 219
10.1.2 軟件架構、SW-C 定義和 VFB 219
10.1.3 RTE 220
10.1.4 實現、系統配置和 Runnable 221
10.2 AUTOSAR AP 221
10.2.1 功能架構 221
10.2.2 軟件架構 AA 221
10.2.3 實現與系統配置 223
10.2.4 部署 224
10.2.5 執行管理和執行客戶端 224
10.2.6 確定性執行和確定性客戶端 224
10.2.7 POSIX調度 226
10.2.8 AUTOSARAP中的時間 227
10.3 AUTOSAR時間擴展TIMEX 229
10.3.1 目標 229
10.3.2 事件和事件鏈 229
10.3.3 TIMEX 要求類型 230
10.3.4 AUTOSAR/TIMEX 視角 230
10.4 AUTOSAR/ASAM 運行時間接口 ARTI 231
10.4.1 AUTOSAR ARTI 232
10.4.2 ASAM ARTI 233
10.5 技術報告“時間分析” 233
10.6 總結 234
第11章 功能安全,ISO 26262 235
11.1 基礎知識 235
11.1.1 風險 235
11.1.2 SIL——安全完整性等級 235
11.1.3 脫離上下文、在上下文中、經使用驗證 236
11.2 安全標準、時間及時間驗證 237
11.3 時間安全所需工具 238
11.4 法律方面的考量 239
11.5 總結 240
第12章 前景 241
致謝 242
參考文獻 243
??
??
??