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

新的 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_Config CubeMX 工程
linker_scripts BSP 特定的链接脚本
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 文件查看相关代码是否使能成功

发布了120 篇原创文章 · 获赞 27 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_24890953/article/details/102851736
今日推荐