μc/os-III的文件目录注解
应用程序
app.c和app.h,可包含任意数目的文件,mian()函数通常在里面
CPU
半导体厂商提供的库函数源代码,用于访问他们生产的CPU或MCU外设,没有一定的命名规范
BSP板级支持包
操作系统和目标板外设的交互交互代码
μC/OS-III(cpu无关代码)
由具有高度可移植性的ANSI C编写
μC/OS-III(cpu相关代码)
os_cpu.h ;os_cpu_a.asm;os_cpu_c.c,这部分代码需要根据特定的CPU架构进行修改,该过程称为移植
μC/CPU(cpu相关代码)
定义了打开和关闭中断的函数、与cpu和使用编译器有关的CPU_???数据类型和一些其它函数
μC/LIB(可移植库函数)
一系列提供通用函数的源文件,如内存复制、字符串和ASCII码的相关函数
配置文件
在移植时,这5个文件是移植时复制到工程目录下,然后根据我们的工程需求进行修改:
os_cfg.h 确定μc/os-III的哪些功能是应用程序需要的
os_cfg_app.h 配置#define常量,配置空闲任务堆栈大小、时钟节拍的频率
cpu_cfg.h 定义是否开启中断关闭时间的测量功能,定义用汇编还是C实现前导零计算指令等等
lib_cfg.h 定义是否开启汇编语言优化功能以及其他一些宏
(补充os_type.h 包含μc/os-III数据类型的声明,移植的时候可以修改)
\Micrium 存放Micriμm提供的软件和工程文件,位于计算机的根目录
\Software 包含所有软件和工程文件
\Evalboards 包含Micriμm支持的评估板的相关文件
\<maunfacturer> 评估板厂家的名字
\<board name> 评估板的名字
\<compiler> 编译评估板程序的编译器或者厂家名字
\<project name> 工程名字
\app.c 工程源代码
\app.h
\other
\BSP 名称固定为BSP,板级支持包
\*.* bsp的源文件,如bsp_led.c等等,通常bsp.c和bsp.h放在一起
\CPU 名称固定为cpu
\<manufacture> 提供外设库的半导体厂商的名字
\<architecture> 特定库的名字,通常与CPU名称和结构有关
\*.* 库源文件,由厂家命名
\μc/os-III μc/os-III的主目录
\Cfg\Template 存放配置文件的模板,可以复制应用到我们的工程中,根据需要进行修改
\os_app_hooks.c 说明如何供μc/os-III调用的用户介入函数,其中包含8个空函数
cfg1************\os_cfg.h 确定μc/os-III的哪些功能是应用程序需要的
cfg2************\os_cfg_app.h 配置#define常量,配置空闲任务堆栈大小、时钟节拍的频率(tick_rate)、任务优先级等等
\Source 存放着与CPU无关的代码,建工程时该目录中的所有文件都是必须的,通过配置os_cfg.h和os_cfg_app.h两个头文件可裁剪掉那些不需要的功能,编译时编译器便不会对它们进行处理
\os_cfg_app.c 宏定义声明变量和数组
\os_core.c 包含内核功能模块,如初始化μc/os-III的OSInit()、任务级调度的OSSched()、中断级调度的OSIntExit()等等
\os_dbg.c 包含内核调试器或者μc/Probe使用的常量的声明
\os_flag.c 包含事件标志的管理
\os_int.c 包含中断处理任务的处理
\os_mem.c μc/os-III提供的消息队列和任务专用的消息队列
\os_msg.c 包含消息处理的代码,消息队列和任务专用的消息队列两个服务的通用代码
\os_mutex.c 互斥型信号量的管理
\os_pend_multi.c 包含允许任务同时等待多个信息量或多个消息队列的代码
\os_prio.c 包含位映射表的管理代码,用于追踪已经就绪的任务
\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的全局变量,它们不能被应用程序访问
\os.h 包含μc/os-III主要的头文件,声明了常量、宏、μc/os-III全局变量、函数原型等
cfg3************\os_type.h 包含μc/os-III数据类型的声明,移植的时候可以修改
\Ports 存放所使用的CPU架构的移植文件
\<architecture> μc/os-III移植到CPU架构的名字
\<compiler> 用于编译移植代码的编译器或者厂商的名字,该目录包含移植文件
\os_cpu.h 包含OS_TASK_SW()的宏定义,以及函数原型OSCtwSw()、OSIntCtxSw()和OSStartHighRdy()等的声明
\os_cpu_a.asm 包含汇编函数OSCtxSw()、OSIntCtxSw()、OSStartHighRdy()等
\os_cpu_c.c 包含移植专用介入函数的C代码,以及创建任务时用来初始化任务堆栈的代码
\uC-CPU μc/CPU的主目录
\cpu_core.c 适用于所有CPU架构的C代码,包含用来测量中断关闭时间的函数、包含可模仿前导零计算指令的函数
\cpu_core.h cpu_core.c的头文件,包含函数原型的声明,测量中断关闭时间的变量定义
\cpu_def.h 包含μc/CPU模块使用的各种#define常量
\Cfg\Template 包含一个可配置的模板文件
cfg4************\cpu_cfg.h 定义是否开启中断关闭时间的测量功能,是用汇编语言还是C语言实现前导零计算指令等等
\<architecture> μc/os-III移植的目标CPU架构的名字
\<compiler> 用于编译移植代码的编译器或者厂商的名字,该目录包含移植文件
\cpu.h 包含一些类型的定义,使μc/os-III和其它模块可与CPU架构和编译器字宽度无关
\cpu_a.asm 包含汇编语言写的函数,用来开关中断、计算前导零,以及只能用汇编语言写的与CPU相关的函数,可能还包含使能缓存、建立MPUs和MMU等的函数,该文件中的函数可以从C代码中调用
\cpu_c.c 基于特定CPU架构但为了可移植而用C语言编写的函数(除非汇编能显著提升性能,否则尽量用C语言)
\uC-LIB μC/LIB主目录
\lib_ascii.c 提供ASCLL_ToLower()、ASCII_ToUpper()、ASCLL_IsAlpha()和ASCII_IsDig等函数,可替换标准库中的相应函数
\lib_ascii.h
\lib_def.h 定义了许多常量,如TRUE\FLASE,YES\ON以及各种进制常量等等,将一些函数名为英文小写定义为大写
\lib_math.c 定义相关数学函数Math_Rand()、Math_SetSeed()等,替换标准库中的相应函数
\lib_math.h
\lib_mem.c 定义包含Mem_Clr()、Mem_Set()、Mem_Copy()、Mem_Cmp等函数源代码,替换标准库相应函数
\lib_mem.h
\lib_str.c 定义包含Str_Lenr()、Str_Copy()和Str_Cmp()等函数源代码替换标准库相应函数
\lib_str.h
\Cfg\Template 包含一个模板文件
cfg5************\lib_cfg.h 定义是否开启汇编语言优化功能以及其他一些宏
\Ports 包含了优化后的汇编语言文件,针对特定的CPU架构,由高效率汇编语言替代一些C语言
\<architecture>
\<compiler>
\lib_mem_a.asm 包含了lib_mem.c的汇编优化版