嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II原理及應(yīng)用(第4版)
定 價(jià):42 元
- 作者:任哲,房紅征,曹靖 著
- 出版時(shí)間:2016/9/1
- ISBN:9787512422087
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類:TP316.2
- 頁碼:311
- 紙張:膠版紙
- 版次:4
- 開本:16K
μC/OSII是一個(gè)源碼開放的嵌入式實(shí)時(shí)操作系統(tǒng)的內(nèi)核。本書詳細(xì)地介紹了嵌入式實(shí)時(shí)操作系統(tǒng)μC/OSII內(nèi)核的任務(wù)的管理和調(diào)度、系統(tǒng)時(shí)鐘和節(jié)拍服務(wù)、時(shí)間管理、中斷、任務(wù)的通信和同步、內(nèi)存的簡單管理原理。為幫助讀者理解書中的內(nèi)容,本書給出了大量的實(shí)例。最后,還介紹了μC/OSII的移植方法。為了學(xué)習(xí)上的方便,第3版還增加了使用集成開發(fā)環(huán)境BC45和VC6.0編譯μC/OSII的相關(guān)內(nèi)容。第4版主要對(duì)第3版前3章做了較大的修改,增加了普通操作系統(tǒng)和嵌入式操作系統(tǒng)的區(qū)別,隊(duì)列、堆棧、計(jì)算機(jī)中斷等特殊問題,并重新編寫了任務(wù)的概念等內(nèi)容。
本書適合高等院校計(jì)算機(jī)、電子技術(shù)、自動(dòng)化技術(shù)、儀器儀表等信息類專業(yè)教學(xué)使用,也適合對(duì)嵌入式操作系統(tǒng)感興趣的工程技術(shù)人員閱讀參考。
第1章 嵌入式實(shí)時(shí)操作系統(tǒng)的基本概念……………………………………………………… 1
1.1 計(jì)算機(jī)操作系統(tǒng)………………………………………………………………………… 1
1.1.1 什么是計(jì)算機(jī)操作系統(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 實(shí)時(shí)操作系統(tǒng)需要滿足的條件…………………………………………………… 9
1.2.4 嵌入式系統(tǒng)的任務(wù)及嵌入式實(shí)時(shí)操作系統(tǒng)……………………………………… 11
1.3 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS II簡介……………………………………………… 12
1.4 通用操作系統(tǒng)與嵌入式操作系統(tǒng)的異同……………………………………………… 13
1.5 小 結(jié)…………………………………………………………………………………… 15
1.6 練習(xí)題…………………………………………………………………………………… 15
第2章 預(yù)備知識(shí)……………………………………………………………………………… 16
2.1 開發(fā)工具………………………………………………………………………………… 16
2.1.1 BorlandC3.1及其精簡版……………………………………………………… 16
2.1.2 多文件程序的編譯和連接………………………………………………………… 21
2.2 工程管理工具make及makefile ……………………………………………………… 24
2.3 復(fù)雜工程項(xiàng)目的管理…………………………………………………………………… 32
2.3.1 批處理文件與makefile的綜合使用…………………………………………… 32
2.3.2 復(fù)雜工程管理示例………………………………………………………………… 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 同類控制塊的登記造冊(cè)…………………………………………………………… 50
2.6.3 隊(duì)列與堆棧………………………………………………………………………… 52
2.6.4 位 圖……………………………………………………………………………… 54
2.7 程序流程轉(zhuǎn)移的中斷實(shí)現(xiàn)方法………………………………………………………… 55
2.8 小 結(jié)…………………………………………………………………………………… 56
2.9 練習(xí)題…………………………………………………………………………………… 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)先級(jí)別………………………………………………………… 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 對(duì)任務(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ù)的掛起和恢復(fù)……………………………………………………………………… 90
3.6.1 掛起任務(wù)…………………………………………………………………………… 90
3.6.2 恢復(fù)任務(wù)…………………………………………………………………………… 90
3.7 其他任務(wù)管理函數(shù)……………………………………………………………………… 96
3.7.1 任務(wù)優(yōu)先級(jí)別的修改……………………………………………………………… 96
3.7.2 任務(wù)的刪除………………………………………………………………………… 97
3.7.3 查詢?nèi)蝿?wù)的信息………………………………………………………………… 103
3.8 μC/OS II的初始化和任務(wù)的啟動(dòng)………………………………………………… 103
3.8.1 μC/OS II的初始化…………………………………………………………… 103
3.8.2 μC/OS II的啟動(dòng)……………………………………………………………… 105
3.9 小 結(jié)………………………………………………………………………………… 107
3.10 練習(xí)題………………………………………………………………………………… 108
第4章 μC/OS II的中斷和時(shí)鐘…………………………………………………………… 109
4.1 μC/OS II的中斷…………………………………………………………………… 109
4.1.1 μC/OS II的中斷過程………………………………………………………… 109
4.1.2 中斷級(jí)任務(wù)切換函數(shù)…………………………………………………………… 113
4.1.3 應(yīng)用程序中的臨界段…………………………………………………………… 113
4.2 μC/OS II的時(shí)鐘…………………………………………………………………… 115
4.3 時(shí)間管理……………………………………………………………………………… 122
4.3.1 任務(wù)的延時(shí)……………………………………………………………………… 122
4.3.2 取消任務(wù)的延時(shí)………………………………………………………………… 123
4.3.3 獲取和設(shè)置系統(tǒng)時(shí)間…………………………………………………………… 128
4.4 小 結(jié)………………………………………………………………………………… 130
4.5 練習(xí)題………………………………………………………………………………… 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 信號(hào)量及其操作……………………………………………………………………… 150
5.3.1 信號(hào)量…………………………………………………………………………… 150
5.3.2 信號(hào)量的操作…………………………………………………………………… 151
5.4 互斥型信號(hào)量和任務(wù)優(yōu)先級(jí)反轉(zhuǎn)…………………………………………………… 160
5.4.1 任務(wù)優(yōu)先級(jí)的反轉(zhuǎn)現(xiàn)象………………………………………………………… 161
5.4.2 互斥型信號(hào)量…………………………………………………………………… 166
5.5 消息郵箱及其操作…………………………………………………………………… 169
5.5.1 消息郵箱………………………………………………………………………… 169
5.5.2 消息郵箱的操作………………………………………………………………… 170
5.6 消息隊(duì)列及其操作…………………………………………………………………… 175
5.6.1 消息隊(duì)列………………………………………………………………………… 175
5.6.2 消息隊(duì)列的操作………………………………………………………………… 178
5.7 小 結(jié)………………………………………………………………………………… 184
5.8 練習(xí)題………………………………………………………………………………… 185
第6章 信號(hào)量集……………………………………………………………………………… 186
6.1 信號(hào)量集的結(jié)構(gòu)……………………………………………………………………… 186
6.1.1 基本概念………………………………………………………………………… 186
6.1.2 信號(hào)量集的結(jié)構(gòu)組成…………………………………………………………… 187
6.1.3 對(duì)等待任務(wù)鏈表的操作………………………………………………………… 191
6.1.4 空標(biāo)志組鏈表…………………………………………………………………… 191
6.2 信號(hào)量集的操作……………………………………………………………………… 192
6.2.1 創(chuàng)建信號(hào)量集…………………………………………………………………… 192
6.2.2 請(qǐng)求信號(hào)量集…………………………………………………………………… 194
6.2.3 向信號(hào)量集發(fā)送信號(hào)…………………………………………………………… 194
6.2.4 查詢信號(hào)量集的狀態(tài)…………………………………………………………… 200
6.2.5 刪除信號(hào)量集…………………………………………………………………… 203
6.3 小 結(jié)………………………………………………………………………………… 203
6.4 練習(xí)題………………………………………………………………………………… 203
第7章 動(dòng)態(tài)內(nèi)存管理………………………………………………………………………… 204
7.1 內(nèi)存控制塊…………………………………………………………………………… 204
7.1.1 可動(dòng)態(tài)分配內(nèi)存的劃分………………………………………………………… 204
7.1.2 內(nèi)存控制塊OS_MEM 的結(jié)構(gòu)………………………………………………… 205
7.1.3 空內(nèi)存控制塊鏈表……………………………………………………………… 206
7.2 動(dòng)態(tài)內(nèi)存的管理……………………………………………………………………… 206
7.2.1 創(chuàng)建動(dòng)態(tài)內(nèi)存分區(qū)……………………………………………………………… 206
7.2.2 請(qǐng)求獲得一個(gè)內(nèi)存塊…………………………………………………………… 208
7.2.3 釋放一個(gè)內(nèi)存塊………………………………………………………………… 211
7.2.4 查詢一個(gè)內(nèi)存分區(qū)的狀態(tài)……………………………………………………… 215
7.3 小 結(jié)………………………………………………………………………………… 220
7.4 練習(xí)題………………………………………………………………………………… 220
第8章 在51單片機(jī)上移植μC/OS II …………………………………………………… 221
8.1 μC/OS II移植的一般性問題……………………………………………………… 221
8.1.1 可重入函數(shù)的概念……………………………………………………………… 221
8.1.2 時(shí)鐘節(jié)拍的產(chǎn)生………………………………………………………………… 222
8.1.3 任務(wù)堆棧的設(shè)計(jì)………………………………………………………………… 222
8.2 在51系列單片機(jī)上移植μC/OS II ……………………………………………… 223
8.2.1 文件OS_CPU.H 的修改……………………………………………………… 223
8.2.2 任務(wù)堆棧的設(shè)計(jì)………………………………………………………………… 224
8.2.3 文件OS_CPU_C.C的修改…………………………………………………… 231
8.2.4 幾點(diǎn)注意事項(xiàng)…………………………………………………………………… 232
8.3 應(yīng)用舉例……………………………………………………………………………… 232
8.3.1 LED數(shù)碼顯示器的驅(qū)動(dòng)程序…………………………………………………… 232
8.3.2 串行接口的應(yīng)用………………………………………………………………… 234
8.4 小 結(jié)………………………………………………………………………………… 242
8.5 練習(xí)題………………………………………………………………………………… 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)于中斷及時(shí)鐘節(jié)拍…………………………………………………………… 256
9.3 在LPC2000上移植μC/OS II …………………………………………………… 257
9.3.1 掛接SWI軟件中斷……………………………………………………………… 258
9.3.2 中斷及時(shí)鐘節(jié)拍中斷…………………………………………………………… 258
9.3.3 一個(gè)基于μC/OS II和ARM 的應(yīng)用程序?qū)嵗?259
9.4 小 結(jié)………………………………………………………………………………… 261
9.5 練習(xí)題………………………………………………………………………………… 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 中斷級(jí)任務(wù)切換函數(shù)OSIntCtxSw()………………………………………… 266
10.3 系統(tǒng)時(shí)鐘……………………………………………………………………………… 267
10.3.1 PC中DOS的系統(tǒng)時(shí)鐘………………………………………………………… 267
10.3.2 PC中μC/OS II的系統(tǒng)時(shí)鐘………………………………………………… 267
10.3.3 μC/OS II系統(tǒng)時(shí)鐘中斷服務(wù)程序…………………………………………… 269
10.3.4 μC/OS II系統(tǒng)時(shí)鐘中斷向量的安裝………………………………………… 269
10.3.5 由μC/OS II返回DOS ……………………………………………………… 270
10.4 小 結(jié)………………………………………………………………………………… 271
第11章 μC/OS II可裁剪性的實(shí)現(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