uCOS-III学习笔记

前一段时间笔者学习uCOS-III,第一次接触OS这个概念吧。下面把个人的学习笔记分享出来,仅供参考。


1、前后台系统:后台程序是一个死循环,也称为“任务级”,前台程序则是中断服务程序,也称为“中断级”;一般的低成本应用多采用这种程序结构。

2、实时内核:仅为一段软件代码,它把系统功能划分为多个任务,每个任务只完成特定的一个功能,通常都为死循环;CPU在任意时刻只能执行一个任务,但每个任务都认为自己在独自使用整个CPU,由于处理器速度非常快,任务切换的速度也非常快,所以看起来几乎多个任务同时被执行;对多任务的管理就是实时内核所要做的工作,实现CPU资源的最大化利用。

3、uC/OS-III是一个可剥夺型内核(抢占式内核,Preemptive Kernel),它总是执行当前就绪任务中优先级最高的那个;uC/OS-III被设计用于32位处理器;uC/OS-III至少需要4KB RAM资源的微控制器上运行

4、uC/OS-III的特性:

  • l   同优先级任务的时间片轮转调度
  • l   任务数目不受限制
  • l   优先级数目不受限制
  • l   内核对象数目不受限制
  • l   可嵌套的任务挂起(suspension),嵌套挂起深度最大可达250层
  • l   直接向任务发送信号
  • l   直接向任务发送消息
  • l   任务级时钟节拍处理

5、临界段代码:不可被打断的代码(在运行这些代码时,需要关闭中断,运行完后再开启)。有两种方式保护临界段代码:1、关中断;2、调度器上锁。两种方法均可以测得中断关闭时间

6、任务的类型有两种:运行至完成型无限循环型(大多数嵌入式系统采用这种);任务与C函数不同,任务不允许返回;在创建一个任务时,必须为任务分配一个任务控制块(OS_TCB);每一个任务都要有属于自己的栈(类型为CPU_STK);每一个任务都必须调用一个可以引发任务“等待某事件”的函数,比如一段延迟结束(OSTimeDly()或OSTimeDlyHMSM()),在等待一个事件时,它不会占用CPU时间,这是与前后台系统不同的地方;任务的三个重要参数:任务控制模块TCB、优先级、栈空间(存放局部变量、函数调用返回地址、ISR嵌套。如果出现一些很奇怪的结果,首先怀疑占空间是否给小了);每个任务都有自己独立的CPU寄存器

7、uC/OS-III 允许任务停止自身或者停止另外的任务。停止一个任务意味着这个任务将不再执行直到被其他的任务恢复。停止可以被嵌套到250级。换句话说,一个任务可以停止另外的任务多达250次。当然,这个任务必须被恢复同等次数才有资格再次获得 CPU。

8、OSInit()会创建2~5个任务,其中空闲任务(OS_IdleTask())和时钟节拍任务(OS_TickTask())是必须要创建的2个任务,其他的统计任务(OS_StatTask())、定时任务

  • 22
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值