20191102(34) 针对 RT-Thread 下 BSP 移植说明(以 can 为示例)

mac2025-02-13  8

新的 BSP 框架还引入了 CubeMX 工具,可以使用该工具来对 BSP 中使用的外设引脚进行配置。CubeMX 工具提供了图形化的配置界面,这种图形化的配置方式对开发者来说更加直观,不仅可以让开发者灵活地配置 BSP 中使用的资源,并且可以让开发者对资源的使用情况一目了然

框架

官方外设使用教程

Hardware Drivers Config —>  OnBoard 板载  On-chip 片外  Board extend 拓展模块

选择需要的功能   pkgs --update 更新配置   scons --target=mdk5 生成MDK5


官方外设驱动介绍与应用

重点: 在 RT-Thread 中已经包含了一些测试例程 examples\test 目录内,需要测试驱动只要在 examples\test 启用对应测试文件即可


官方外设添加指南

步骤一: rt-thread\bsp\stm32\选定的摸板目录\board\CubeMX_Config

利用 CubeMX 配置工程

步骤二: 修改同级目录下 Kconfig 文件 config BSP_USING_SPI2  bool “Enable SPI2 BUS”  select RT_USING_SPI &emsp:default n

A depends on B 只有 B 被选中才能选 A A select B A 选中就会选中 B

步骤三: env 启动 menuconfig 步骤四: 检查 Drivers\drv_spi.c 文件中有没有自己添加的相关内容


官方制作 BSP

项目内容CubeMX_ConfigCubeMX 工程linker_scriptsBSP 特定的链接脚本board.c/h系统时钟/GPIO 初始化函数 / 芯片存储器大小Kconfig芯片信型号/系类/外设资源SConscript芯片启动文件/目标芯片型号

步骤一:先用 CubeMX 配置外部时钟 / 下载方式 / 串口 注意:修改地址以便生成 CubeMX 工程

步骤二:将 CubeMX_Config/Src/main.c 文件中 void SystemClock_Config(void) 函数拷贝到 board.c 文件中

步骤三:修改 STM32_FLASH_SIZE / STM32_SRAM_SIZE 举例 步骤四: RAM 中的一部分内存空间会被用作堆内存, 这里 HEAP_BEGIN 和 HEAP_END 的值需要和后面所修改的配置相一致

步骤五:修改 Kconfig 文件同添加外设一致

步骤六:修改链接脚本

6.1 board\linker_scripts

本次制作 BSP 使用的芯片为 STM32F103RB,FLASH 为 128k,因此修改 LR_IROM1 和 ER_IROM1 的参数为 0x00020000。RAM 的大小为20k, 因此修改 RW_IRAM1 的参数为 0x00005000。这样的修改方式在一般的应用下就够用了,后续如果有特殊要求,则需要按照链接脚本的语法来根据需求修改。

6.2 link.icf

6.3 link.lds

步骤七:修改构建脚本 SConscript

步骤八:修改模板 需要修改 芯片型号 和 程序下载方式

步骤八:配置并重新生成 menuconfig scons --target=mdk5


添加示例 往 STM32F407 中添加 CAN 支持

1 在 STM32CubeMX 使能相关控件(就是简单配置一些基础内容)

注意: 在 CubeMX 中不必过度关注配置,只需要使能相关 IO 口,其他具体配置都在 OS 中进行,比如 UART 支持 DMA 这些都不需要在 CubeMX 中开启避免产生冲突,亲测出现缺少声明的问题

2 使能相关驱动(为后续配置准备,也可以直接参看相关文件)

推出,使用 scons --target=mdk5 然后,打开文件

3 配置 board/ Kconfig 内容

这里需要配合 keil: Drivers/ drv_can.c 文件

//file: rtdevice.h

技巧:直接检索 RT_USING_CAN 即可

到此,我们已经知道相关配置宏定义名称 在 on-chip 一栏下添加

menuconfig BSP_USING_CAN bool "Enable CAN BUS" default n #默认 关闭 select RT_USING_CAN //依赖 RT_USING_CAN //在 rtdevice.h 文件中可以找到 if BSP_USING_CAN config BSP_USING_CAN1 bool "Enable CAN1" default y config BSP_USING_CAN2 bool "Enable CAN2" default n endif

配置完成

4 再次进入配置环境

menuconfig 下使能即可,编译

在 keil 文件查看相关代码是否使能成功

最新回复(0)