嵌入式操作系统ucOS应用μc/osIII移植到STM32F103RCT6微处理器(7)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

嵌入式操作系统ucOS应用μc/osIII移植到STM32F103RCT6微处理器(7)

2。4。1μc/osIII 特性

(1)源代码开放:μc/osIII 提供符合 ANSI-C 标准的源代码,μc/osIII 可能是代 码风格最简洁、干净的多任务实时内核;

(2)便捷的应用程序编程接口(API):μc/osIII 具有严格而且规范的代码规则, 同时也非常直观易懂,使用者不费力便可推测出所调用的系统函数的相关名称及参 数;

(3)可剥夺型多任务管理:μc/osIII 是可剥夺型多任务内核,执行当前最高优 先级任务;

(4)进行时间片的轮转调度:支持多个任务有着相同的优先级,当有多个优先 级任务进入就绪态时,μc/osIII 实行时间片的轮转调度这些任务,让每个不同任务运 行指定的时间长度;

(5)极短的关中断时间:μc/osIII 有很多变量需要按不可分割的操作来访问。 为了保证这种操作,μc/osIII 采用锁定调度器而不是关中断的方式来保护这些变量, 这样将关中断时间降到最短;

(6)可剪裁,可移植,可固化:可剪裁性使之可以适应更多的应用需求,可以 根据实际所需来调整μc/osIII 的代码量,μc/osIII 能被移植到不同的 CPU 构架上具有 可移植,同时μc/osIII 是针对嵌入式开发的,能够和应用程序一起固化到 ROM 中具 有可固化性;文献综述

(7)任务数目不受限制:μc/osIII 自身可以管理无数任务,但是从实际出发, 任务所能实现的个数会受到 CPU 所能使用的存储空间制约;

(8)直接向任务发送信号量:μc/osIII 允许中断服务程序或任务函数直接发送 信号量给其它的任务,避免了外部创建信号量,有效地提高了系统性能的也同时精 简了代码;

(9)任务级时钟节拍处理:μc/osIII 的时钟节拍由一个专门的任务来完成。将 延迟和超时判断放在任务级代码完成,极大减少中断延迟时间;

(10)用户可定义的介入函数:μc/osIII 开发人员可以通过改写介入函数来扩展

μc/osIII 的功能[8]。

2。4。2μc/osIII 工作步骤

启动μC/OSIII 之前,首先调用操作系统初始化函数 OSInit()进行一次初始化,主

要包含对于重要的数据结构,例如,任务控制块 TCB、就绪表等进行初始化,同时 自动生成两个基本任务即时钟节拍任务和空闲任务。接下来创建一个开始任务,最 后调用 OSStart()启动多任务管理。如图 2-2。

图 2-2 工作步骤

2。4。3 μc/osIII 中断和时间管理

中断为硬件机制,分为中断控制器和中断管理。用来告诉 CPU 产生了异步事件。 μC/OSIII 的中断服务函数要求用汇编语言编写。通常我们保持中断服务程序尽量简 短,例如,仅给任务发布信号或者消息,更复杂的功能由任务完成,这样就明显缩 短了中断响应时间,通过中断,微控制器可以在外部发生异常时实现快速处理[9]。

如图 2-3 所示,中断控制器用来接收所有中断请求。

中断请求

中断请求

中断请求

图 2-3 中断控制器

中断的控制管理器为每个中断请求设置优先级,记录未处理好的中断,当关闭 所有中断后,中断的控制管理器还可以锁存中断请求,当中断被重新允许,马上产 生中断请求。

如图 2-4 是中断管理的流程图。来`自+优-尔^论:文,网www.youerw.com +QQ752018766-

中央处理器确认中断后,首先将寄存器存入堆栈,并跳转到中断服务程序开始 处理该事件,处理过程中可能使更高优先级的任务进入就绪态,由此当中断服务执 行完成后,将直接开始执行该就绪态的任务不再返回,否则返回被打断的任务继续 运行[10]。 (责任编辑:qin)