声明
本文档借鉴 Tominay 的RT_Thread STM32 BSP超详细的制作过程一文,制作了STM32H745IGT6_M7核的RT-Thread BSP,具体制作方法可以参考原文,原文链接为:
https://blog.csdn.net/guanjuanxian4690/article/details/125092136
以下为STM32H745_M7核 rtthread BSP制作步骤
1、下载RT-thread源码
请移步至RT-Thread官网下载所需要的版本。如下图所示
我这边是从码云上面拉取的,下载后如下图所示:
关于RT-Thread的代码目录说明,系统框架,ENV工具下载等可以参考目录下README_zh.md文件。
2、安装ENV工具并配置至鼠标右键
具体可以参考README_zh.md文件中相关说明,这一步很重要,后续步骤要使用ENV工具。
3、生成基础BSP
这一步我们重点关注bsp文件夹,打开bsp文件夹,输入法英文模式下,敲击 st 后光标会自动跳至stm32文件夹上,如图所示
进入stm32文件夹后,docs文件夹是一些bsp相关教程,后续添加bsp外设时可以按照当中教程去添加。我们现在直接进入RT-Thread\bsp\stm32\libraries\templates\stm32h7xx
目录下,将我们需要的STM32h7xx复制至 RT-Thread\bsp\stm32
文件夹下
进入进入stm32h7xx目录后打开ENV。在ENV中输入scons --dist
,并回车,等待ENV运行结束,运行结束后如下图所示:
运行结束后会在当前文件夹下生成一个 dist 文件夹,该文件夹内即为我们此步要生成的基础BSP,我们将里面的文件夹或压缩包移动出去,移动至我们要放置工程的位置。
我这边把stm32h7xx文件夹移动出去并重命名为 STM32H745IGT6_M7。
4、适配至自己板子
RT-Thread的系统时钟及外设配置都是通过 STM32CubeMX 进行配置的,我们这里主要配置系统时钟和串口。
打开我们刚才移动过来的文件夹,内部有个 board 文件夹,我们板子的适配工作全是在这个文件夹内进行的。以下为官方给出的要修改内容
项目 | 需要修改的内容说明 |
---|---|
CubeMX_Config (文件夹) | CubeMX 工程 |
linker_scripts (文件夹) | BSP 特定的链接脚本 |
board.c/h | 系统时钟、GPIO 初始化函数、芯片存储器大小 |
Kconfig | 芯片型号、系列、外设资源 |
SConscript | 芯片启动文件、目标芯片型号 |
1)、CubeMX 工程修改
1、删除原始 CubeMX_Config 文件夹
2、自己重新新建CubeMX工程
配置注意项:
-
时钟根据硬件选择外部25M晶振, 配置为
-
根据自己的调试方式,选择对应的选项。
-
保存位置和工程命名
注意是我们bsp所在位置的board文件夹,目的是替换掉原始BSP,保持原始BSP的正确性。 -
设置文件不生成单独的.c和.h
3、修改 board.c/h
- 修改board.c
复制 CubeMX_Config\CM7\Core\Src 文件夹下main.c中的 SystemClock_Config 函数,即时钟配置函数,替换掉原始 board.c 中的 SystemClock_Config 函数。 - 修改board.h
修改board.h中的STM32_FLASH_SIZE
和STM32_SRAM_SIZE
这两个宏控制参数
#define STM32_FLASH_SIZE (512 * 1024)
#define STM32_SRAM_SIZE (512)
注意这里的SRAM使用的是 AXI SRAM 区
4、 修改 Kconfig 选项
打开 Kconfig 文件将其中的 config SOC_STM32H743II
修改为config SOC_STM32H745IG
,其它保持不变。
5、修改链接脚本即linker_scripts
文件夹内文件
按照官方教程分别修改,FLASH和RAM都配置为512K
如下图所示:
6、修改构建脚本
即修改SConscript
文件,修改为如下
7、修改工程模板
template 文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式。MDK4/MDK5/IAR 的工程模板文件。
下面以MDK5模板的修改为例,介绍如何修改模板配置:
1、修改芯片型号
2、修改程序下载方式