前言1
概述7
第1章 初識μC/OSII 1
1.00 安裝 μC/OSII 1
1.01 范例11
1.02 范例210
1.03 范例320
1.04 范例430
第2章 實(shí)時(shí)系統(tǒng)概念34
2.00 前/后臺系統(tǒng)34
2.01 代碼的臨界段35
2.02 資源36
2.03 共享資源36
2.04 多任務(wù)36
2.05 任務(wù)36
2.06 任務(wù)切換38
2.07 內(nèi)核38
2.08 調(diào)度39
2.09 不可剝奪型內(nèi)核39
2.10 可剝奪型內(nèi)核40
2.11 可重入函數(shù)42
2.12 時(shí)間片輪番調(diào)度法44
2.13 任務(wù)優(yōu)先級44
2.14 靜態(tài)優(yōu)先級44
2.15 動態(tài)優(yōu)先級44
2.16 優(yōu)先級反轉(zhuǎn)44
2.17 任務(wù)優(yōu)先級分配47
2.18 互斥條件49
2.18.01 關(guān)中斷和開中斷49
2.18.02 測試并置位操作50
2.18.03 禁止,然后允許任務(wù)切換50
2.18.04 信號量51
2.19 死鎖55
2.20 同步56
2.21 事件標(biāo)志58
2.22 任務(wù)間通信59
2.23 消息郵箱59
2.24 消息隊(duì)列60
2.25 中斷61
2.26 中斷延遲62
2.27 中斷響應(yīng)62
2.28 中斷恢復(fù)時(shí)間63
2.29 中斷延遲. 響應(yīng)及恢復(fù)64
2.30 中斷處理時(shí)間66
2.31 非屏蔽中斷66
2.32 時(shí)鐘節(jié)拍67
2.33 對存儲器的需求69
2.34 使用實(shí)時(shí)內(nèi)核的優(yōu). 缺點(diǎn)70
2.35 實(shí)時(shí)系統(tǒng)小結(jié)71
第3章 內(nèi)核結(jié)構(gòu)72
3.00 臨界段, OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()73
3.01 任務(wù)76
3.02 任務(wù)狀態(tài)78
3.03 任務(wù)控制塊(OS_TCB)80
3.04 就緒表88
3.05 任務(wù)調(diào)度91
3.06 任務(wù)級的任務(wù)切換, OS_TASK_SW()92
3.07 給調(diào)度器上鎖和開鎖96
3.08 空閑任務(wù)97
3.09 統(tǒng)計(jì)任務(wù)98
3.10 μC/OSII中的中斷103
3.11 時(shí)鐘節(jié)拍107
3.12 μC/OSII初始化111
3.13 μC/OSII的啟動113
3.14 獲取當(dāng)前μC/OSII的版本號115
第4章 任務(wù)管理116
4.00 建立任務(wù), OSTaskCreate()117
4.01 建立任務(wù), OSTaskCreateExt()119
4.02 任務(wù)堆棧122
4.03 堆棧檢驗(yàn), OSTaskStkChk()125
4.04 刪除任務(wù), OSTaskDel()128
4.05 請求刪除任務(wù), OSTaskDelReq()132
4.06 改變?nèi)蝿?wù)的優(yōu)先級, OSTaskChangePrio()135
4.07 掛起任務(wù), OSTaskSuspend()138
4.08 恢復(fù)任務(wù), OSTaskResume()140
4.09 獲得任務(wù)的信息, OSTaskQuery()142
第5章 時(shí)間管理144
5.00 任務(wù)延時(shí)函數(shù), OSTimeDly()144
5.01 按時(shí). 分. 秒延時(shí)函數(shù), OSTimeDlyHMSM()146
5.02 恢復(fù)延時(shí)的任務(wù), OSTimeDlyResume()149
5.03 系統(tǒng)時(shí)間, OSTimeGet()和OSTimeSet()150
第6章 事件控制塊152
6.00 將任務(wù)置于等待事件的任務(wù)列表156
6.01 從等待事件的任務(wù)列表中使任務(wù)脫離等待狀態(tài)156
6.02 在等待事件的任務(wù)列表中查找優(yōu)先級最高的任務(wù)157
6.03 空余事件控制塊鏈表159
6.04 初始化一個(gè)事件控制塊, OS_EventWaitListInit()159
6.05 使一個(gè)任務(wù)進(jìn)入就緒態(tài), OS_EventTaskRdy()161
6.06 使一個(gè)任務(wù)進(jìn)入等待某事件發(fā)生狀態(tài), OS_EventTaskWait()163
6.07 由于等待超時(shí)而將任務(wù)置為就緒態(tài), OS_EventTO()163
第7章 信號量管理165
7.00 建立一個(gè)信號量, OSSemCreate()166
7.01 刪除一個(gè)信號量, OSSemDel()168
7.02 等待一個(gè)信號量, OSSemPend()171
7.03 發(fā)出一個(gè)信號量, OSSemPost()173
7.04 無等待地請求一個(gè)信號量, OSSemAccept()175
7.05 查詢一個(gè)信號量的當(dāng)前狀態(tài), OSSemQuery()176
第8章 互斥型信號量管理179
8.00 建立一個(gè)互斥型信號量, OSMutexCreate()182
8.01 刪除一個(gè)互斥型信號量, OSMutexDel()185
8.02 等待一個(gè)互斥型信號量(掛起), OSMutexPend()187
8.03 釋放一個(gè)互斥型信號量, OSMutexPost()191
8.04 無等待地獲取互斥型信號量(任務(wù)不掛起), OSMutexAccept()193
8.05 獲取互斥型信號量的當(dāng)前狀態(tài), OSMutexQuery() 195
第9章 事件標(biāo)志組管理198
9.00 深入事件標(biāo)志組199
9.01 建立一個(gè)事件標(biāo)志組, OSFlagCreate()202
9.02 刪除一個(gè)事件標(biāo)志組, OSFlagDel()204
9.03 等待事件標(biāo)志組的事件標(biāo)志位, OSFlagPend()206
9.04 置位或清0事件標(biāo)志組中的事件標(biāo)志, OSFlagPost()214
9.05 無等待地獲得事件標(biāo)志組中的事件標(biāo)志, OSFlagAccept()223
9.06 查詢事件標(biāo)志組的狀態(tài), OSFlagQuery()226
第10章 消息郵箱管理228
10.00 建立一個(gè)郵箱, OSMboxCreate()229
10.01 刪除一個(gè)郵箱, OSMboxDel()231
10.02 等待郵箱中的消息, OSMboxPend()234
10.03 向郵箱發(fā)送一則消息, OSMboxPost()236
10.04 向郵箱發(fā)送一則消息, OSMboxPostOpt()238
10.05 無等待地從郵箱中得到一則消息, OSMboxAccept()240
10.06 查詢一個(gè)郵箱的狀態(tài), OSMboxQuery()241
10.07 用郵箱作為二值信號量243
10.08 用郵箱實(shí)現(xiàn)延時(shí), 而不使用OSTimeDly()243
第11章 消息隊(duì)列管理245
11.00 建立一個(gè)消息隊(duì)列, OSQCreate()249
11.01 刪除一個(gè)消息隊(duì)列, OSQDel()251
11.02 等待消息隊(duì)列中的消息, OSQPend()253
11.03 向消息隊(duì)列發(fā)送一則消息(FIFO), OSQPost()256
11.04 向消息隊(duì)列發(fā)送一則消息(LIFO), OSQPostFront()258
11.05 向消息隊(duì)列發(fā)送一則消息(FIFO或LIFO), OSQPostOpt()259
11.06 無等待地從消息隊(duì)列中獲得消息, OSQAccept()262
11.07 清空消息隊(duì)列, OSQFlush()263
11.08 獲取消息隊(duì)列的狀態(tài), OSQQuery()264
11.09 使用消息隊(duì)列讀取模擬量的值267
11.10 消息隊(duì)列用做計(jì)數(shù)型信號量268
第12章 內(nèi)存管理270
12.00 內(nèi)存控制塊271
12.01 建立一個(gè)內(nèi)存分區(qū), OSMemCreate()272
12.02 分配一個(gè)內(nèi)存塊, OSMemGet()275
12.03 釋放一個(gè)內(nèi)存塊, OSMemPut()277
12.04 查詢一個(gè)內(nèi)存分區(qū)的狀態(tài), OSMemQuery()278
12.05 使用內(nèi)存分區(qū)279
12.06 等待內(nèi)存分區(qū)中的一個(gè)內(nèi)存塊281
第13章 移植μC/OSII283
13.00 開發(fā)工具286
13.01 目錄和文件286
13.02 INCLUDES.H287
13.03 OS_CPU.H287
13.03.01 與編譯器相關(guān)的數(shù)據(jù)類型289
13.03.02 OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()289
13.03.03 OS_STK_GROWTH293
13.03.04 OS_TASK_SW()293
13.04 OS_CPU_C.C294
13.04.01 OSTaskStkInit()294
13.04.02 OSTaskCreateHook()298
13.04.03 OSTaskDelHook()298
13.04.04 OSTaskSwHook()299
13.04.05 OSTaskStatHook()299
13.04.06 OSTimeTickHook()299
13.04.07 OSTCBInitHook()299
13.04.08 OSTaskIdleHook()300
13.04.09 OSInitHookBegin()301
13.04.10 OSInitHookEnd()301
13.05 OS_CPU_A.ASM301
13.05.01 OSStartHighRdy()301
13.05.02 OSCtxSw()302
13.05.03 OSTickISR()304
13.05.04 OSIntCtxSw()306
13.06 測試移植代碼307
13.06.01 確保C編譯器. 匯編編譯器及鏈接器正常工作307
13.06.02 驗(yàn)證OSTaskStkInit()和 OSStartHighRdy()函數(shù)311
13.06.03 驗(yàn)證OSCtxSw()函數(shù)313
13.06.04 驗(yàn)證OSIntCtxSw( )和 OSTickISR()函數(shù)316
第14章 μC/OSII在80x86上的移植333
14.00 開發(fā)工具335
14.01 目錄和文件336
14.02 INCLUDES.H文件336
14.03 OS_CPU.H文件337
14.03.01 OS_CPU.H, 數(shù)據(jù)類型338
14.03.02 OS_CPU.H, OS_ENTER_CRITICAL()及OS_EXIT_CRITICAL()338
14.03.03 OS_CPU.H, 堆棧方向340
14.03.04 OS_CPU.H和OS_TASK_SW()340
14.03.05 OS_CPU.H, 時(shí)鐘節(jié)拍頻率340
14.03.06 OS_CPU.H,浮點(diǎn)仿真341
14.04 OS_CPU_C.C文件341
14.04.01 任務(wù)堆棧初始化函數(shù)OSTaskStkInit()342
14.04.02 浮點(diǎn)仿真任務(wù)棧初始化函數(shù)OSTaskStkInit_FPE_x86()344
14.04.03 任務(wù)建立接口函數(shù)OSTaskCreateHook()350
14.04.04 任務(wù)刪除接口函數(shù)OSTaskDelHook()351
14.04.05 任務(wù)切換接口函數(shù)OSTaskSwHook()351
14.04.06 空閑任務(wù)接口函數(shù)OSTaskIdleHook()351
14.04.07 統(tǒng)計(jì)任務(wù)接口函數(shù)OSTaskStatHook()351
14.04.08 時(shí)鐘節(jié)拍接口函數(shù) OSTimeTickHook()352
14.04.09 系統(tǒng)初始化開始接口函數(shù)OSInitHookBegin()352
14.04.10 系統(tǒng)初始化結(jié)束接口函數(shù)OSInitHookEnd()352
14.04.11 控制塊初始化接口函數(shù) OSTCBInitHook()353
14.05 OS_CPU_A.ASM文件353
14.05.01 OSStartHighRdy() 353
14.05.02 OSCtxSw()355
14.05.03 OSIntCtxSw()357
14.05.04 OSTickISR()360
14.06 內(nèi)存占用366
第15章 μC/OSII在帶有硬件浮點(diǎn)運(yùn)算單元的80x86上的移植372
15.00 開發(fā)工具372
15.01 目錄和文件374
15.02 INCLUDES.H文件375
15.03 OS_CPU.H文件375
15.03.01 OS_CPU.H, 數(shù)據(jù)類型376
15.03.02 OS_CPU.H, OS_ENTER_CRITICAL()及OS_EXIT_CRITICAL()376
15.03.03 OS_CPU.H, 堆棧方向376
15.03.04 OS_CPU.H, OS_TASK_SW()377
15.03.05 OS_CPU.H, 時(shí)鐘節(jié)拍頻率377
15.03.06 OS_CPU.H, 浮點(diǎn)函數(shù)377
15.04 OS_CPU_C.C文件378
15.04.01 任務(wù)堆棧初始化函數(shù)OSTaskStkInit()378
15.04.02 浮點(diǎn)處理單元初始化函數(shù)OSFPInit()380
15.04.03 任務(wù)建立接口函數(shù)OSTaskCreateHook()381
15.04.04 任務(wù)刪除接口函數(shù)OSTaskDelHook()382
15.04.05 任務(wù)切換接口函數(shù)OSTaskSwHook()384
15.04.06 空閑任務(wù)接口函數(shù)OSTaskIdleHook()385
15.04.07 統(tǒng)計(jì)任務(wù)接口函數(shù)OSTaskStatHook()385
15.04.08 時(shí)鐘節(jié)拍接口函數(shù) OSTimeTickHook()385
15.04.09 系統(tǒng)初始化開始接口函數(shù)OSInitHookBegin()386
15.04.10 系統(tǒng)初始化結(jié)束接口函數(shù) OSInitHookEnd() 386
15.04.11 控制塊初始化接口函數(shù)OSTCBInitHook() 386
15.05 OS_CPU_A.ASM文件386
15.05.01 OSStartHighRdy()387
15.05.02 OSCtxSw()387
15.05.03 OSIntCtxSw()390
15.05.04 OSTickISR()393
15.05.05 OSFPSave()394
15.05.06 OSFPRestore()395
15.06 內(nèi)存占用396
第16章 μC/OSII參考手冊398
第17章 μC/OSII配置手冊509
17.00 雜項(xiàng)509
17.01 事件標(biāo)志512
17.02 消息郵箱512
17.03 內(nèi)存管理513
17.04 互斥型信號量513
17.05 消息隊(duì)列514
17.06 信號量515
17.07 任務(wù)管理515
17.08 時(shí)鐘管理516
17.09 函數(shù)概述517
第18章 PC中的功能函數(shù)520
18.00 字符顯示520
18.01 保存和恢復(fù)DOS的環(huán)境設(shè)置523
18.02 程序運(yùn)行時(shí)間的測量525
18.03 其他函數(shù)525
18.04 接口函數(shù)526
18.05 參考文獻(xiàn)544
附錄A C語言編程規(guī)約545
A.01 文件頭545
A.02 文件包含546
A.03 標(biāo)志符命名法547
A.04 縮寫. 略語及助記符548
A.05 注解550
A.06 定義語句550
A.07 數(shù)據(jù)類型551
A.08 局部變量552
A.09 函數(shù)原型552
A.10 函數(shù)聲明553
A.11 縮進(jìn)格式554
A.12 語句和表達(dá)式556
A.13 結(jié)構(gòu)和聯(lián)合557
A.14 參考文獻(xiàn)558
附錄B μC/OSII的使用許可證559
B.01 用于學(xué)院和大學(xué)教學(xué)559
B.02 用于商業(yè)目的559
附錄C μC/OSII速查手冊560
附錄D 工具程序TO574
附錄E 參考文獻(xiàn)576
附錄F 本書所附光盤578
F.01 文件和目錄579