RT-Thread BSP制作

2 篇文章 0 订阅
1 篇文章 0 订阅

前记:

​​​​RT-Thread ---- 工程笔记系列https://blog.csdn.net/yanwennian/article/details/124518569?spm=1001.2014.3001.5501


 环境:

1.MCU:STM32F103VCT6
2.RTOS Version:V4.1.0


目录

1. 准备工作

1.1 下载RT-Thread 4.10源码.

1.2 下载并配置ENV工具.

1.3 下载并安装CubeMX工具.

2. 复制通用模板

2.1 从源码打开 STM32F10x BSP 通用模板路径.

2.2 复制 STM32F10x 模板文件夹 到 STM32 的BSP目录。

​ 2.3 修改为自己的项目名称。

3. 使用 CubeMX 工具配置工程

3.1  打开CubeMX配置文件.

3.2 选择使用RT-Thread源码配置的版本.​

3.3 CubeMX自动加载到选定的版本配置.

3.4 在 CubeMX 工程中将芯片型号为 STM32F103RCTx​

3.5 保存CubeMX工程.

3.6 配置下载方式.​

3.7 配置时钟源.​

3.8 配置串口外设.​

3.9 配置时钟树.​

3.10 设置Cube MX工程名和保存路径.​

3.11 生成CubeMX工程文档.​

3.12 拷贝系统时钟配置初始化函数.

3.13 在 RT-Thread源码模板的board.h 文件中配置 FLASH 和 RAM 的相关参数.

3.14 堆内存配置预习.

4. 修改 BSP 中的 Kconfig 文件

4.1 Kconfig文件路径.​

4.2 芯片型号和系列修改.

4.3 BSP 上的外设支持选项添加.​

5. 修改构建工程相关文件

5.1 修改链接脚本.

5.2 MDK 使用的链接脚本 link.sct修改.​

5.3 iar 使用的链接脚本 link.icf修改.​

5.4 gcc 编译器使用的链接脚本 link.lds修改.​

5.5 修改构建脚本

5.6 修改工程模板.

6. 重新生成工程

6.1 在项目工程根目录,打开ENV工具.

6.2 在 Env 界面输入命令 menuconfig对工程进行配置.​

6.3 生成 MDK5 工程.

7. BSP功能验证.

7.1 打开MDK 5 工程.​

7.2 编译MDK 5工程.​

7.3 烧录Hex文件.

7.4 结果验证.

8. 制作完成的BSP工程源文件.


严文年 -- 记于苏州


1. 准备工作

1.1 下载RT-Thread 4.10源码.

参考:通过git / SVN 管理源代码的相关章节.

1.2 下载并配置ENV工具.

参考:ENV配置及使用的相关章节.

1.3 下载并安装CubeMX工具.

参考:CubeMX下载及安装的相关章节.

2. 复制通用模板

2.1 从源码打开 STM32F10x BSP 通用模板路径.

2.2 复制 STM32F10x 模板文件夹 到 STM32 的BSP目录。

 2.3 修改为自己的项目名称。

3. 使用 CubeMX 工具配置工程

3.1  打开CubeMX配置文件.

3.2 选择使用RT-Thread源码配置的版本.

3.3 CubeMX自动加载到选定的版本配置.

备注:

1.此过程需要访问CubeMX服务器,电脑要连接互联网.

2.需要检查防火墙是否拦截CubeMX的自动更新进程。

  

3.4 在 CubeMX 工程中将芯片型号为 STM32F103RCTx

3.5 保存CubeMX工程.

 

3.6 配置下载方式.

3.7 配置时钟源.

3.8 配置串口外设.

3.9 配置时钟树.

3.10 设置Cube MX工程名和保存路径.

3.11 生成CubeMX工程文档.

3.12 拷贝系统时钟配置初始化函数.

备注:

1.RT-Thread默认使用MCU内部时钟.

1.在RT-Thread源码 board.c 文件中存放了函数 SystemClock_Config() ,该函数负责初始化系统时钟。当使用 CubeMX 工具对系统时钟重新配置的时候,需要更新这个函数。

2.该函数由 CubeMX 工具根据实际配置重新生成,默认存放在../board/CubeMX_Config/Src/main.c 文件中。但是该文件并没有被包含到我们的工程中,因此需要将这个函数从 main.c 中拷贝该函数到 board.c 文件中,替代源码中默认的内部时钟配置函数。

  

3.13 在 RT-Thread源码模板的board.h 文件中配置 FLASH 和 RAM 的相关参数.

1.这个文件中需要修改的是 STM32_FLASH_SIZE 和 STM32_SRAM_SIZE 这两个宏控制的参数。本次制作的 BSP 所用的 STM32F103RCTx 芯片的 flash 大小为 256k,ram 的大小为 48k,因此对该文件作出如下的修改:

备注:

部分MCU的FLASH和RAM空间是不连续的,修改时参考Keil配置界面的空间分段信息设置。

3.14 堆内存配置预习.

1. 通常情况下,系统 RAM 中的一部分内存空间会被用作堆内存。下面代码的作用是,在不同编译器下规定堆内存的起始地址 HEAP_BEGIN 和结束地址 HEAP_END。这里 HEAP_BEGIN 和 HEAP_END 的值需要和后面 [第5章节修改链接脚本] 章节所修改的配置相一致。

2.在某些系列的芯片中,芯片 RAM 可能分布在不连续的多块内存区域上。此时堆内存的位置可以和系统内存在同一片连续的内存区域,也可以存放在一片独立的内存区域中。例如在 L4 系列的芯片上,就可以将堆内存配置在起始地址为 0x20000000 的大小为 96k 的内存空间,而将 0x10000000 开始的 32k 内存空间用作系统运行内存。

4. 修改 BSP 中的 Kconfig 文件

4.1 Kconfig文件路径.

4.2 芯片型号和系列修改.

1. 芯片型号和系列修改规则.

4.3 BSP 上的外设支持选项添加.

5. 修改构建工程相关文件

5.1 修改链接脚本.

1. 脚本文件路径.

备注:

部分MCU的FLASH和RAM空间是不连续的,修改时参考Keil配置界面的空间分段信息设置。

5.2 MDK 使用的链接脚本 link.sct修改.

5.3 iar 使用的链接脚本 link.icf修改.

5.4 gcc 编译器使用的链接脚本 link.lds修改.

5.5 修改构建脚本

1. SConscript 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件。在这一步中需要修改芯片型号以及芯片启动文件的地址.

2. 在CubeMX生成的工程文件中查询启动文件名称.

3. 在启动文件中查询MCU目标芯片型号的宏定义,HAL库将使用这个宏定义做判断.

4. 修改构建脚本中的启动文件和目标芯片型号宏定义.

5.6 修改工程模板.

1. 工程模板路径.

2.打开并配置工程模板的目标芯片.

3.配置工程模板的输出文件信息.

4.配置工程模板的debug配置.

6. 重新生成工程

备注

重新生成工程需要使用 Env 工具。

6.1 在项目工程根目录,打开ENV工具.

1. 在项目工程根目录,打开ENV工具.

6.2 在 Env 界面输入命令 menuconfig对工程进行配置.

 

  

6.3 生成 MDK5 工程.

1.输入命令 scons --target=mdk5 -s 重新生成 MDK5 的工程.

2.重新生成工程成功.

7. BSP功能验证.

7.1 打开MDK 5 工程.

7.2 编译MDK 5工程.

7.3 烧录Hex文件.

备注:

也可以选择自己常用的烧录工具.或者使用debug工具直接烧录.

7.4 结果验证.

8. 制作完成的BSP工程源文件.


后记:

​​​​RT-Thread ---- 工程笔记系列https://blog.csdn.net/yanwennian/article/details/124518569?spm=1001.2014.3001.5501

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值