RTOS(ucos-ii)基本概念

本文详细介绍了嵌入式实时操作系统UCOS的系统概念,包括任务管理、中断处理、进程通信、内存管理和移植细节。在UCOS中,任务调度是核心,通过任务控制块、中断服务子程序和任务切换实现多任务运行。中断具有可剥夺性,通过OSIntEnter()和OSIntExit()管理中断嵌套。通信机制如信号量、互斥量和邮箱用于任务间的同步与数据交换。此外,还探讨了GPIO和定时器的驱动。在移植过程中,涉及OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM等文件的修改。最后,通过示例展示了如何创建和管理UCOS任务。

ucos移植相关知识点

一、ucos系统

1、实时操作系统的概念

如果操作系统能使计算机系统及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,则这个操作系统就是一个实时操作系统。

实时操作系统有两个基本要求:

第一,实时系统的计算必须产生正确的结果,称为逻辑或功能正确。

第二,实时系统的计算必须在预定的时间内完成称为时间正确。

按时间正确的程度来分,实时操作系统分为硬实时操作系统和软实时操作系统。

2、任务的相关概念

在设计一个较为复杂的应用程序时,通常把一个大型任务分解成多个小任务,然后在计算机中通过运行这些小任务,最终完成大人的目的。

  • 在ucos-ii中,与上述小任务对应的程序实体就叫做”任务“,而ucos-ii就是一个能对这些小任务的运行进行管理和调度的多任务操作系统。

  • 在代码上看,任务就是一个函数。

  • 从任务的存储结构上看,分为:任务控制块、任务堆栈、任务代码,三个部分

  • 任务的控制块

任务控制块是关联了任务代码的程序控制块,它记录了各个属性;

  • 任务的堆栈

任务堆栈则用来保存任务的工作环境;

请添加图片描述

  • 任务的链表

链表对任务进行管理;
在这里插入图片描述

  • ucos-ii的任务有两种:用户任务和系统任务

    • 用户任务

    由应用程序设计者编写的任务,且是为了解决应用问题而编写的。

    • 系统任务(两个系统任务:空闲任务和统计任务)

    为应用程序提供某种服务或为系统本身服务的。

3、任务调度的相关概念

任务调度为系统中处于就绪状态的任务分配CPU是多任务操作系统的核心工作。

这项工作设计两项技术:
一是判断哪些任务处于就绪状态(OSTimeTick(););
二是进行任务调度(PendSV_Handler)。

所谓任务调度,就是通过一个算法在就绪任务中确定应该马上运行的任务,操作系统用于负责这项工作的程序模块叫调度器

  • 任务就绪表

    它登记了系统中所有处于就绪状态的任务,每个任务在位图中占据一个二进位,该位置的状态(0或1)就表示任务是否处于就绪状态。

  • 登记

当某个任务处于就绪状态时,系统将该任务登记在任务就绪表中,即在就绪表中将该任务的对应位置1。

  • 注销

当某个任务需要脱离就绪状态时,系统在就绪表中将该任务的位置0。

  • 调度器

有两种:

一种是任务级的调度器,由函数OSSched()实现。

一种是中断级的调度器,由OSIntExt()实现。

  • OS_TASK_SW() 任务切换宏

其实任务切换的工作是靠OSCtxsw()来完成的,它的工作:

  1. 把被中止的任务的断点指针保存到任务堆栈中;

  2. 把CPU通用寄存器的内容保存到任务堆栈中;

  3. 把被中止任务的任务堆栈指针当前值保存到该任务的任务控制块的OSTCBStkPtr中;

  4. 获得待运行任务的任务控制块;

  5. 使CPU通过任务控制块获得待运行任务的任务堆栈指针;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值