嵌入式實時操作系統(tǒng)μC/OS-II原理及應用(第4版)
定 價:42 元
- 作者:任哲,房紅征,曹靖 著
- 出版時間:2016/9/1
- ISBN:9787512422087
- 出 版 社:北京航空航天大學出版社
- 中圖法分類:TP316.2
- 頁碼:311
- 紙張:膠版紙
- 版次:4
- 開本:16K
μC/OSII是一個源碼開放的嵌入式實時操作系統(tǒng)的內(nèi)核。本書詳細地介紹了嵌入式實時操作系統(tǒng)μC/OSII內(nèi)核的任務(wù)的管理和調(diào)度、系統(tǒng)時鐘和節(jié)拍服務(wù)、時間管理、中斷、任務(wù)的通信和同步、內(nèi)存的簡單管理原理。為幫助讀者理解書中的內(nèi)容,本書給出了大量的實例。最后,還介紹了μC/OSII的移植方法。為了學習上的方便,第3版還增加了使用集成開發(fā)環(huán)境BC45和VC6.0編譯μC/OSII的相關(guān)內(nèi)容。第4版主要對第3版前3章做了較大的修改,增加了普通操作系統(tǒng)和嵌入式操作系統(tǒng)的區(qū)別,隊列、堆棧、計算機中斷等特殊問題,并重新編寫了任務(wù)的概念等內(nèi)容。
本書適合高等院校計算機、電子技術(shù)、自動化技術(shù)、儀器儀表等信息類專業(yè)教學使用,也適合對嵌入式操作系統(tǒng)感興趣的工程技術(shù)人員閱讀參考。
第1章 嵌入式實時操作系統(tǒng)的基本概念……………………………………………………… 1
1.1 計算機操作系統(tǒng)………………………………………………………………………… 1
1.1.1 什么是計算機操作系統(tǒng)…………………………………………………………… 1
1.1.2 操作系統(tǒng)的作用和功能…………………………………………………………… 2
1.2 嵌入式系統(tǒng)和嵌入式操作系統(tǒng)………………………………………………………… 3
1.2.1 嵌入式系統(tǒng)的基本概念…………………………………………………………… 4
1.2.2 嵌入式操作系統(tǒng)…………………………………………………………………… 7
1.2.3 實時操作系統(tǒng)需要滿足的條件…………………………………………………… 9
1.2.4 嵌入式系統(tǒng)的任務(wù)及嵌入式實時操作系統(tǒng)……………………………………… 11
1.3 嵌入式實時操作系統(tǒng)μC/OS II簡介……………………………………………… 12
1.4 通用操作系統(tǒng)與嵌入式操作系統(tǒng)的異同……………………………………………… 13
1.5 小 結(jié)…………………………………………………………………………………… 15
1.6 練習題…………………………………………………………………………………… 15
第2章 預備知識……………………………………………………………………………… 16
2.1 開發(fā)工具………………………………………………………………………………… 16
2.1.1 BorlandC3.1及其精簡版……………………………………………………… 16
2.1.2 多文件程序的編譯和連接………………………………………………………… 21
2.2 工程管理工具make及makefile ……………………………………………………… 24
2.3 復雜工程項目的管理…………………………………………………………………… 32
2.3.1 批處理文件與makefile的綜合使用…………………………………………… 32
2.3.2 復雜工程管理示例………………………………………………………………… 33
2.4 C指針…………………………………………………………………………………… 37
2.4.1 指針的基本概念…………………………………………………………………… 37
2.4.2 函數(shù)指針…………………………………………………………………………… 39
2.4.3 函數(shù)指針作為函數(shù)參數(shù)及回調(diào)函數(shù)……………………………………………… 41
2.5 typedef常用方法……………………………………………………………………… 43
2.6 常用數(shù)據(jù)類型及數(shù)據(jù)結(jié)構(gòu)……………………………………………………………… 45
2.6.1 控制塊……………………………………………………………………………… 46
2.6.2 同類控制塊的登記造冊…………………………………………………………… 50
2.6.3 隊列與堆! 52
2.6.4 位 圖……………………………………………………………………………… 54
2.7 程序流程轉(zhuǎn)移的中斷實現(xiàn)方法………………………………………………………… 55
2.8 小 結(jié)…………………………………………………………………………………… 56
2.9 練習題…………………………………………………………………………………… 56
第3章 μC/OS II中的任務(wù)………………………………………………………………… 57
3.1 任務(wù)的基本概念………………………………………………………………………… 57
3.1.1 任務(wù)及其種類……………………………………………………………………… 57
3.1.2 任務(wù)的狀態(tài)………………………………………………………………………… 59
3.1.3 用戶任務(wù)代碼的一般結(jié)構(gòu)………………………………………………………… 60
3.1.4 系統(tǒng)任務(wù)…………………………………………………………………………… 63
3.1.5 任務(wù)的優(yōu)先權(quán)及優(yōu)先級別………………………………………………………… 64
3.2 任務(wù)堆! 65
3.2.1 任務(wù)堆棧的創(chuàng)建…………………………………………………………………… 65
3.2.2 任務(wù)堆棧的初始化………………………………………………………………… 67
3.3 任務(wù)控制塊及其鏈表…………………………………………………………………… 68
3.3.1 任務(wù)控制塊結(jié)構(gòu)…………………………………………………………………… 68
3.3.2 任務(wù)控制塊鏈表…………………………………………………………………… 69
3.3.3 任務(wù)控制塊的初始化……………………………………………………………… 71
3.4 任務(wù)就緒表及任務(wù)調(diào)度………………………………………………………………… 72
3.4.1 任務(wù)就緒表結(jié)構(gòu)…………………………………………………………………… 72
3.4.2 對任務(wù)就緒表的操作……………………………………………………………… 74
3.4.3 任務(wù)調(diào)度…………………………………………………………………………… 76
3.5 任務(wù)的創(chuàng)建……………………………………………………………………………… 81
3.5.1 用函數(shù)OSTaskCreate()創(chuàng)建任務(wù)……………………………………………… 81
3.5.2 用函數(shù)OSTaskCreateExt()創(chuàng)建任務(wù)…………………………………………… 83
3.5.3 創(chuàng)建任務(wù)的一般方法……………………………………………………………… 83
3.6 任務(wù)的掛起和恢復……………………………………………………………………… 90
3.6.1 掛起任務(wù)…………………………………………………………………………… 90
3.6.2 恢復任務(wù)…………………………………………………………………………… 90
3.7 其他任務(wù)管理函數(shù)……………………………………………………………………… 96
3.7.1 任務(wù)優(yōu)先級別的修改……………………………………………………………… 96
3.7.2 任務(wù)的刪除………………………………………………………………………… 97
3.7.3 查詢?nèi)蝿?wù)的信息………………………………………………………………… 103
3.8 μC/OS II的初始化和任務(wù)的啟動………………………………………………… 103
3.8.1 μC/OS II的初始化…………………………………………………………… 103
3.8.2 μC/OS II的啟動……………………………………………………………… 105
3.9 小 結(jié)………………………………………………………………………………… 107
3.10 練習題………………………………………………………………………………… 108
第4章 μC/OS II的中斷和時鐘…………………………………………………………… 109
4.1 μC/OS II的中斷…………………………………………………………………… 109
4.1.1 μC/OS II的中斷過程………………………………………………………… 109
4.1.2 中斷級任務(wù)切換函數(shù)…………………………………………………………… 113
4.1.3 應用程序中的臨界段…………………………………………………………… 113
4.2 μC/OS II的時鐘…………………………………………………………………… 115
4.3 時間管理……………………………………………………………………………… 122
4.3.1 任務(wù)的延時……………………………………………………………………… 122
4.3.2 取消任務(wù)的延時………………………………………………………………… 123
4.3.3 獲取和設(shè)置系統(tǒng)時間…………………………………………………………… 128
4.4 小 結(jié)………………………………………………………………………………… 130
4.5 練習題………………………………………………………………………………… 131
第5章 任務(wù)的同步與通信…………………………………………………………………… 132
5.1 任務(wù)的同步和事件…………………………………………………………………… 132
5.1.1 任務(wù)間的同步…………………………………………………………………… 132
5.1.2 事 件…………………………………………………………………………… 133
5.2 事件控制塊及事件處理函數(shù)………………………………………………………… 145
5.2.1 事件控制塊的結(jié)構(gòu)……………………………………………………………… 145
5.2.2 操作事件控制塊的函數(shù)………………………………………………………… 147
5.2.3 空事件控制塊鏈表……………………………………………………………… 149
5.3 信號量及其操作……………………………………………………………………… 150
5.3.1 信號量…………………………………………………………………………… 150
5.3.2 信號量的操作…………………………………………………………………… 151
5.4 互斥型信號量和任務(wù)優(yōu)先級反轉(zhuǎn)…………………………………………………… 160
5.4.1 任務(wù)優(yōu)先級的反轉(zhuǎn)現(xiàn)象………………………………………………………… 161
5.4.2 互斥型信號量…………………………………………………………………… 166
5.5 消息郵箱及其操作…………………………………………………………………… 169
5.5.1 消息郵箱………………………………………………………………………… 169
5.5.2 消息郵箱的操作………………………………………………………………… 170
5.6 消息隊列及其操作…………………………………………………………………… 175
5.6.1 消息隊列………………………………………………………………………… 175
5.6.2 消息隊列的操作………………………………………………………………… 178
5.7 小 結(jié)………………………………………………………………………………… 184
5.8 練習題………………………………………………………………………………… 185
第6章 信號量集……………………………………………………………………………… 186
6.1 信號量集的結(jié)構(gòu)……………………………………………………………………… 186
6.1.1 基本概念………………………………………………………………………… 186
6.1.2 信號量集的結(jié)構(gòu)組成…………………………………………………………… 187
6.1.3 對等待任務(wù)鏈表的操作………………………………………………………… 191
6.1.4 空標志組鏈表…………………………………………………………………… 191
6.2 信號量集的操作……………………………………………………………………… 192
6.2.1 創(chuàng)建信號量集…………………………………………………………………… 192
6.2.2 請求信號量集…………………………………………………………………… 194
6.2.3 向信號量集發(fā)送信號…………………………………………………………… 194
6.2.4 查詢信號量集的狀態(tài)…………………………………………………………… 200
6.2.5 刪除信號量集…………………………………………………………………… 203
6.3 小 結(jié)………………………………………………………………………………… 203
6.4 練習題………………………………………………………………………………… 203
第7章 動態(tài)內(nèi)存管理………………………………………………………………………… 204
7.1 內(nèi)存控制塊…………………………………………………………………………… 204
7.1.1 可動態(tài)分配內(nèi)存的劃分………………………………………………………… 204
7.1.2 內(nèi)存控制塊OS_MEM 的結(jié)構(gòu)………………………………………………… 205
7.1.3 空內(nèi)存控制塊鏈表……………………………………………………………… 206
7.2 動態(tài)內(nèi)存的管理……………………………………………………………………… 206
7.2.1 創(chuàng)建動態(tài)內(nèi)存分區(qū)……………………………………………………………… 206
7.2.2 請求獲得一個內(nèi)存塊…………………………………………………………… 208
7.2.3 釋放一個內(nèi)存塊………………………………………………………………… 211
7.2.4 查詢一個內(nèi)存分區(qū)的狀態(tài)……………………………………………………… 215
7.3 小 結(jié)………………………………………………………………………………… 220
7.4 練習題………………………………………………………………………………… 220
第8章 在51單片機上移植μC/OS II …………………………………………………… 221
8.1 μC/OS II移植的一般性問題……………………………………………………… 221
8.1.1 可重入函數(shù)的概念……………………………………………………………… 221
8.1.2 時鐘節(jié)拍的產(chǎn)生………………………………………………………………… 222
8.1.3 任務(wù)堆棧的設(shè)計………………………………………………………………… 222
8.2 在51系列單片機上移植μC/OS II ……………………………………………… 223
8.2.1 文件OS_CPU.H 的修改……………………………………………………… 223
8.2.2 任務(wù)堆棧的設(shè)計………………………………………………………………… 224
8.2.3 文件OS_CPU_C.C的修改…………………………………………………… 231
8.2.4 幾點注意事項…………………………………………………………………… 232
8.3 應用舉例……………………………………………………………………………… 232
8.3.1 LED數(shù)碼顯示器的驅(qū)動程序…………………………………………………… 232
8.3.2 串行接口的應用………………………………………………………………… 234
8.4 小 結(jié)………………………………………………………………………………… 242
8.5 練習題………………………………………………………………………………… 242
第9章 基于ARM 的μC/OS II…………………………………………………………… 243
9.1 移植規(guī)劃……………………………………………………………………………… 243
9.1.1 編譯器的選擇…………………………………………………………………… 243
9.1.2 ARM7工作模式的選擇………………………………………………………… 243
9.2 移 植………………………………………………………………………………… 244
9.2.1 文件OS_CPU.H 的編寫……………………………………………………… 244
9.2.2 文件OS_CPU_C.C的編寫…………………………………………………… 246
9.2.3 文件OS_CPU_A.S的編寫…………………………………………………… 253
9.2.4 關(guān)于中斷及時鐘節(jié)拍…………………………………………………………… 256
9.3 在LPC2000上移植μC/OS II …………………………………………………… 257
9.3.1 掛接SWI軟件中斷……………………………………………………………… 258
9.3.2 中斷及時鐘節(jié)拍中斷…………………………………………………………… 258
9.3.3 一個基于μC/OS II和ARM 的應用程序?qū)嵗?259
9.4 小 結(jié)………………………………………………………………………………… 261
9.5 練習題………………………………………………………………………………… 261
第10章 μC/OS II在80x86上的移植…………………………………………………… 262
10.1 概 述………………………………………………………………………………… 262
10.2 任務(wù)切換……………………………………………………………………………… 263
10.2.1 任務(wù)切換函數(shù)OSCtxSw() …………………………………………………… 263
10.2.2 任務(wù)切換宏OS_TASK_SW()………………………………………………… 265
10.2.3 中斷級任務(wù)切換函數(shù)OSIntCtxSw()………………………………………… 266
10.3 系統(tǒng)時鐘……………………………………………………………………………… 267
10.3.1 PC中DOS的系統(tǒng)時鐘………………………………………………………… 267
10.3.2 PC中μC/OS II的系統(tǒng)時鐘………………………………………………… 267
10.3.3 μC/OS II系統(tǒng)時鐘中斷服務(wù)程序…………………………………………… 269
10.3.4 μC/OS II系統(tǒng)時鐘中斷向量的安裝………………………………………… 269
10.3.5 由μC/OS II返回DOS ……………………………………………………… 270
10.4 小 結(jié)………………………………………………………………………………… 271
第11章 μC/OS II可裁剪性的實現(xiàn)……………………………………………………… 272
11.1 文件OS_CFG.H 中用于系統(tǒng)裁剪的常量………………………………………… 272
11.2 配置常量的解釋……………………………………………………………………… 274
11.2.1 OS_MAX_EVENTS ………………………………………………………… 274
11.2.2 OS_MAX_MEM_PARTS …………………………………………………… 275
11.2.3 OS_MAX_QS ………………………………………………………………… 275
11.2.4 OS_MAX_MEM_TASKS …………………………………………………… 275
11.2.5 OS_LOWEST_PRIO ………………………………………………………… 275
11.2.6 OS_TASK_IDLE_STK_SIZE ………………………………………………… 276
11.2.7 OS_TASK_STAT_EN ……………………………………………………… 276
11.2.8 OS_TASK_STAT_STK_SIZE ……………………………………………… 276
11.2.9 OS_CPU_HOOKS_EN ……………………………………………………… 276
11.2.10 OS_MBOX_EN ……………………………………………………………… 277
11.2.11 OS_MEM_EN ………………………………………………………………… 277
11.2.12 OS_Q_EN …………………………………………………………………… 277
11.2.13 OS_SEM_EN ………………………………………………………………… 277
11.2.14 OS_TASK_CHANGE_PRIO_EN ………………………………………… 277
11.2.15 OS_TASK_CREATE_EN …………………………………………………… 277
11.2.16 OS_TASK_CREATE_EXT_EN …………………………………………… 278
11.2.17 OS_TASK_DEL_EN ………………………………………………………… 278
11.2.18 OS_TASK_SUSPEND_EN ………………………………………………… 278
11.2.19 OS_TICKS_PER_SEC ……………………………………………………… 278
第12章 在集成開發(fā)環(huán)境上編譯μC/OS II ……………………………………………… 279