初期的μc/os 内核仅仅支持 64 个任务,而最新的μc/osIII 能够支持无穷个任务, 同时对比前两代内核,μc/osIII 提出新的功能即支持时间片轮转调度,可以在同一优 先级下管理无穷个任务,同时不再需要消息邮箱,可以直接向任务发送消息和信号 量。μc/os 代码量大小为 3K-8K,μc/osII 代码量 6K-26K,μc/osIII 代码量为 6K-24K, 相比μc/os,μc/osIII 用更加精简的代码实现了更加丰富的功能,除此之外μc/osIII 还 可以在系统运行时观测事件的事件信息[7]。
μc/osIII 提供 70 个系统函数功能函数,能够充分发挥 CPU 的能力,同时μc/osIII 是定位于高端的 32 位 CPU 的 RTOS 内核,经过仔细设计,μc/osIII 是能够在 4KB RAM 资源的微控制器上运行。如表 2-4,将不同之处列于表格之中。
表 2-4 μc/osIII 革新对比
特性 μC/OS μC/OSII μC/OSIII
年份 1992 1998 2009
源代码 开源 开源 开源
可剥夺性调度 是 是 是
最大任务数 64 255 无限制
优先级相同任务数 1 1 无限制
时间片轮转调度 不支持 不支持 支持
消息邮箱 有 有 不需要
直接向任务发信号 不支持 不支持 支持
直接向任务发消息 不支持 不支持 支持
软件定时器 无 有 有
代码量 3K-8K 6K-26K 6K-24K
数据量 1K+ 1K+ 1K+
用户可定义的介入函 数 无 有 有
系统服务函数 20 90 70
任务级时钟节拍处理 无 无 有
2。4学习μc/osIII 操作系统
μc/osIII 是以一系列函数的形势为应用程序提供服务的,应用程序通过访问一个 包含大约 70 个函数的函数库就可以使用μc/osIII。
在编写任务时,必须为任务分配任务控制块,每个任务都要有属于本身的栈,可 以是动态也可以是静态。OSInit()函数用于初始化μc/osIII,μc/osIII 至少要有两个任务 即空闲任务和时钟节拍任务。空闲任务在没有就绪任务时运行,时钟节拍任务负责 时间管理。
主函数的最后一步进行的是开启内核,开始多任务管理,μc/osIII 会首先运行在调 用开启内核之前就已经创建的优先级最高的任务。应用程序中的每一个任务都必须 调用一个可以引发任务等待某事件的函数。该任务可以等候延时结束,也可以是等 待其他任务发送的信号量或者消息。 嵌入式操作系统ucOS应用μc/osIII移植到STM32F103RCT6微处理器(6):http://www.youerw.com/jisuanji/lunwen_89853.html