认识FreeRTOS操作系统
FreeRTOS是一款广泛应用于嵌入式领域的开源实时操作系统(RTOS),凭借其精简的内核、高效的多任务处理能力以及灵活的同步机制,在资源有限的嵌入式设备中提供了稳定可靠的实时性能。
FreeRTOS的核心特性
多任务处理:支持多任务并发执行,每个任务可独立设置优先级,便于系统根据实际场景灵活调整任务调度策略。
任务调度机制:支持抢占式调度与时间片轮转调度,既确保高优先级任务及时响应,也保证相同优先级任务公平共享CPU资源。
同步与通信机制:提供信号量、互斥量、事件组和消息队列等多种机制,有效支持任务间的同步协调与数据传递。
内存管理:提供多种内存分配策略,开发者可根据具体应用需求选择最适合的动态或静态内存管理方式。
软件定时器功能:支持创建基于定时器的任务,适用于周期操作、延时触发等场景,增强系统的时间控制能力。
2.移植的软件实现
2.1了解工程结构
先构建一个最基础的工程模板,使用该基础模板实现freertos操作系统的移植,方便工程师更好地理解freertos的系统该如何实现。
工程目录的框架图如下:

工程图结构图如下:此图是已完成RTOS移植后的工程目录图。

2.2软件移植
2.2.1FreeRTOS的源码获取
可通过官网进行下载:
FreeRTOS™-FreeRTOS™
https://www.freertos.org/zh-cn-cmn-s
2.2.2了解RTOS源码的文件框架

源码移植只用到了DEMO,Source两个文件夹

注意这里:是将整个rtos的源码放到了对应的工程文件中,在向工程中添加文件时,只添加需要使用到那一项即可。
2.2.3移植实现
以下内容是rtos操作系统的详细移植步骤:
首先将下图目录中相关的.c文件添加至工程属组中的rtos/


然后将下图目录中的port.c文件添加至上图rtos/port属组中,由于国民技术N32G457REL7这款MCU是cortex-M4F内核的cpu,由此将ARM_CM4F该文件夹下的port.c添加到上图rtos/port属组中

选择对应的配置文件,并将其添加到工程项目中user的属组下,具体的文件目录如下图:


文件添加完成后,在项目中添加对应文件的头文件路径,具体只需要添加下方的三个路径即可

完成此步操作后,打开下图所示的文件夹

将此文件中的内容修改为如下图所示的数值

屏蔽此文件中的系统定时器的中断服务函数

再将下图文件中的三个中断服务函数屏蔽,否则程序会报“重复定义中断服务函数”的错误

由于操作系统的延时是通过系统定时器的节拍作为心跳,由此需要初始化系统定时器,并开启系统定时器的中断等,具体内容如下图:

到此处再去编译以下工程,会报一个栈溢出的钩子函数未定义的错误,在main中定义此钩子函数即可,具体如下图:

到此再编译工程,工程无报错,具体如下图:

至此,FreeRTOS实时操作系统的移植就已完成
3.验证FreeRTOS的移植
在main中编写如下程序,验证rtos是否移植成功,具体如下图:

程序运行的结果如下图:

根据此日志得出:当前程序为,led1任务和led2任务交替运行,但led1的任务优先级又比led2的任务优先级高,所以led的任务会抢占led2,故此有时led1的任务执行两次,led2的任务执行一次。
验证结果:根据日志得出结论,FreeRTOS操作系统移植成功。
如需国民技术N32G457系列相关SDK和PACK包,可以直接联系国民技术代理商-海凌微领取,销售-江小姐,电话:18126156267。
