获取 rt-thread 软件包
使用 git 工具,在 rt-thread 官网或者 gitee 的代码库获取最新的 rt-thread 源代码。
源代码目录结构如下所示:
源码的目录结构就不进行详细的说明了,相关的资料可以在 rt-thread 的官网查到。
有了 rt-thread 的代码,下面就是制作符合我们硬件实际情况的 BSP软件包了。
BSP 软件包制作
rt-thread 的源代码针对 STM32 系列的应用提供了移植模板,移植起来非常的方便。
根据 rt-thread 官方提供的资料,在进行 BSP 制作是主要分为以下几步:
1 | 1. 复制通用模板 |
1. 复制通用模板
把 \bsp\stm32\libraries\templates 目录下的 stm32f10x 模板复制到 \bsp 目录下,并命名为 stm32f103rct6-robot-controller :
复制好了之后,就可以进行 bsp 软件包的移植了。
2. 使用 CubeMX 配置工程
根据开发板的原理图,使用 CubeMX 工具对工程进行基本配置。进入工程目录下的 board\CubeMX_Config 目录,使用 CubeMX 工具 打开 CubeMX_Config.ioc 文件,即可进入工程配置。
PS:CubeMX 是 ST 官方提供的一个图形化配置工具,使用 CubeMX 可以非常方便对 ST 的芯片进行片上外设的配置,大大减低了工程配置的时间,加快了开发的进度。
2.1 修改芯片为 stm32f103RCTx
首先,根据实际使用的 ST 的芯片,选择 stm32f103RCTx 系列的芯片。
然后根据原理图,配置好 stm32f103RCTx 的各个管脚功能。
2.2 配置 stm32f103RCTx 基本配置
根据原理图配置外部高速时钟、串口1、串口2、串口3、SPI总线以及芯片时钟等。
配置完成后,直接使用 CubeMX 生成芯片的配置代码。
把生成的目录中 MDK-ARM 目录以及 Drivers 目录删除。并将 /src/main.c 文件中的 SystemClock_Config 函数复制到 board/board.c 文件中,替换原来的 SystemClock_Config 函数。
2.3 堆内存配置讲解
通常情况下,系统 RAM 中的一部分内存空间会被用作堆内存。下面代码的作用是,在不同编译器下规定堆内存的起始地址 HEAP_BEGIN 和结束地址 HEAP_END。这里 HEAP_BEGIN 和 HEAP_END 的值需要和后面 [3.4.1 修改链接脚本](# 3.4.1 修改链接脚本) 章节所修改的配置相一致。
在某些系列的芯片中,芯片 RAM 可能分布在不连续的多块内存区域上。此时堆内存的位置可以和系统内存在同一片连续的内存区域,也可以存放在一片独立的内存区域中。例如在 L4 系列的芯片上,就可以将堆内存配置在起始地址为
0x20000000
的大小为 96k 的内存空间,而将0x10000000
开始的 32k 内存空间用作系统运行内存。
2.4 修改 Kconfig 选项
在本小节中修改 board/Kconfig
文件的内容有如下两点:
- 芯片型号和系列
- BSP 上的外设支持选项
芯片型号和系列的修改如下表所示:
宏定义 | 意义 | 格式 |
---|---|---|
SOC_STM32F103Rc | 芯片型号 | SOC_STM32xxx |
SOC_SERIES_STM32F1 | 芯片系列 | SOC_SERIES_STM32xx |
然后,打开 board/Kconfig 文件把文件的内容更改如下:
1 | menu "Hardware Drivers Config" |
至此,rt-thread 的 bsp 软件包就基本制作完成了。