UCOSIII学习笔记(一)UCOSIII简介、官方例程主要文件说明

UCOSIII学习笔记(一)

文章目录

  • UCOSIII学习笔记(一)
    • UCOSIII简介
      • 前后台系统
      • RTOS系统
      • 可剥夺型内核
    • UCOSIII内核文件
    • 官方例程主要文件说明
      • uC/OS-III中独立于CPU的源文件
          • \Cfg\Template
          • \Source
      • μC/OS-III,CPU专用源代码
          • \compiler
      • μC/CPU, CPU专用源代码
          • \uC-CPU
          • \Cfg\Template
          • \compiler
      • μC/LIB,便携式库功能
          • \uC-LIB
          • \Cfg\Template
          • \Ports\Architecture\Compiler

UCOSIII简介

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

前后台系统

早期嵌入式开发没有嵌入式操作系统的概念 ,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念。通常把程序分为两部分:前台系统和后台系统。
简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统。中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级

UCOSIII学习笔记(一)UCOSIII简介、官方例程主要文件说明_第1张图片

RTOS系统

RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。
在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。

可剥夺型内核

RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。

UCOSIII学习笔记(一)UCOSIII简介、官方例程主要文件说明_第2张图片

UCOSIII内核文件

UCOSIII学习笔记(一)UCOSIII简介、官方例程主要文件说明_第3张图片

(1)应用代码包括与工程、产品相关文件。为了方便,这些被简单地叫做APP.C 和APP.H。

(2)半导体制造商通常以源代码形式提供库函数,以访问其CPU或MCU上的外围设备。

(3)板级支持包(BSP)是通常编写为与目标板上的外围设备接口的代码。 例如,此类代码可以打开和关闭LED,打开和关闭继电器或读取开关,温度传感器等。

(4)这是与μC/ OS-III处理器无关的代码。 该代码使用高度可移植的ANSI C编写。

(5)这是适用于不同CPU架构的μC/ OS-III代码,称为端口,在名为port 的文件夹中。

(6)在Micriμm,我们封装了CPU功能。 这些文件定义了用于禁用和启用中断的函数,CPU _ ??? 数据类型要独立于所使用的CPU和编译器以及更多功能,在编译时用到,而且可能非常有用。

(7)uC/LIB 是一系列的源文件,提供了常用基本的功能,如内存拷贝,字符串,ASCII 相关的函数。一些可以代替编译器提供的stdlib 的功能。提供这些文件是为了确保它们可以在应用程序之间(尤其是在编译器之间)完全可移植。uC/OS-III 不需要这些文件,但是uC/CPU 需要。

(8)uC/OS-III 功能的配置文件(OS_CFG.H)包含在应用中,OS_CFG_APP.H 定义了uC/OS-III 所需的变量类型大小、数据的结构、空闲任务堆栈的大小、时钟速率、内存池大小等。

官方例程主要文件说明

uC/OS-III中独立于CPU的源文件

\Cfg\Template

此目录包含要复制到项目目录的配置文件示例。 然后,您将修改这些文件以适合应用程序的需求。

文件名 作用
os_app_hooks.c 显示了如何编写由μC/OS-III调用的挂钩函数。 具体来说,此文件包含八个空函数。
os_cfg.h 指定μC/ OS-III的哪些功能可用于应用程序。 通常,将文件复制到应用程序目录中,然后根据μC/ OS-III所需的功能对其进行编辑。
os_cfg_app.h 是一个配置文件,通常会复制到应用程序目录中,并根据应用程序要求进行编辑。 该文件使用户能够确定空闲任务堆栈的大小,滴答率,消息池中可用消息的数量等等。
\Source

该目录包含μC/ OS-III的与CPU无关的源代码。 此目录中的所有文件都应包含在构建中。 不需要的功能将根据os_cfg.h和os_cfg_app.h中的#define常量的值进行编译。

文件名 作用
os_cfg_app.c 根据os_cfg_app.h中的值声明变量和数组。
os_core.c 包含用于μC/ OS-III的核心功能,例如用于初始化μC/ OS-III的OSInit(),用于任务级调度程序的OSSched(),用于中断级调度程序的OSIntExit(),下垂列表(或等待列表)管理”,就绪列表管理等。
os_dbg.c 包含由内核感知的调试器或μC/ Probe使用的常量变量的声明。
os_flag.c 包含事件标志管理的代码。
os_int.c 包含用于中断处理程序任务的代码,当OS_CFG_ISR_POST_DEFERRED_EN(请参见os_cfg.h)设置为1时使用。
os_mem.c 包含μC/ OS-III固定大小内存管理器的代码。
os_msg.c 包含处理消息的代码。μC/OS-III提供消息队列和任务特定的消息队列。
os_mutex.c 包含用于管理互斥信号量的代码。
os_pend_multi.c 包含允许代码插入多个信号量或消息队列的代码。
os_prio.c 包含用于管理位图表的代码,用于跟踪准备就绪的任务。如果使用的CPU提供了位设置,清除和测试指令以及计数前导零指令,则可以用等效于汇编语言的该文件代替该汇编语言以提高性能。
os_q.c 管理信号量。
os_sem.c 包含用于管理用于资源管理和/或同步的信号量的代码。
os_stat.c 包含用于统计任务的代码,该代码用于计算全局CPU使用率和每个任务的CPU使用率。
os_task.c 包含用于使用OSTaskCreate(),OSTaskDel(),OSTaskChangePrio()等管理任务的代码。
os_tick.c 包含用于管理已延迟自身的任务或因超时而在内核对象上暂挂的任务的代码。
os_time.c 包含允许任务将自身延迟到一段时间结束之前的代码。
os_tmr.c 包含用于管理软件计时器的代码。
os_var.c 包含μC/ OS-III全局变量。 这些变量供μC/ OS-III管理,不应由应用程序代码访问。
os.h 包含主要的μC/ OS-III头文件,该文件声明常量,宏,μC/ OS-III全局变量(仅供μC/ OS-III使用),函数原型等。
os_type.h 包含μC/ OS-III数据类型的声明,端口设计人员可以更改这些声明以更好地利用CPU体系结构。 在这种情况下,通常会将文件复制到端口目录,然后进行修改。

μC/OS-III,CPU专用源代码

\compiler

用于构建端口代码的编译器或编译器制造商的名称。

文件名 作用
os_cpu.h 包含OS_TASK_SW()的宏声明以及至少以下函数的函数原型:OSCtxSw(),OSIntCtxSw()和OSStartHighRdy()。
os_cpu_a.asm 包含至少实现以下功能的汇编语言函数:OSCtxSw(),OSIntCtxSw()和OSStartHighRdy()。
os_cpu_c.c 包含用于特定于端口的挂钩函数的C代码,以及用于在创建任务时初始化任务堆栈框架的代码。

μC/CPU, CPU专用源代码

\uC-CPU

这是主要的μC/ CPU目录。

文件名 作用
cpu_core.c 包含所有CPU体系结构通用的C代码。 具体来说,该文件包含用于测量CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXIT()宏的中断禁用时间的函数,一个在CPU不提供指令的情况下模拟计数前导零指令的函数以及一些其他函数。
cpu_core.h 包含cpu_core.c中提供的功能的功能原型以及模块用来测量中断禁用时间的变量的分配。
cpu_def.h 包含μC/ CPU模块使用的其他#define常数。
\Cfg\Template

该目录包含一个配置模板文件(cpu_cfg.h),必须将其复制到应用程序目录中,才能根据应用程序要求配置μC/ CPU模块。

文件名 作用
cpu_cfg.h 确定是否启用对中断禁用时间的测量,CPU是否以汇编语言实现计数前导零指令或是否将其用C仿真等等。
\compiler

用于构建μC/CPU端口代码的编译器或编译器制造商的名称。

文件名 作用
cpu.h 包含用于使μC/OS-III和其他模块独立于CPU和编译器字长的类型定义。 具体来说,将找到CPU_INT16U,CPU_INT32U,CPU_FP32和许多其他数据类型的声明。 该文件还指定CPU是大端机还是小端机,定义μC/ OS-III使用的CPU_STK数据类型,定义宏CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXIT(),并包含特定于CPU体系结构的函数的函数原型等。
cpu_a.asm 包含汇编语言函数,以实现禁用和启用CPU中断的代码,计数前导零(如果CPU支持该指令)以及其他只能用汇编语言编写的特定于CPU的函数。 该文件可能还包含用于启用缓存,设置MPU和MMU等的代码。 该文件中提供的功能可以从C访问。
cpu_c.c 包含基于特定CPU架构的功能的C代码,但出于可移植性用C编写。 通常,如果可以使用C编写函数,则应该使用C编写,除非使用汇编语言编写可以显着提高性能。

μC/LIB,便携式库功能

\uC-LIB

这是主μC/LIB目录。

\Cfg\Template

根据应用程序要求配置μC/LIB模块。

文件名 作用
lib_cfg.h 确定是否启用汇编语言优化(假设有用于处理器的汇编语言文件,即lib_mem_a.asm)和其他一些#define。
\Ports\Architecture\Compiler

该目录包含特定于CPU体系结构的优化汇编语言文件,以用更快的汇编语言实现替换C函数。 该文件夹的存在取决于此类汇编语言功能是否由μC/LIB模块的端口开发人员实现。

你可能感兴趣的:(UCOSIII,内核,操作系统,嵌入式,stm32)