这次FreeRTOS培训是由北京麦克泰软件技术有限公司的工程师授课,授课课件分为以下几个主题:

1、学习和掌握一种RTOS
2、嵌入式实时操作系统原理(FreeRTOS)
3、IAR EWARM使用
4、Tracealyzer 介绍
pdf.gif ST RTOS.pdf (5.61 MB, 下载次数: 164)

这次是我第二次参与FreeRTOS的授课,跟之前ST作的FreeRTOS授课最大的区别是,这次授课介绍的是原生态的FreeRTOS的使用,并非通过CubeMX的自动化工具生成FreeRTOS代码进行相关应用的开发,内容对比如下图:
135041piy5tc10fahkf5kc.jpg

二者的区别如下:
  1、使用CMSIS-RTOS 是基于CubeMX、Keil、Ac6等工程建立时产生的,在选择的第三方工具模块后,在所形成的代码里生成基于CMSIS-RTOS API(cmsis-os.h、smsIs-os.c)封装的FreeRTOS相关配置和调用;基于 CMSIS-RTOS API封装,是能更好的屏蔽应用层的RTOS调用,对简化功能移植,有一定的帮助;
201953wrl6xsrr6nltcpc4.jpg

从CMSIS-RTOS API 相关头文件cmsis_os.h 了解到中间件API是由以下结构组成:

0、API Version defines, APIConfig defines
1、Enumeration, structures,defines
2、Kernel Control Functions
3、Thread Management
4、Generic Wait Functions
5、Timer Management Functions
6、Signal Management
7、Mutex Management
8、Semaphore ManagementFunctions
9、Memory Pool ManagementFunctions
10、Message Queue ManagementFunctions
11、Mail Queue ManagementFunctions

  2、基于FreeRTOS官网的原生代码,所形成的原生态FreeRTOS相关配置和调用。功能调用随RTOS的功能扩展变化而变化,复杂调用时可直接操作RTOS底层处理,避免因封装配置问题带来的一些烈问题。直接调用“x”打头的原生函数;

FreeRTOS的原生态文件由以下几个部分内容构成:
os核心:
1、croutine.c/croutine.h   调度器
2、event_groups.c/event_groups.h事件组
3、list.c/list.h 列表
4、queue.c/queue.h 队列
5、tasks.c/tasks.h 任务
6、timers.c/timers.h 定时器
7、port.c/protmacro.h ARM CM4F port (GCC/ARM_CM4F目录下)
周边环境设置:
1、deprecated_definitions.h  MCU及环境定义设置
2、FreeRTOS.h/FreeRTOSConfig.h  RTOS配置
3、mpu_prototypes.h MPU蓝本定义
4、mpu_wrappers.h MPU包装器
5、Portable.h 接口定义列表
6、projdefs.h 项目定义
7、semphr.h 信号量使用定义
8、StackMacros.h 堆栈宏
9、portable/MemMang  接口定义/内存管理

   官方提供了heap_1.c~heap_5.c 5种内存管理模式,根据实际情况任选一种即可,一般默认选择heap_4.c,

  
  不论是否使用原生态代码还是使用CMSIS.C/CMSIS.H,其实都要对FreeRTOS的相关参数配置(即配置文件FreeRTOSConfig.h和FreeRTOS.h)进行了解和熟悉,这是掌握和熟悉RTOS的必由之路,基于配置可实现对FreeRTOS内核运行参数的相关配置:
1、调度器配置;
2、任务管理配置;
3、中断管理配置
4、任务间同步与通信配置
5、信号量资源管理配置
6、低功耗管理配置

这里把理论部分总结归纳,具体内容可参看培训教程和相关视频,以下试验部分的内容在后边的章节补充:

1) FreeRTOS的启动
2) 创建任务
3) 信号量应用
4) 队列应用
5) TraceAlyzer使用


为做好试验内容,现用Atollic TrueSTUDIO工具搭建环境,为FreeRTOS原生态代码移植做准备,
1、先通过Atllic生成工程项目,
2、将FreeRTOS (新建的目录,工程建立之初没有)和 STM32L4xx_HAL_Driver (生成时Inc和Src下文件为空)的相关文件进行移植
大致目录结构如下:
203459jmyh7zdlm0dzp23p.jpg



《低功耗MCU运行FreeRTOS》培课程的准备内容(一)

《低功耗MCU运行FreeRTOS》培训课程(三) Atollic环境实验
《低功耗MCU运行FreeRTOS》培训课程(四) 创建任务
《低功耗MCU运行FreeRTOS》培训课程(五)信号量实现人机交互
《低功耗MCU运行FreeRTOS》培训课程(六)消息队列的使用