打印
[N32G45x]

国民技术N32G457REL7 移植FreeRTOS的实现

[复制链接]
106|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.认识FreeRTOS操作系统
       FreeRTOS 是一款流行的开源实时操作系统(RTOS),广泛应用于嵌入式系统领域。它以其小巧的内核、高效的任务调度和丰富的同步机制而闻名,能够在资源受限的嵌入式设备上提供可靠的实时性能。

FreeRTOS 的核心特性

多任务处理:FreeRTOS 支持多任务并发执行,每个任务都有自己的优先级,可以根据需要进行调整。

任务调度:采用抢占式和时间片轮转的调度策略,确保高优先级任务能够及时执行,同时也允许相同优先级的任务公平共享CPU时间。

同步和通信机制:提供信号量、互斥量、事件组和消息队列等机制,方便任务间的同步和数据交换。

内存管理:FreeRTOS 提供多种内存管理方案,允许开发者根据应用需求选择最合适的内存分配策略。

软件定时器:允许创建定时任务,用于周期性执行或延时操作。

2.移植的软件实现
2.1了解工程结构
        这里我构造了一份最基础的工程模板,使用该基础模板实现freertos操作系统的移植,方便各位读者更好的理解freertos的系统该如何实现。

        工程目录的框架图如下:



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



2.2软件移植
2.2.1FreeRTOS的源码获取
        方式1:通过官网进行下载:
FreeRTOS™ - FreeRTOS™
https://www.freertos.org/zh-cn-cmn-s
        方式2:博主会移植成功的压缩包给各位读者

        在此处给大家一个关于FreeRTOS源码库函数相关的API中文手册,以帮助大家更好的使用FreeRTOS进行项目开发:
项目文件预览 - FreeRTOSV9.0.0API中文手册下载:FreeRTOS V9.0.0 API 中文手册下载本仓库提供了一个资源文件的下载,文件名为“FreeRTOS V9.0.0 API 中文手册.pdf” - GitCode
https://gitcode.com/Open-source-documentation-tutorial/119e0/blob/main/FreeRTOS%20V9.0.0%20API%20%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8C.pdf



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操作系统移植成功.
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/wxy888888/article/details/147400623

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

4278

帖子

0

粉丝