查看: 1565|回复: 0

[经验] 国产M0芯片移植FreeRTOS笔记一

[复制链接]

该用户从未签到

发表于 2021-4-24 12:16:43 | 显示全部楼层 |阅读模式
分享到:
笔者趁着闲暇将FreeRTOS移植到一个国产MCU上,FreeRTOS还是非常容易移植的,网上的参考资料也非常多,FreeRTOS 在全球嵌入式市场分析报告中一直是小型嵌入式操作系统使用率最高的,以下是移植记录:

一、前期准备
准备一个 简单的工程模板,比如一个点亮LED的程序即可;

二、源码下载
从网址 https://sourceforge.net/projects/freertos/files/FreeRTOS/V8.2.3/ 下载 V8.2.3
版本,这个是 8.X 系列里面最高版本了,9.0 版本还处于测试阶段,我们暂不使用。

三、文件导入
1、在工程模板中建立FreeRTOS文件夹,用于存放FreeRTOS源文件

51.jpg

2、将 FreeRTOSV8.2.3 软件包中路径:FreeRTOSV8.2.3\FreeRTOS\Source 里面如下所有文件复制到工程模板FreeRTOS文件夹中

52.jpg

3、将 FreeRTOSConfig.h 复制到工程模板中,该文件在 FreeRTOSV8.2.3 软件包的路径:
FreeRTOSV8.2.3\FreeRTOS\Demo\CORTEX_STM32F103_Keil,这是官方整理好的配置文件。

4、将源码文件添加到 MDK 的工程项目中,添加后的效果如下
53.jpg
其中 heap_4.c 文件路径: FreeRTOS\Source\portable\MemMang
port.c 和 portmacro.h 文件的路径:FreeRTOS\Source\portable\RVDS\ARM_CM0,由于笔者使用的是 M0内核的,所以移植文件也要添加 M0内核的,这个内核文件根据不同平台选择对应的文件。

5、新创建一个 includes.h 文件,将所有的头文件都集中到这个头文件下。

6、添加相应的头文件路径

54.jpg
7、最后一步,同时也是最重要的一步,修改 FreeRTOSConfig.h 配置文件(用户根据自己的配置进行修改)

8、FreeRTOSConfig.h 文件中定义堆大小,FreeRTOS 内核,用户动态内存申请,任务栈等都需要用这个空间,用户需根据自己使用的mcu内存大小,填入合适的值
55.jpg

9、中断服务程序映射到 CMSIS 定义的标准名称
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler

另外用户需要将xPortSysTickHandler(void)滴答定时器映射到mcu定时器上
56.jpg
10、至此移植完成,由于很多细节没有描述非常详细,大家可以共同交流完善。

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条



手机版|小黑屋|与非网

GMT+8, 2025-1-13 19:53 , Processed in 0.110703 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.