UCOSiii学习笔记<一>

本文介绍了UCOSIII实时操作系统的核心特性,包括其可剥夺型内核、任务堆栈、任务控制块和任务函数的组成。详细阐述了任务的五种状态——休眠、就绪、运行、等待和中断服务,并提到了系统任务的优先级分配。通过理解这些概念,读者可以更好地掌握实时操作系统的任务调度和管理机制。
摘要由CSDN通过智能技术生成

UCOSiii系统是一个可裁剪、可剥夺型的多任务内核,而且没有任务限制。UCOSiii提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。

1.可剥夺型内核:

a)  内核:负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其它任务,这个是内核的多人物管理能力,多任务管理实现了CPU资料的最大化利用,多任务管理有利于实现程序的模块化开发,能够实现复杂的实时应用。

b)可剥夺内核顾名思义就是可以剥夺其它任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。

               

2.UCOSiii中任务组成有三部分

a)任务堆栈:上下文切换的时候用来保护任务当前环境,即压栈进行现场保护(是一个结构体数组

//任务堆栈大小    
#define START_STK_SIZE         128
//任务堆栈创建
CPU_STK START_TASK_STK[START_STK_SIZE];


b)任务控制块: 用来记录任务各个属性/与任务相关信息(是一个结构体

//任务控制块创建
OS_TCB StartTaskTCB;

c)任务函数: 用户自己编写的处理函数。(是一个函数

//开始任务函数创建
void App_start_task(void *p_arg)
{
    while(1){
    }
}

3.任务的5种状态

  • 休眠: 任务已经在CPU的flash中了,但是还不受μCOSIII管理。
  • 就绪: 系统为任务分配任务控制块,并且任务在就绪表中登记,已经具备运行条件,只要再获得CPU控制权,便可立即执行。
  • 运行: 任务已经获得CPU使用权,正在运行。
  • 等待: 正在运行的任务需要等待一段时间,或者等待某个事件,这个任务就进入了等待状态,此时系统会把CPU使用权转交给其他任务。
  • 中断服务: 发生中断时,当前正在运行的任务就会被挂起,CPU转而去执行服务函数。
    任务状态转换图如图:(此图来源正点原子

4.用户程序不能使用的优先级

  这些优先级都分配给了μCOSIII的5个系统任务

  • 优先级0: 中断服务服务管理任务 OS_IntQTask()
  • 优先级1: 时钟节拍任务 OS_TickTask()
  • 优先级2: 定时任务 OS_TmrTask()
  • 优先级OS_CFG_PRIO_MAX-2: 统计任务 OS_StatTask()
  • 优先级OS_CFG_PRIO_MAX-1: 空闲任务 OS_IdleTask()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值