第1章 實時操作係統基礎............................1
1.1 操作係統概述........................1
1.1.1 什麼是操作係統...............................1
1.1.2 操作係統基本功能...........................2
1.2 實時操作係統概述....................3
1.2.1 什麼是實時操作係統.......................3
1.2.2 實時操作係統的基本特徵...............4
1.3 任務................................5
1.3.1 任務簡介..........................................5
1.3.2 多任務..............................................6
1.3.3 任務狀態..........................................7
1.3.4 任務切換..........................................8
1.3.5 可重入函數和不可重入函數 ..........9
1.4 基於優先級的可剝奪內核.............11
1.4.1 內核 ...............................................11
1.4.2 基於優先級的調度算法.................11
1.4.3 不可剝奪型內核和可剝奪型內核 .12
1.5 同步與通信.........................13
1.5.1 同步 ...............................................13
1.5.2 互斥................................................14
1.5.3 臨界區............................................14
1.5.4 事件................................................15
1.5.5 信號量............................................15
1.5.6 互斥信號量....................................17
1.5.7 事件標誌組....................................17
1.5.8 消息郵箱和消息隊列.....................17
1.6 時鍾和中斷.........................19
1.7 內存管理...........................21
1.8 嵌入式實時操作係統μC/OS學習開發指引 ....21
習題....................................22
第2章 任務管理..........................................23
2.1 任務管理數據結構...................24
2.1.1 任務控製塊....................................24
2.1.2 空閑鏈錶和就緒鏈錶.....................28
2.1.3 任務優先級指針錶.........................30
2.1.4 任務堆棧........................................31
2.1.5 任務就緒錶和就緒組.....................33
2.2 任務控製塊初始化...................38
2.2.1 代碼解析........................................38
2.2.2 流程分析........................................40
2.3 操作係統初始化.....................41
2.3.1 代碼解析........................................41
2.3.2 流程分析........................................45
2.4 任務的創建.........................45
2.4.1 OSTaskCreate代碼解析..................46
2.4.2 OSTaskCreate流程分析..................48
2.4.3 OSTaskCreateExt代碼解析............49
2.4.4 OSTaskCreateExt流程分析............52
2.5 任務的刪除.........................53
2.5.1 任務刪除代碼解析.........................54
2.5.2 任務刪除流程分析.........................57
2.5.3 請求刪除任務代碼解析.................58
2.5.4 請求刪除任務流程.........................59
2.6 任務掛起和恢復.....................60
2.6.1 OSTaskSuspend代碼解析...............61
2.6.2 OSTaskSuspend流程分析...............63
2.6.3 OSTaskResume代碼解析...............63
2.6.4 OSTaskResume流程分析...............65
2.7 任務的調度和多任務的啓動...........66
2.7.1 任務調度器....................................66
2.7.2 任務切換函數................................68
2.7.3 中斷中的任務調度.........................73
2.7.4 多任務的啓動 ..............................74
2.8 特殊任務...........................75
2.8.1 空閑任務OS_TaskIdle....................75
2.8.2 統計任務OS_TaskStat....................76
2.9 任務管理總結.......................78
習題....................................79
第3章 中斷和時間管理.............................80
3.1 中斷管理...........................80
3.1.1 中斷管理核心思路.........................80
3.1.2 中斷處理的流程.............................82
3.1.3 時鍾中斷服務................................82
3.2 時間管理...........................83
3.2.1 時間管理主要數據結構.................83
3.2.2 時間的獲取和設置.........................84
3.2.3 任務延時函數OSTimeDly.............84
3.2.4 任務按分秒延遲函數
OSTimeDlyHMSM...........................86
3.2.5 延時恢復函數OSTimeDlyResume.....87
習題....................................90
第4章 事件管理..........................................91
4.1 事件管理的重要數據結構.............91
4.1.1 事件控製塊(ECB).....................91
4.1.2 事件等待組和事件等待錶.............92
4.1.3 事件控製塊空閑鏈錶.....................93
4.2 事件管理程序.......................94
4.2.1 事件控製塊(ECB)初始化.........94
4.2.2 事件等待錶初始化.........................94
4.2.3 設置事件等待................................95
4.2.4 取消事件等待................................97
4.2.5 將等待事件的任務就緒.................97
4.3 信號量管理.........................99
4.3.1 信號量的建立OSSemCreate...........99
4.3.2 信號量的刪除OSSemDel..............101
4.3.3 請求信號量OSSemPend................104
4.3.4 提交信號量...................................107
4.3.5 無等待請求信號量........................109
4.3.6 放棄等待信號量............................110
4.3.7 信號量值設置...............................111
4.3.8 查詢信號量狀態............................112
4.3.9 信號量應用舉例............................113
4.4 互斥信號量管理....................117
4.4.1 互斥信號量的建立........................118
4.4.2 請求互斥信號量............................120
4.4.3 互斥信號量的刪除........................125
4.4.4 發互斥信號量 ..............................128
4.4.5 無等待請求互斥信號量................130
4.4.6 查詢互斥信號量狀態....................131
4.4.7 改變任務的優先級並重新就緒....133
4.4.8 互斥信號量應用舉例....................133
4.5 事件標誌組管理....................137
4.5.1 事件標誌組數據結構....................138
4.5.2 事件標誌組初始化........................140
4.5.3 創建事件標誌組............................141
4.5.4 事件標誌組阻塞函數....................142
4.5.5 請求事件標誌...............................143
4.5.6 刪除事件標誌組............................150
4.5.7 提交事件標誌組............................152
4.5.8 標誌節點任務就緒........................154
4.5.9 無等待的請求事件標誌................155
4.5.10 事件標誌管理應用舉例..............157
習題...................................161
第5章 消息管理........................................162
5.1 消息郵箱..........................162
5.1.1 建立消息郵箱...............................163
5.1.2 等待消息.......................................165
5.1.3 發消息...........................................168
5.1.4 刪除消息郵箱...............................170
5.1.5 放棄等待郵箱...............................173
5.1.6 無等待請求消息............................175
5.1.7 查詢消息郵箱狀態........................175
5.1.8 消息郵箱的例子............................176
5.2 消息隊列..........................178
5.2.1 消息隊列數據結構........................179
5.2.2 初始化消息隊列............................182
5.2.3 建立消息隊列...............................183
5.2.4 發消息到消息隊列........................185
5.2.5 等待消息隊列中的消息................186
5.2.6 刪除消息隊列...............................188
5.2.7 取得消息隊列的狀態....................190
5.2.8 消息隊列應用舉例........................191
習題...................................194
第6章 內存管理........................................195
6.1 內存管理數據結構..................195
6.1.1 內存控製塊...................................195
6.1.2 內存控製塊實體............................196
6.1.3 空閑內存控製塊鏈錶....................196
6.1.4 內存分區.......................................196
6.2 內存控製塊初始化..................197
6.3 創建內存分區......................198
6.4 內存分區獲取......................200
6.5 內存分區釋放......................201
6.6 查詢內存分區的狀態................202
6.7 內存管理實例......................203
習題...................................205
第7章 移植 ..............................................206
7.1 移植說明..........................206
7.1.1 μC/OS-II的代碼結構..................206
7.1.2 操作係統中與CPU相關的代碼解析....209
7.1.3 μC/OS-II移植步驟......................213
7.2 在Visual C++ 6.0上實現基於
Windows的虛擬μC/OS-II移植.........213
7.2.1 目錄結構和工程的建立................213
7.2.2 包含文件includes.h........................214
7.2.3 os_cpu.h中修改的代碼..................215
7.2.4 os_cpu.c中修改的代碼..................216
7.2.5 主程序代碼實現............................219
7.2.6 移植測試.......................................220
7.3 μC/OS-II在ARM Cortex M3下的移植......221
7.3.1 與移植相關的ARM Cortex M3研究....221
7.3.2 os_cpu.h代碼解析.........................223
7.3.3 os_cpu_c.c移植代碼解析..............225
7.3.4 os_cpu_a.asm移植代碼解析..........227
7.3.5 移植後的目錄結構........................233
習題...................................234
第8章 工程實踐 .....................................235
8.1 工程需求說明......................235
8.2 分析..............................236
8.3 工程設計..........................236
8.3.1 整體設計.......................................236
8.3.2 主機硬件接口設計........................237
8.3.3 多任務設計...................................238
8.3.4 串口數據格式...............................239
8.4 程序設計..........................239
8.4.1 主程序...........................................239
8.4.2 串口中斷服務程序........................240
8.4.3 緩衝區處理任務代碼....................240
8.4.4 顯示任務代碼...............................242
8.4.5 AD 采集任務代碼........................243
8.4.6 觸摸屏任務代碼............................244
8.4.7 μC/GUI消息處理任務代碼..........244
8.4.8 啓動任務代碼...............................245
8.4.9 工程代碼結構...............................245
8.5 運行測試..........................246
習題...................................246
設計題.................................247
第9章 μC/OS-III分析、移植與應用實踐.....248
9.1 本章說明..........................248
9.2 μC/OS-III代碼結構.................248
9.3 μC/OS-III在STM32上的移植..........250
9.3.1 os_cpu.h代碼.................................250
9.3.2 os_cpu_c.c移植代碼......................251
9.3.3 os_cpu_a.asm移植代碼..................252
9.4 μC/OS-III函數.....................253
9.4.1 任務管理函數...............................253
9.4.2 時間管理函數...............................255
9.4.3 信號量管理函數............................255
9.4.4 互斥信號量管理函數....................257
9.4.5 消息隊列管理函數........................258
9.4.6 中斷管理函數...............................259
9.4.7 內核函數.......................................259
9.5 μC/OS-III工程示例.................260
9.5.1 工程分組.......................................260
9.5.2 主程序...........................................261
9.5.3 串口中斷服務程序........................263
9.5.4 緩衝區處理任務代碼....................264
9.5.5 顯示任務代碼...............................266
9.5.6 啓動任務代碼 ..............................266
9.5.7 其他代碼 ......................................267
9.5.8 運行測試.......................................267
習題...................................267
設計題.................................267
附錄A 亮點STM32開發闆資源...............268
A.1 硬件資源概述......................268
A.2 硬件資源按引腳分配................269
A.3 接口描述..........................271
A.4 軟件資源..........................276
A.5 網絡資源..........................277
參考文獻...................................................278
· · · · · · (
收起)