本書重點討論了FreeRTOS的堆內(nèi)存管理、任務管理、隊列管理、軟件定時器管理、中斷管理、資源管理、事件組和任務通知等作為一款優(yōu)秀的實時操作系統(tǒng)必須具備的功能和特性;為了有助于應用程序的開發(fā)和調(diào)試,本書也涉及開發(fā)者支持和故障排除等內(nèi)容,總結提高設計開發(fā)效率的方法,介紹了多年來用戶請求技術支持中排在前幾位的問題及其解決方案。
本書譯者為黃華,中電科蓉威電子技術有限公司高級工程師,一直從事電子產(chǎn)品的研發(fā)工作,具備豐富的理論知識和工程經(jīng)驗,能夠獨立承擔和領導團隊開展高可靠性嵌入式計算機、FPGA和DSP等模塊以及分機級項目的設計和開發(fā),負責的多個項目已用于軍事裝備。
第 1 章 FreeRTOS 發(fā)行版 / 1
1.1 本章知識點及學習目標 / 1
1.2 了解 FreeRTOS 發(fā)行版 / 1
1.3 演示程序 / 5
1.4 創(chuàng)建 FreeRTOS 工程 / 6
1.5 數(shù)據(jù)類型和編碼風格指南 / 8
第 2 章 堆內(nèi)存管理 / 11
2.1 本章知識點及學習目標 / 11
2.2 內(nèi)存分配方案示例 / 12
2.3 與堆相關的實用函數(shù) / 22
第 3 章 任務管理 / 25
3.1 本章知識點及學習目標 / 25
3.2 任務函數(shù) / 25
3.3 頂層任務狀態(tài) / 26
3.4 創(chuàng)建任務 / 27
3.5 任務優(yōu)先級 / 34
3.6 時間測量和滴答中斷 / 35
3.7 擴展“非運行”狀態(tài) / 38
3.8 空閑任務和空閑任務鉤子 / 46
3.9 更改任務的優(yōu)先級 / 49
3.10 刪除任務 / 53
3.11 線程本地存儲 / 57
3.12 調(diào)度算法 / 59
第 4 章 隊列管理 / 69
4.1 本章知識點及學習目標 / 69
4.2 隊列的特點 / 69
4.3 使用隊列 / 72
4.4 從多個來源接收數(shù)據(jù) / 79
4.5 處理大數(shù)據(jù)或可變大小的數(shù)據(jù) / 86
4.6 從多隊列接收 / 91
4.7 使用隊列創(chuàng)建郵箱 / 99
第 5 章 軟件定時器管理 / 103
5.1 本章知識點及學習目標 / 103
5.2 軟件定時器回調(diào)函數(shù) / 103
5.3 軟件定時器的屬性和狀態(tài) / 104
5.4 軟件定時器的上下文 / 106
5.5 創(chuàng)建和啟動軟件定時器 / 109
5.6 定時器 ID / 115
5.7 更改定時器的周期 / 117
5.8 重置軟件定時器 / 120
第 6 章 中斷管理 / 125
6.1 本章知識點及學習目標 / 125
6.2 在 ISR 中使用 FreeRTOS API / 126
6.3 推遲中斷處理 / 129
6.4 用于同步的二進制信號量 / 130
6.5 計數(shù)信號量 / 143
6.6 推遲工作到 RTOS 守護任務 / 147
6.7 在中斷服務程序中使用隊列 / 152
6.8 中斷嵌套 / 158
第 7 章 資源管理 / 163
7.1 本章知識點及學習目標 / 163
7.2 臨界區(qū)和暫停調(diào)度器 / 166
7.3 互斥量(和二進制信號量) / 169
7.4 守門人任務 / 182
第 8 章 事件組 / 187
8.1 本章知識點及學習目標 / 187
8.2 事件組的特征 / 188
8.3 使用事件組進行事件管理 / 189
8.4 使用事件組進行任務同步 / 199
第 9 章 任務通知 / 207
9.1 本章知識點及學習目標 / 207
9.2 任務通知:優(yōu)勢和局限 / 208
9.3 使用任務通知 / 209
第 10 章 低功耗支持 / 233
10.1 本章知識點及學習目標 / 233
10.2 節(jié)能及與節(jié)能有關的宏 / 233
10.3 ARM Cortex-M 微控制器的低功耗實現(xiàn) / 236
第 11 章 開發(fā)者支持 / 241
11.1 本章知識點及學習目標 / 241
11.2 configASSERT() / 241
11.3 FreeRTOS+Trace / 243
11.4 與調(diào)試相關的鉤子(回調(diào))函數(shù) / 246
11.5 查看運行時信息和任務狀態(tài)信息 / 246
11.6 跟蹤鉤子宏 / 254
第 12 章 故障排除 / 259
12.1 本章知識點及學習目標 / 259
12.2 中斷優(yōu)先級 / 259
12.3 棧溢出 / 260
12.4 函數(shù) printf()和 sprintf()的不當使用 / 262
12.5 錯誤的其他常見來源 / 263
附錄 A FreeRTOS 的新版本和新特性 / 265
A.1 FreeRTOS 版本 9 / 265
A.2 FreeRTOS 版本 10 / 268