uC/OS-III文件结构
来源:互联网 发布:板式家具设计软件 编辑:程序博客网 时间:2024/06/16 06:39
1、配置文件
cpu_cfg.h:定义CPU相关指令(计算前导0)存在与否、CPU_NAME、时间戳、关中断时间测量等CPU相关配置
lib_cfg.h:库的相关配置
os_cfg.h:系统相关代码的配置,这部分是拓展性的,比如可以配置是否裁剪定时器等内核对象的宏
os_cfg_app.h:系统相关代码配置,这部分是必须设置的,比如节拍频率的配置
2、应用程序
app.c任务相关代码的编写
app.h:任务相关声明、堆栈大小定义、优先级的设置
3、uC/OS-III与CPU无关代码
os_cfg_app.c:系统任务配置
os_type.h:内核对象数据类型定义、及相关代码
os_dbg.c:和调试相关的数据类型的定义、及相关代码
os_flag.c:时间标志组相关函数
os_int.c:中断延迟相关函数
os_mem.c:内存分区相关函数
os_msg.c:消息相关函数
os_mutex.c:二值信号量相关函数
os_pend_multi.c:等待多个内核相关函数
os_prio.c:优先级相关函数
os_q.c:队列相关函数
os_sem.c:多值信号楼相关函数
os_stat.c:统计信息相关函数
os_task.c:任务相关函数
os_tick.c:时钟节拍相关函数
os_time.c:时间管理相关函数
os_tmr.c:定时器相关函数
os_var.c:变量定义相关函数
os.h:相关数据类型结构定义
os_core.c:整个uC/OS-III相对比较底层的函数,供其他对象内核调用,另外部分是uC-III核心的函数
4、库
lib_ascii.c
lib_ascii.h
lib_def.h
lib_math.c
lib_math.h
lib_mem_a.asm
lib_mem.c
lib_mem.h
lib_str.c
lib_str.h
5、uC/OS-III与移植相关的代码
os_cpu_a.asm:CPU相关的汇编函数定义及声明,比如关中断,前导零指令的调用
os_cpu_c.c:CPU相关c语言函数的定义及声明,c语言计算前导零个数等。
os_cpu.h:CPU相关配置及以上两个文件函数的声明
6、uC/OS-III与CPU相关的代码
cpu_def.h:CPU相关配置,比如关中断方式,堆栈增长方向,字长等等
cpu_c.c:uC/OS-III封装好的CPU相关c语言代码,比如中断优先级的配置
cpu_a.asm:uC/OS-III封装好的相关汇编代码,比如关中断
cpu_core.c:CPU初始化函数、CPU名字、时间戳计算CPU核心函数
cpu_core.h:CPU核心配置,编译设置,cpu_core.c相关函数声明等
7、其他CPU相关文件
。。。
①配置文件,通过定义这些文件里宏的值可以轻易地裁剪 uC/OS-III 的功能。
②用户应用文件,定义和声明应用任务。
③内核服务文件,其代码与 CPU 无关,可以不做任何修改移植到任何 CPU。本书主要讲解
这部分内容。
④底层函数库,比如字符串的常规操作,常用的数学计算,等等。
⑤CPU 移植文件,用户如果想要移植 uC/OS-III 到不同平台上,需要修改这部分代码。
⑥CPU 配置文件,主要是 CPU 的一些工作模式和服务函数。
⑦其他 CPU 相关文件。
软件定时器
软件定时器的功能跟硬件定时器一样,主要用于定时,但其精度达不到硬件定时器的标准,可以用于定时一些精度要求不是特别严格的事件。理论上,uC/OS-III 可以创建无数个软件定时器,这是硬件定时器无法媲美的。
多值信号量
多值信号量主要用于管理资源和标志事件的发生。 管理资源的一个常用仿例就是停车场,把总停车位看做信号量,每次申请一个停车位信号量就减 1,如果停车位为 0,就申请不到,但可以等待其它汽车释放停车位。标志事件的发生类似于裸机里常用的事件标志变量,就是标志某事是否发生,然后通知任务。
互斥信号量
互斥信号量的作用是保护共享资源,避免共享资源正在被重写时被其它任务读取,这样读取到的数据就有错误。互斥信号量的作用跟多值信号量的作用有些重叠,多值信号量的执行时间少于互斥信号量,但多个任务访问共享资源时,容易出现优先级反转的问题,这会降低系统的可预知性,而互斥信号量可以防止优先级反转,所以建议在互斥信号量可以解决需要时,就优先使用互斥信号量。
消息队列
消息队列是由多个消息串联而成的一个机制, 需要消息的任务就从消息队列的出口端获取,如果消息队列里没有消息了,可以选择等待或者不等待消息的到来。消息可以比信号量携带更丰富的信息,可以是任意长度的消息内容。
事件标志组
事件标志组用于标志若干个事件否发生的组合。 这个功能可以轻易地实现键盘的按键组合。
任务信号量
任务信号量的作用与多值信号量的一样,但多值信号量是所有任务都可以申请使用,而任务信号量却只能给一个特定任务使用,也就是说任务信号量是一个任务本身的属性,但其他任务都可以给这个任务发送任务信号量。
任务消息队列
任务消息队列的作用与(普通)消息队列的一样,但(普通)消息队列是所有任务都可以申请它的消息,而任务任务消息队列的消息却只能给一个特定任务使用,也就是说任务消息队列是一个任务本身的属性,但其他任务都可以给这个任务发送任务息。
内存管理(分区)
内存管理(分区)主要是为了尽量减少内存在不断分配和释放过程造成的内存碎片,避免过多的浪费内存。内存分区就是一次性开辟一大块连续内存,然后将内存分区平均分成若干个内存块,需要使用内存时就申请一个内存块,用完了再释放回内存分区,这样就实现内存块的循环使用。
- uC/OS-III文件结构
- uc/OS III 文件结构(未完)
- uC/OS文件结构
- 1.什么是uC/OS III,以及uC/OS III的结构
- uC/OS-III Note
- uC/OS-III学习1::uC/OS-III介绍
- uC/OS-III移植基本条件
- uC/OS-III 的特点
- uC/OS-III 函数整理
- uC/OS-III 函数整理
- stm32F103C8T6使用uC/OS-III
- uC/OS-III之资源管理
- uC/OS-III之信号量
- uC/OS-2 结构
- uc/os-iii学习笔记-OSTaskCreate
- uc/os-iii学习笔记-临界段
- uc/os-iii学习笔记-任务管理
- uc/os-iii学习笔记-任务调度
- dataset兼容低版本IE的方法
- Twitter SDE 波士顿电面面经
- 【LeetCode】687.Longest Univalue Path(Easy)解题报告
- Android--------使用BottomTabBar实现底部导航页
- C++中cin的详细用法
- uC/OS-III文件结构
- jeesite中集成Swagger2 三步
- 产品测试工装的研发回忆录
- java性能优化笔记(三)java程序优化
- webstorm 2017 激活破解
- Spring MVC 和 Spring 总结
- linux和c的行分隔符
- 欢迎使用CSDN-markdown编辑器
- libiconv安装