如何移植RT-Thread的BSP

前言

最近RT-Thread重构了stm32的BSP,看了一下,感觉很思路很清晰

 

目录简介
bsp\stm32\docs重构BSP的介绍文档
bsp\stm32\libraries各系列的stm32的HAL库
bsp\stm32\libraries\HAL_Drivers基于HAL库的设备驱动
bsp\stm32\libraries\HAL_Drivers\config外设驱动的配置文件
bsp\stm32\libraries\HALDrivers\drv_flashflash的配置文件
bsp\stm32\libraries\templates移植BSP的模板
bsp\stm32\stm32fxxx-xxx-xxx各开发板的适配工程

 

我觉得这就是我想要的,于是就开始移植重构后的BSP

 

移植流程

  • 复制一个与自己开发板系列相近的BSP

  • 修改Scons脚本文件

  • 修改驱动文件

  • 规范BSP

 

复制一个与自己开发板系列相近的BSP

先找一个和自己开发板MCU类似的BSP,例如我的开发板的MCU是stm32f767,所以我复制了这个目录下的工程

bsp\stm32\stm32f429-fire-challenger

 

修改名字为你的开发板名字,例如我的

bsp\stm32\stm32f767-fire-challenger

 

然后,在libraries目录下加入你使用的MCU系列的HAL库文件,比如我的f7系列就是

bsp\stm32\libraries\STM32F7xx_HAL

 

HAL库文件可以从STM32CubeFx中解压得到

然后参照着已经有的HAL库文件夹的情况,将一些使用不到的文件删除,特别是以下文件需要删除,否则会报错

bsp\stm32\libraries\STM32F7xx_HAL\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_msp_template.c bsp\stm32\libraries\STM32F7xx_HAL\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_timebase_rtc_alarm_template.c bsp\stm32\libraries\STM32F7xx_HAL\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_timebase_rtc_wakeup_template.c bsp\stm32\libraries\STM32F7xx_HAL\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_timebase_tim_template.c

在移植完成后,将

bsp\stm32\stm32f767-fire-challenger

复制到下面这个目录

bsp\stm32\libraries\templates

将名字更改为

bsp\stm32\libraries\templates\stm32f7xx

 

修改Scons脚本文件

需要修改的脚本文件有点多,不过不急,慢慢来

可以从我提交的pr中看到我修改过的脚本文件,我将他们全部列出来,免得有人遗漏了需要修改的地方

 

  • bsp/stm32/libraries/HAL_Drivers/SConscript

  • bsp/stm32/libraries/HALDrivers/drvconfig.h

  • bsp/stm32/libraries/Kconfig

  • bsp/stm32/libraries/STM32F7xx_HAL/SConscript

  • bsp/stm32/stm32f767-fire-challenger/Kconfig

  • bsp/stm32/stm32f767-fire-challenger/SConscript

  • bsp/stm32/stm32f767-fire-challenger/SConstruct

  • bsp/stm32/stm32f767-fire-challenger/applications/SConscript

  • bsp/stm32/stm32f767-fire-challenger/board/Kconfig

  • bsp/stm32/stm32f767-fire-challenger/board/SConscript

  • bsp/stm32/stm32f767-fire-challenger/rtconfig.py

  • bsp/stm32/libraries/templates/stm32f7xx/Kconfig

  • bsp/stm32/libraries/templates/stm32f7xx/SConscript

  • bsp/stm32/libraries/templates/stm32f7xx/SConstruct

  • bsp/stm32/libraries/templates/stm32f7xx/applications/SConscript

  • bsp/stm32/libraries/templates/stm32f7xx/board/Kconfig

  • bsp/stm32/libraries/templates/stm32f7xx/board/SConscript

  • bsp/stm32/libraries/templates/stm32f7xx/rtconfig.py

看着脚本文件很多,其实也不是太麻烦,只要参考已有的模板,该起来很容易的,那么接下来一个个来讲解吧

bsp/stm32/libraries/HAL_Drivers/SConscript

需要在这个文件中加入你的soc系列,按顺序排好,如图

 

 

bsp/stm32/libraries/HALDrivers/drvconfig.h

同上,加入你的soc系列

 

 

bsp/stm32/libraries/Kconfig

同上,加入你的soc系列

 

 

bsp/stm32/libraries/STM32F7xx_HAL/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\STM32F4xx_HAL\SConscript

然后修改图中标记部分

 

bsp/stm32/stm32f767-fire-challenger/Kconfig

这个文件可以从下面这个地址复制过来

bsp\stm32\stm32f429-fire-challenger\Kconfig

bsp/stm32/stm32f767-fire-challenger/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\stm32f429-fire-challenger\SConscript

bsp/stm32/stm32f767-fire-challenger/SConstruct

这个文件可以从下面这个地址复制过来

bsp\stm32\stm32f429-fire-challenger\SConstruct

bsp/stm32/stm32f767-fire-challenger/applications/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\stm32f429-fire-challenger\applications\SConscript

bsp/stm32/stm32f767-fire-challenger/board/Kconfig

这个文件可以从下面这个地址复制过来

bsp\stm32\stm32f429-fire-challenger\board\Kconfig

不过需要修改图中标记部分

 

 

bsp/stm32/stm32f767-fire-challenger/board/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\stm32f429-fire-challenger\board\SConscript

不过需要修改图中标记部分

 

bsp/stm32/stm32f767-fire-challenger/rtconfig.py

这个文件可以从下面这个地址复制过来

bsp\stm32f7-disco\rtconfig.py

我是从旧版BSP中找的,你也可以找找你对应型号的旧版BSP中的这个脚本

之后这个templates中的脚本修改内容和前面基本一样的

bsp/stm32/libraries/templates/stm32f7xx/Kconfig

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\templates\stm32f4xx\Kconfig

bsp/stm32/libraries/templates/stm32f7xx/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\templates\stm32f4xx\SConscript

bsp/stm32/libraries/templates/stm32f7xx/SConstruct

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\templates\stm32f4xx\SConstruct

bsp/stm32/libraries/templates/stm32f7xx/applications/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\templates\stm32f4xx\applications\SConscript

bsp/stm32/libraries/templates/stm32f7xx/board/Kconfig

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\templates\stm32f4xx\board\Kconfig

不过需要修改图中标记部分

 

 

bsp/stm32/libraries/templates/stm32f7xx/board/SConscript

这个文件可以从下面这个地址复制过来

bsp\stm32\libraries\templates\stm32f4xx\board\SConscript

不过需要修改图中标记部分

 

bsp/stm32/libraries/templates/stm32f7xx/rtconfig.py

这个文件可以从下面这个地址复制过来

bsp\stm32f7-disco\rtconfig.py

修改驱动文件

驱动文件分为:实现和配置

实现是下面这个目录下的.c文件

bsp\stm32\libraries\HAL_Drivers

配置是以下目录下的.h和部分.c文件

bsp\stm32\libraries\HAL_Drivers\config\fx bsp\stm32\libraries\HAL_Drivers\drv_flash bsp\stm32\stm32f767-fire-challenger\board\ports

我们需要做的事就是根据开发板实际情况进行修改

下面以移植uart为例子

先确认config文件是否符合开发板实际情况,同一个系列的MCU的移植不需要修改config

bsp\stm32\libraries\HAL_Drivers\config\f7\uart_config.h

根据HAL库的情况修改以下文件

bsp\stm32\libraries\HAL_Drivers\drv_usart.c

例如f7系列,参照stm32f7xxhaluart.h,看看什么drv_usart.c中使用到的API是stm32f7xx_hal_uart.h中没有的,改为stm32f7xx_hal_uart.h有的接口,可以参考下面的方式

还要注意一些寄存器是某些系列的产品特有的,要用宏定义区分,例如

其他需要修改的地方都是差不多的,可以参考一下我的修改

在移植完驱动后,需要使用Cubemx启动外设,这部分请参考如何添加更多的片上资源选项

不过串口1默认是开启的

规范BSP

这部分请参考STM32 系列 BSP 制作规范

移植到此结束,欢迎尝试

 


 

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
对于MSP432微控制器的RT-Thread操作系统移植,您可以按照以下步骤进行操作: 1. 准备工作: - 下载RT-Thread源代码:从RT-Thread官方网站下载最新版本的源代码。 - 安装MSP432开发环境:确保您已经安装了MSP432的开发环境,包括MSP432 LaunchPad开发板和相关软件。 2. 创建MSP432的板级支持包(BSP): - 在RT-Threadbsp文件夹下创建一个新的目录,命名为msp432。 - 在msp432目录下创建一个board.c文件,实现与MSP432开发板相关的初始化函数,如时钟配置、中断配置等。 - 根据MSP432的数据手册和参考手册,编写板级支持包的代码,以适配MSP432的硬件。 3. 配置RT-Thread内核: - 在RT-Thread的env目录下创建一个新的目录,命名为msp432。 - 在msp432目录下创建一个rtconfig.h文件,配置RT-Thread内核的相关选项,如内存大小、线程数量等。 - 根据MSP432的特性和需求,进行相应的内核配置。 4. 编译和烧录: - 进入RT-Thread的根目录,执行menuconfig命令进行配置,选择MSP432平台和相应的BSP。 - 执行scons命令,编译RT-Thread操作系统。 - 使用MSP432开发环境将生成的可执行文件烧录到MSP432开发板上。 5. 应用程序开发: - 在RT-Thread的applications目录下编写应用程序代码,实现您的功能。 - 在bsp/msp432目录下添加驱动代码或配置文件,以支持您的应用程序。 - 编译和烧录应用程序到MSP432开发板上。 这些是大致的步骤,具体的移植过程可能会因各种因素而有所不同。您可以参考RT-Thread官方文档和MSP432的相关资料,以获取更详细的移植指南。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

greedyhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值