ucosII详解.docx
- 文档编号:4643331
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:33
- 大小:38.50KB
ucosII详解.docx
《ucosII详解.docx》由会员分享,可在线阅读,更多相关《ucosII详解.docx(33页珍藏版)》请在冰豆网上搜索。
ucosII详解
第1章 范例--------------------------1
1.00 安装µC/OS-II---------------------------1
1.01 INCLUDES.H----------------------------2
1.02 不依赖于编译的数据类型----------------------2
1.03 全局变量-----------------------------3
1.04 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()-------------5
1.05 基于PC的服务---------------------------5
1.05.01 字符显示-----------------------------5
1.05.02 花费时间的测量--------------------------6
1.05.03 其他函数-----------------------------6
1.06 应用µC/OS-II的范例-----------------------7
1.07 例1--------------------------------8
1.07.01 main()------------------------------8
1.07.02 TaskStart()----------------------------11
1.07.03 TaskN()-----------------------------12
1.08 例2-------------------------------13
1.08.01 main()------------------------------14
1.08.02 TaskStart()----------------------------15
1.08.03 TaskN()------------------------------16
1.09 例3-------------------------------19
1.09.01 main()------------------------------20
1.09.02 任务-------------------------------21
1.09.03 注意-------------------------------24
第2章 实时系统概念--------------------------27
2.0 前后台系统(FOREGROUND/BACKGROUNDSYSTEM)------------27
2.1 代码的临界段----------------------------28
2.2 资源----------------------------------28
2.3 共享资源-------------------------------28
2.4 多任务--------------------------------28
2.5 任务---------------------------------29
2.6 任务切换(CONTEXTSWITCHORTASKSWITCH)---------------30
2.7 内核(KERNEL)---------------------------30
2.8 调度(SCHEDULER)-------------------------31
2.9 不可剥夺型内核(NON-PREEMPTIVEKERNEL)---------------31
2.10 可剥夺型内核----------------------------32
2.11 可重入性(REENTRANCY)-----------------------33
2.12 时间片轮番调度法--------------------------35
2.13 任务优先级-----------------------------35
2.14 2.14静态优先级--------------------------35
2.15 动态优先级-----------------------------35
2.16 优先级反转-----------------------------35
2.17 任务优先级分配---------------------------37
2.18 互斥条件------------------------------39
2.18.1 关中断和开中断---------------------------39
2.18.2 测试并置位-----------------------------40
2.18.3 禁止,然后允许任务切换------------------------40
2.18.4 信号量(SEMAPHORES)-------------------------41
2.19 死锁(或抱死)(DEADLOCK(ORDEADLYEMBRACE))-------------46
2.20 同步--------------------------------46
2.21 事件标志(EVENTFLAGS)-----------------------48
2.22 任务间的通讯(INTERTASKCOMMUNICATION)----------------48
2.23 消息邮箱(MESSAGEMAILBOXES)--------------------49
2.24 消息队列(MessageQueue)---------------------- 50
2.25 中断---------------------------------51
2.26 中断延迟-------------------------------51
2.27 中断响应------------------------------52 2.28 中断恢复时间(InterruptRecovery)------------------52
2.29 中断延迟、响应和恢复------------------------53
2.30 中断处理时间----------------------------53
2.31 非屏蔽中断(NMI)--------------------------54
2.32 时钟节拍(ClockTick)------------------------56
2.33 对存储器的需求---------------------------58
2.34 使用实时内核的优缺点------------------------59
2.35 实时系统小结----------------------------60
第3章 内核结构-----------------------------62
3.0 临界段(CriticalSections)---------------------62
3.1 任务--------------------------------62
3.2 任务状态------------------------------64
3.3 任务控制块(TaskControlBlocks,OS_TCBs)--------------65
3.4 就绪表(ReadyList)------------------------68
3.5 任务调度(TaskScheduling)--------------------- 71
3.6 给调度器上锁和开锁(LockingandUnLockingtheScheduler)-------72
3.7 空闲任务(IdleTask)------------------------73
3.8 统计任务------------------------------74
3.9 μC/OS中的中断处理--------------------------78
3.10 时钟节拍------------------------------82
3.11 μC/OS-Ⅱ初始化-------------------------- 84
3.12 μC/OS-Ⅱ的启动------------------------ --85
3.13 获取当前μC/OS-Ⅱ的版本号-------------------- --88
3.14 OSEvent?
?
?
()函数--------------------------89
第4章 任务管理
4.0 建立任务,OSTaskCreate()---------------------91
4.1建立任务,OSTASKCREATEEXT()-------------------------------------92
4.2任务堆栈9
4.3堆栈检验,OSTASKSTKCHK()11
4.4删除任务,OSTASKDEL()14
4.5请求删除任务,OSTASKDELREQ()17
4.6改变任务的优先级,OSTASKCHANGEPRIO()20
4.7挂起任务,OSTASKSUSPEND()23
4.8恢复任务,OSTASKRESUME()25
4.9获得有关任务的信息,OSTASKQUERY()26
第5章 时间管理
5.0任务延时函数,OSTIMEDLY()1
5.1按时分秒延时函数OSTIMEDLYHMSM()3
5.2让处在延时期的任务结束延时,OSTIMEDLYRESUME()4
5.3系统时间,OSTIMEGET()和OSTIMESET()6
第6章 任务之间的通讯与同步
6.0事件控制块ECB2
6.1初始化一个ECB块,OSEVENTWAITLISTINIT()6
6.2使一个任务进入就绪状态,OSEVENTTASKRDY()7
6.3使一个任务进入等待状态,OSEVENTTASKWAIT()9
6.4由于等待超时将一个任务置为就绪状态,OSEVENTTO()9
6.5信号量10
6.5.1 建立一个信号量,OSSemCreate()11
6.5.2 等待一个信号量,OSSemPend()12
6.5.3 发送一个信号量,OSSemPost()14
6.5.4 无等待地请求一个信号量,OSSemAccept()16
6.5.5 查询一个信号量的当前状态,OSSemQuery()17
6.6邮箱18
6.6.1 建立一个邮箱,OSMboxCreate()19
6.6.2等待一个邮箱中的消息,OSMboxPend()20
6.6.3发送一个消息到邮箱中,OSMboxPost()22
6.6.4无等待地从邮箱中得到一个消息,OSMboxAccept()24
6.6.5查询一个邮箱的状态,OSMboxQuery()25
6.6.6使用邮箱作为二值信号量26
6.6.7使用邮箱实现延时,而不使用OSTimeDly()27
6.7消息队列28
6.7.1建立一个消息队列,OSQCreate()31
6.7.2等待一个消息队列中的消息,OSQPend()33
6.7.3向消息队列发送一个消息(FIFO),OSQPost()35
6.7.4向消息队列发送一个消息(LIFO),OSQPostFront()37
6.7.5无等待地从一个消息队列中取得消息,OSQAccept()39
6.7.6清空一个消息队列,OSQFlush()40
6.7.7查询一个消息队列的状态,OSQQuery()41
6.7.8使用消息队列读取模拟量的值42
6.7.9使用一个消息队列作为计数信号量43
第7章 内存管理
7.0 内存控制块1
7.1建立一个内存分区,OSMEMCREATE()3
7.2分配一个内存块,OSMEMGET()6
7.3释放一个内存块,OSMEMPUT()7
7.4查询一个内存分区的状态,OSMEMQUERY()8
7.5USINGMEMORYPARTITIONS9
7.6等待一个内存块11
第8章移植µC/OS-Ⅱ
8.00 开发工具
8.01 目录和文件
8.02 INCLUDES.H
8.03 OS_CPU.H
8.03.01与编译器相关的数据类型
8.03.02OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()
8.03.03OS_STK_GROWTH
8.03.04OS_TASK_SW()
8.04 OS_CPU_A.ASM
8.04.01OSStartHighRdy()
8.04.02OSCtxSw()
8.04.03OSIntCtxSw()
8.04.04OSTickISR()
8.05 OS_CPU_C.C
8.05.01OSTaskStkInt()
8.05.02OSTaskCreateHook()
8.05.03OSTaskDelHook()
8.05.04OSTaskSwHook()
8.05.05OSTaskStatHook()
8.05.06OSTimeTickHook()
第9章 µC/OS-II在Intel80x86上的移植
9.00 开发工具
9.01 目录和文件
9.02 INCLUDES.H文件
9.03OS_CPU.H文件
9.03.01 数据类型
9.0302 代码临界区
第一章:
范例
在这一章里将提供三个范例来说明如何使用µC/OS-II。
笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用µC/OS-II。
在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。
这些例子曾经用BorlandC/C++编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。
这些代码实际上是在IntelPentiumIIPC(300MHz)上运行和测试过,IntelPentiumIIPC可以看成是特别快的80186。
笔者选择PC做为目标系统是由于以下几个原因:
首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。
用户只需要简单地编译、链接和执行。
其次,使用BorlandC/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86CPU兼容。
1.00安装µC/OS-II
本书附带一张软盘包括了所有我们讨论的源代码。
是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。
至少需要5Mb硬盘空间来安装uC/OS-II。
请按照以下步骤安装:
1.进入到DOS(或在Windows95下打开DOS窗口)并且指定C:
为默认驱动器。
2.将磁盘插入到A:
驱动器。
3.键入A:
INSTALL【drive】
注意『drive』是读者想要将µC/OS-II安装的目标磁盘的盘符。
INSTALL.BAT是一个DOS的批处理文件,位于磁盘的根目录下。
它会自动在读者指定的目标驱动器中建立\SOFTWARE目录并且将uCOS-II.EXE文件从A:
驱动器复制到\SOFTWARE并且运行。
µC/OS-II将在\SOFTWARE目录下添加所有的目录和文件。
完成之后INSTALL.BAT将删除uCOS-II.EXE并且将目录改为\SOFTWARE\uCOS-II\EX1_x86L,第一个例子就存放在这里。
在安装之前请一定阅读一下READ.ME文件。
当INSTALL.BAT已经完成时,用户的目标目录下应该有一下子目录:
●\SOFTWARE
这是根目录,是所有软件相关的文件都放在这个目录下。
●\SOFTWARE\BLOCKS
子程序模块目录。
笔者将例子中µC/OS-II用到的与PC相关的函数模块编译以后放在这个目录下。
●\SOFTWARE\HPLISTC
这个目录中存放的是与范例HPLIST相关的文件(请看附录D,HPLISTC和TO)。
HPLIST.C存放在\SOFTWARE\HPLISTC\SOURCE目录下。
DOS下的可执行文件(HPLIST.EXE)存放在\SOFTWARE\TO\EXE中。
●\SOFTWARE\TO
这个目录中存放的是和范例TO相关的文件(请看附录D,HPLISTC和TO)。
源文件TO.C存放在\SOFTWARE\TO\SOURCE中,DOS下的可执行文件(TO.EXE)存放在\SOFTWARE\TO\EXE中。
注意TO需要一个TO.TBL文件,它必须放在根目录下。
用户可以在\SOFTWARE\TO\EXE目录下找到TO.TBL文件。
如果要运行TO.EXE,必须将TO.TBL复制到根目录下。
●\SOFTWARE\uCOS-II
与µC/OS-II相关的文件都放在这个目录下。
●\SOFTWARE\uCOS-II\EX1_x86L
这个目录里包括例1的源代码(参见1.07,例1),可以在DOS(或Windows95下的DOS窗口)下运行。
●\SOFTWARE\uCOS-II\EX2_x86L
这个目录里包括例2的源代码(参见1.08,例2),可以在DOS(或Windows95下的DOS窗口)下运行。
●\SOFTWARE\uCOS-II\EX3_x86L
这个目录里包括例3的源代码(参见1.09,例3),可以在DOS(或Windows95下的DOS窗口)下运行。
●\SOFTWARE\uCOS-II\Ix
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ucosII 详解