打印
[其他ST产品]

FreeRTOS移植到STM32

[复制链接]
719|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvuu|  楼主 | 2022-12-31 15:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

找一个STM32的裸机工程模板

我们以STM32F103裸机程序为例


使用特权

评论回复
评论
lvuu 2022-12-31 15:35 回复TA
———————————————— 版权声明:本文为CSDN博主「不秃也很强」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_61672347/article/details/125529482 
沙发
lvuu|  楼主 | 2022-12-31 15:34 | 只看该作者
随便找的一个裸机程序

二、去官网上下载FreeRTOS V9.0.0 源码

在移植之前,我们首先要获取到 FreeRTOS 的官方的源码包。这里我们提供两个下载 链 接 , 一 个 是 官 网 : http://www.freertos.org/ , 另 外 一 个 是 代 码 托 管 网 站 : https://sourceforge.net/projects/freertos/files/FreeRTOS/。虽然不是最新版本的源码包但是因为内核很稳定, 并且网上资料很多所以我们选用V9.0.0 版本

使用特权

评论回复
板凳
lvuu|  楼主 | 2022-12-31 15:36 | 只看该作者
我们打开 FreeRTOS 的代码托管网站,就可以看到 FreeRTOS 的源码及其版本信息了, 具体见图

使用特权

评论回复
地板
lvuu|  楼主 | 2022-12-31 15:37 | 只看该作者
点开V9.0.0下载zip这个,、

使用特权

评论回复
5
lvuu|  楼主 | 2022-12-31 15:38 | 只看该作者
解压完成后就会得到一个完整的Freertos源码包

使用特权

评论回复
6
lvuu|  楼主 | 2022-12-31 15:38 | 只看该作者

使用特权

评论回复
7
lvuu|  楼主 | 2022-12-31 15:39 | 只看该作者
FreeRTOS 包含 Demo 例程和内核源码(比较重要,我们就需要提取该目录下的大部分 文件),具体见图 13-5。FreeRTOS 文件夹下的 Source 文件夹里面包含的是 FreeRTOS 内 核的源代码,我们移植 FreeRTOS 的时候就需要这部分源代码;FreeRTOS 文件夹下的 Demo 文件夹里面包含了 FreeRTOS 官方为各个单片机移植好的工程代码,FreeRTOS 为了 推广自己,会给各种半导体厂商的评估板写好完整的工程程序,这些程序就放在 Demo 这 个目录下,这部分 Demo 非常有参考价值。我们把 FreeRTOS 到 STM32 的时候, FreeRTOSConfig.h 这个头文件就是从这里拷贝过来的,我们这里不做详解

使用特权

评论回复
8
lvuu|  楼主 | 2022-12-31 15:39 | 只看该作者
往裸机工程添加 FreeRTOS 源码
1. 首 先在 我们 的 STM32 裸 机工 程模 板根 目录 下新 建一 个文 件夹, 命名 为 “FreeRTOS”,并且在 FreeRTOS 文件夹下新建两个空文件夹,分别命名为“src” 与“port”,src 文件夹用于保存 FreeRTOS 中的核心源文件,也就是我们常说的 ‘.c 文件’,port 文件夹用于保存内存管理以及处理器架构相关代码,这些代码 FreeRTOS 官方已经提供给我们的,直接使用即可,在前面已经说了,FreeRTOS 是软件,我们的开发版是硬件,软硬件必须有桥梁来连接,这些与处理器架构相 关的代码,可以称之为 RTOS 硬件接口层,它们位于 FreeRTOS/Source/Portable 文 件夹下。

使用特权

评论回复
9
lvuu|  楼主 | 2022-12-31 15:41 | 只看该作者
打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source”目录下找到 所有的‘.c 文件’,将它们拷贝到我们新建的 src 文件夹中,

使用特权

评论回复
10
lvuu|  楼主 | 2022-12-31 15:43 | 只看该作者

使用特权

评论回复
11
lvuu|  楼主 | 2022-12-31 15:43 | 只看该作者
打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目 录下找到“MemMang”文件夹与“RVDS”文件夹,将它们拷贝到我们新建的 port 文件夹中

使用特权

评论回复
12
lvuu|  楼主 | 2022-12-31 15:44 | 只看该作者

使用特权

评论回复
13
lvuu|  楼主 | 2022-12-31 15:45 | 只看该作者
打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\ FreeRTOS\Source”目录下找到 “include”文件夹,它是我们需要用到 FreeRTOS 的一些头文件,将它直接拷贝 到我们新建的 FreeRTOS 文件夹中,完成这一步之后就可以看到我们新建的 FreeRTOS 文件夹已经有 3 个文件夹,这 3个文件夹就包含 FreeRTOS 的核心文件, 至此,FreeRTOS 的源码就提取完成,

使用特权

评论回复
14
lvuu|  楼主 | 2022-12-31 15:50 | 只看该作者

使用特权

评论回复
15
lvuu|  楼主 | 2022-12-31 15:51 | 只看该作者
拷贝 FreeRTOS 到裸机工程根目录

鉴于 FreeRTOS 容量很小,我们直接将刚刚提取的整个 FreeRTOS 文件夹拷贝到我们 的 STM32 裸机工程里面,让整个 FreeRTOS 跟随我们的工程一起发布,使用这种方法打包 的 FreeRTOS 工程,即使是将工程拷贝到一台没有安装 FreeRTOS 支持包(MDK 中有 FreeRTOS 的支持包)的电脑上面都是可以直接使用的,因为工程已经包含了 FreeRTOS 的 源码。

使用特权

评论回复
16
lvuu|  楼主 | 2022-12-31 15:51 | 只看该作者

FreeRTOS 文件夹下就是我们提取的 FreeRTOS 的核心代码,该文件夹下的 具体内容作用,这里就不再赘述。

使用特权

评论回复
17
lvuu|  楼主 | 2022-12-31 20:41 | 只看该作者
拷贝 FreeRTOSConfig.h 文件到 user 文件夹

FreeRTOSConfig.h 文件是 FreeRTOS 的工程配置文件,因为 FreeRTOS 是可以裁剪的 实时操作内核,应用于不同的处理器平台,用户可以通过修改这个 FreeRTOS 内核的配置 头文件来裁剪 FreeRTOS 的功能,所以我们把它拷贝一份放在 user 这个文件夹下面。 打开 FreeRTOSv9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Demo”文件夹下面找到 “ CORTEX_STM32F103_Keil ” 这 个 文 件 夹 , 双 击 打 开 , 在 其 根 目 录 下 找 到 这 个 “FreeRTOSConfig.h”文件,然后拷贝到我们工程的 user 文件夹下即可,

使用特权

评论回复
18
lvuu|  楼主 | 2022-12-31 20:42 | 只看该作者

使用特权

评论回复
19
lvuu|  楼主 | 2022-12-31 20:43 | 只看该作者

使用特权

评论回复
20
lvuu|  楼主 | 2022-12-31 20:44 | 只看该作者
添加 FreeRTOS 源码到工程组文件夹

在上一步我们只是将 FreeRTOS 的源码放到了本地工程目录下,还没有添加到开发环 境里面的组文件夹里面,FreeRTOS 也就没有移植到我们的工程中去。

新建 FreeRTOS/src 和 FreeRTOS/port 组,接下来我们在开发环境里面新建 FreeRTOS/src 和 FreeRTOS/port 两个组文件夹,其中 FreeRTOS/src 用于存放 src 文件夹的内容,FreeRTOS/port 用于存放 port\MemMang 文件夹 与 port\RVDS\ARM_CM?文件夹的内容,“?”表示 3、4 或者 7,具体选择哪个得看你 使用的是哪个型号的 STM32 开发板,如果是F3系列就拷贝port\RVDS\ARM_CM3

使用特权

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

本版积分规则

51

主题

466

帖子

0

粉丝