第2章 实时系统概念
2.0 前后台系统 (Foreground/Background System)
2.1 代码的临界段
2.2 资源
2.3 共享资源
2.4 多任务
2.5 任务
2.6 任务切换(Context Switch or Task Switch)
2.7 内核(Kernel)
2.8 调度(Scheduler)
2.9 不可剥夺型内核 (Non-Preemptive Kernel)
2.10 可剥夺型内核
2.11 可重入性(Reentrancy)
2.12 时间片轮番调度法
2.13 任务优先级
2.14 2.14静态优先级
2.15 动态优先级
2.16 优先级反转
2.17 任务优先级分配
2.18 互斥条件
2.18.1 关中断和开中断
2.18.2 测试并置位
2.18.3 禁止,然后允许任务切换
2.18.4 信号量(Semaphores)
2.19 死锁(或抱死)(Deadlock (or Deadly Embrace))
2.20 同步
2.21 事件标志(Event Flags)
2.22 任务间的通讯(Intertask Communication)
2.23 消息邮箱(Message Mail boxes)
2.24 消息队列(Message Queue)
2.25 中断
2.26 中断延迟
2.27 中断响应
2.28 中断恢复时间(Interrupt Recovery)
2.29 中断延迟、响应和恢复
2.30 中断处理时间
2.31 非屏蔽中断(NMI)
2.32 时钟节拍(Clock Tick)
2.33 对存储器的需求
2.34 使用实时内核的优缺点
2.35 实时系统小结
第3章 内核结构
3.0 临界段(Critical Sections)
3.1 任务
3.2 任务状态
3.3 任务控制块(Task Control Blocks, OS _TCBs)
3.4 就绪表(Ready List)
3.5 任务调度(Task Scheduling)
3.6 给调度器上锁和开锁(Locking and UnLocking the Scheduler)
3.7 空闲任务(Idle Task)
3.8 统计任务
3.9 μC/OS中的中断处理
3.10 时钟节拍
3.11 μC/OS-Ⅱ初始化
3.12 μC/OS-Ⅱ的启动
3.13 获取当前μC/OS-Ⅱ的版本号
3.14 OSEvent???()函数
第4章 任务管理
4.0 建立任务,OSTaskCreate()
4.1 建立任务,OSTaskCreateExt()
4.2 任务堆栈
4.3 堆栈检验,OSTaskStkChk()
4.4 删除任务,OSTaskDel()
4.5 请求删除任务,OSTaskDelReq()
4.6 改变任务的优先级,OSTaskChangePrio()
4.7 挂起任务,OSTaskSuspend()
4.8 恢复任务,OSTaskResume()
4.9 获得有关任务的信息,OSTaskQuery()
第5章 时间管理
5.0 任务延时函数,OSTimeDly()
5.1 按时分秒延时函数 OSTimeDlyHMSM()
5.2 让处在延时期的任务结束延时,OSTimeDlyResume()
5.3 系统时间,OSTimeGet()和OSTimeSet()
第6章 任务之间的通讯与同步
6.0 事件控制块ECB
6.1 初始化一个事件控制块,OSEventWaitListInit()
6.2 使一个任务进入就绪态,OSEventTaskRdy()
6.3 使一个任务进入等待某事件发生状态, OSEventTaskWait()
6.4 由于等待超时而将任务置为就绪态, OSEventTO()
6.5 信号量
6.5.1 建立一个信号量, OSSemCreate()
6.5.2 等待一个信号量, OSSemPend()
6.5.3 发送一个信号量, OSSemPost()
6.5.4 无等待地请求一个信号量, OSSemAccept()
6.5.5 查询一个信号量的当前状态, OSSemQuery()
6.6 邮箱
6.6.1 建立一个邮箱,OSMboxCreate()
6.6.2 等待一个邮箱中的消息,OSMboxPend()
6.6.3 发送一个消息到邮箱中,OSMboxPost()
6.6.4 无等待地从邮箱中得到一个消息, OSMboxAccept()
6.6.5 查询一个邮箱的状态, OSMboxQuery()
6.6.6 用邮箱作二值信号量
6.6.7 用邮箱实现延时,而不使用OSTimeDly()
6.7 消息队列
6.7.1 建立一个消息队列,OSQCreate()
6.7.2 等待一个消息队列中的消息,OSQPend()
6.7.3 向消息队列发送一个消息(FIFO),OSQPost()
6.7.4 向消息队列发送一个消息(后进先出LIFO),OSQPostFront()
6.7.5 无等待地从一个消息队列中取得消息, OSQAccept()
6.7.6 清空一个消息队列, OSQFlush()
6.7.7 查询一个消息队列的状态,OSQQuery()
6.7.8 使用消息队列读取模拟量的值
6.7.9 使用一个消息队列作为计数信号量
第7章 内存管理
7.0 内存控制块
7.1 建立一个内存分区,OSMemCreate()
7.2 分配一个内存块,OSMemGet()
7.3 释放一个内存块,OSMemPut()
7.4 查询一个内存分区的状态,OSMemQuery()
7.5 Using Memory Partitions
7.6 等待一个内存块
第8章 9.03.02 代码临界区
8.0 方法1
8.1 方法2
8.2 目录和文件
8.3 INCLUDES.H
8.4 OS_CPU.H
8.4.1 与编译有关的数据类型s
8.4.2 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()
8.4.3 OS_STK_GROWTH
8.4.4 OS_TASK_SW()
8.4.5 OS_FAR
8.5 OS_CPU_A.ASM
8.5.1 OSStartHighRdy()
8.5.2 OSCtxSw()
8.5.3 OSIntCtxSw()
8.5.4 OSTickISR()
8.6 OS_CPU_C.C
8.6.1 OSTaskStkInit()
8.6.2 OSTaskCreateHook()
8.6.3 OSTaskDelHook()
8.6.4 OSTaskSwHook()
8.6.5 OSTaskStatHook()
8.6.6 OSTimeTickHook()
8.7 总结