嵌入式實時操作系統(tǒng)μC/OS-II原理及應用(第4版)
定 價:42 元
- 作者:任哲,房紅征,曹靖 著
- 出版時間:2016/9/1
- ISBN:9787512422087
- 出 版 社:北京航空航天大學出版社
- 中圖法分類:TP316.2
- 頁碼:311
- 紙張:膠版紙
- 版次:4
- 開本:16K
μC/OSII是一個源碼開放的嵌入式實時操作系統(tǒng)的內核。本書詳細地介紹了嵌入式實時操作系統(tǒng)μC/OSII內核的任務的管理和調度、系統(tǒng)時鐘和節(jié)拍服務、時間管理、中斷、任務的通信和同步、內存的簡單管理原理。為幫助讀者理解書中的內容,本書給出了大量的實例。最后,還介紹了μC/OSII的移植方法。為了學習上的方便,第3版還增加了使用集成開發(fā)環(huán)境BC45和VC6.0編譯μC/OSII的相關內容。第4版主要對第3版前3章做了較大的修改,增加了普通操作系統(tǒng)和嵌入式操作系統(tǒng)的區(qū)別,隊列、堆棧、計算機中斷等特殊問題,并重新編寫了任務的概念等內容。
本書適合高等院校計算機、電子技術、自動化技術、儀器儀表等信息類專業(yè)教學使用,也適合對嵌入式操作系統(tǒng)感興趣的工程技術人員閱讀參考。
第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)的任務及嵌入式實時操作系統(tǒng)……………………………………… 11
1.3 嵌入式實時操作系統(tǒng)μC/OS II簡介……………………………………………… 12
1.4 通用操作系統(tǒng)與嵌入式操作系統(tǒng)的異同……………………………………………… 13
1.5 小 結…………………………………………………………………………………… 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ù)及回調函數(shù)……………………………………………… 41
2.5 typedef常用方法……………………………………………………………………… 43
2.6 常用數(shù)據(jù)類型及數(shù)據(jù)結構……………………………………………………………… 45
2.6.1 控制塊……………………………………………………………………………… 46
2.6.2 同類控制塊的登記造冊…………………………………………………………… 50
2.6.3 隊列與堆棧………………………………………………………………………… 52
2.6.4 位 圖……………………………………………………………………………… 54
2.7 程序流程轉移的中斷實現(xiàn)方法………………………………………………………… 55
2.8 小 結…………………………………………………………………………………… 56
2.9 練習題…………………………………………………………………………………… 56
第3章 μC/OS II中的任務………………………………………………………………… 57
3.1 任務的基本概念………………………………………………………………………… 57
3.1.1 任務及其種類……………………………………………………………………… 57
3.1.2 任務的狀態(tài)………………………………………………………………………… 59
3.1.3 用戶任務代碼的一般結構………………………………………………………… 60
3.1.4 系統(tǒng)任務…………………………………………………………………………… 63
3.1.5 任務的優(yōu)先權及優(yōu)先級別………………………………………………………… 64
3.2 任務堆! 65
3.2.1 任務堆棧的創(chuàng)建…………………………………………………………………… 65
3.2.2 任務堆棧的初始化………………………………………………………………… 67
3.3 任務控制塊及其鏈表…………………………………………………………………… 68
3.3.1 任務控制塊結構…………………………………………………………………… 68
3.3.2 任務控制塊鏈表…………………………………………………………………… 69
3.3.3 任務控制塊的初始化……………………………………………………………… 71
3.4 任務就緒表及任務調度………………………………………………………………… 72
3.4.1 任務就緒表結構…………………………………………………………………… 72
3.4.2 對任務就緒表的操作……………………………………………………………… 74
3.4.3 任務調度…………………………………………………………………………… 76
3.5 任務的創(chuàng)建……………………………………………………………………………… 81
3.5.1 用函數(shù)OSTaskCreate()創(chuàng)建任務……………………………………………… 81
3.5.2 用函數(shù)OSTaskCreateExt()創(chuàng)建任務…………………………………………… 83
3.5.3 創(chuàng)建任務的一般方法……………………………………………………………… 83
3.6 任務的掛起和恢復……………………………………………………………………… 90
3.6.1 掛起任務…………………………………………………………………………… 90
3.6.2 恢復任務…………………………………………………………………………… 90
3.7 其他任務管理函數(shù)……………………………………………………………………… 96
3.7.1 任務優(yōu)先級別的修改……………………………………………………………… 96
3.7.2 任務的刪除………………………………………………………………………… 97
3.7.3 查詢任務的信息………………………………………………………………… 103
3.8 μC/OS II的初始化和任務的啟動………………………………………………… 103
3.8.1 μC/OS II的初始化…………………………………………………………… 103
3.8.2 μC/OS II的啟動……………………………………………………………… 105
3.9 小 結………………………………………………………………………………… 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 中斷級任務切換函數(shù)…………………………………………………………… 113
4.1.3 應用程序中的臨界段…………………………………………………………… 113
4.2 μC/OS II的時鐘…………………………………………………………………… 115
4.3 時間管理……………………………………………………………………………… 122
4.3.1 任務的延時……………………………………………………………………… 122
4.3.2 取消任務的延時………………………………………………………………… 123
4.3.3 獲取和設置系統(tǒng)時間…………………………………………………………… 128
4.4 小 結………………………………………………………………………………… 130
4.5 練習題………………………………………………………………………………… 131
第5章 任務的同步與通信…………………………………………………………………… 132
5.1 任務的同步和事件…………………………………………………………………… 132
5.1.1 任務間的同步…………………………………………………………………… 132
5.1.2 事 件…………………………………………………………………………… 133
5.2 事件控制塊及事件處理函數(shù)………………………………………………………… 145
5.2.1 事件控制塊的結構……………………………………………………………… 145
5.2.2 操作事件控制塊的函數(shù)………………………………………………………… 147
5.2.3 空事件控制塊鏈表……………………………………………………………… 149
5.3 信號量及其操作……………………………………………………………………… 150
5.3.1 信號量…………………………………………………………………………… 150
5.3.2 信號量的操作…………………………………………………………………… 151
5.4 互斥型信號量和任務優(yōu)先級反轉…………………………………………………… 160
5.4.1 任務優(yōu)先級的反轉現(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 小 結………………………………………………………………………………… 184
5.8 練習題………………………………………………………………………………… 185
第6章 信號量集……………………………………………………………………………… 186
6.1 信號量集的結構……………………………………………………………………… 186
6.1.1 基本概念………………………………………………………………………… 186
6.1.2 信號量集的結構組成…………………………………………………………… 187
6.1.3 對等待任務鏈表的操作………………………………………………………… 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 小 結………………………………………………………………………………… 203
6.4 練習題………………………………………………………………………………… 203
第7章 動態(tài)內存管理………………………………………………………………………… 204
7.1 內存控制塊…………………………………………………………………………… 204
7.1.1 可動態(tài)分配內存的劃分………………………………………………………… 204
7.1.2 內存控制塊OS_MEM 的結構………………………………………………… 205
7.1.3 空內存控制塊鏈表……………………………………………………………… 206
7.2 動態(tài)內存的管理……………………………………………………………………… 206
7.2.1 創(chuàng)建動態(tài)內存分區(qū)……………………………………………………………… 206
7.2.2 請求獲得一個內存塊…………………………………………………………… 208
7.2.3 釋放一個內存塊………………………………………………………………… 211
7.2.4 查詢一個內存分區(qū)的狀態(tài)……………………………………………………… 215
7.3 小 結………………………………………………………………………………… 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 任務堆棧的設計………………………………………………………………… 222
8.2 在51系列單片機上移植μC/OS II ……………………………………………… 223
8.2.1 文件OS_CPU.H 的修改……………………………………………………… 223
8.2.2 任務堆棧的設計………………………………………………………………… 224
8.2.3 文件OS_CPU_C.C的修改…………………………………………………… 231
8.2.4 幾點注意事項…………………………………………………………………… 232
8.3 應用舉例……………………………………………………………………………… 232
8.3.1 LED數(shù)碼顯示器的驅動程序…………………………………………………… 232
8.3.2 串行接口的應用………………………………………………………………… 234
8.4 小 結………………………………………………………………………………… 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 關于中斷及時鐘節(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 的應用程序實例……………………………… 259
9.4 小 結………………………………………………………………………………… 261
9.5 練習題………………………………………………………………………………… 261
第10章 μC/OS II在80x86上的移植…………………………………………………… 262
10.1 概 述………………………………………………………………………………… 262
10.2 任務切換……………………………………………………………………………… 263
10.2.1 任務切換函數(shù)OSCtxSw() …………………………………………………… 263
10.2.2 任務切換宏OS_TASK_SW()………………………………………………… 265
10.2.3 中斷級任務切換函數(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)時鐘中斷服務程序…………………………………………… 269
10.3.4 μC/OS II系統(tǒng)時鐘中斷向量的安裝………………………………………… 269
10.3.5 由μC/OS II返回DOS ……………………………………………………… 270
10.4 小 結………………………………………………………………………………… 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