首先当然是要准备RT Thread源码啦,最新版本是4.0.3,下载地址是https://gitee.com/rtthread/rt-thread.git
制作BSP分5个步骤
下载完成后解压、打开、找到bsp\stm32\libraries,这是制作自己bsp的通用库。
复制一份同系列的BSP作为模板基础,通过修改BSP来得到自己的BSP。
本人使用的芯片型号是STM32F103RCT6,所以复制RT-Thread\rt-thread-master\bsp\stm32\libraries\templates路径下的stm32f10x文件夹作为基础BSP。
粘贴到RT-Thread\rt-thread-master\bsp\stm32路径下,并改文件名为stm32f103-my-bsp
打开stm32f103-my-bsp,文件目录如下
需要创建一个基于目标芯片的 CubeMX 工程。默认的 CubeMX 工程在 CubeMX_Config文件夹中,双击打开 CubeMX_Config.ioc 工程,注意看文件路径
打开CubeMX选择自己板子上具体的芯片型号,我这里选择STM32F103RCT6
然后配置基本的GPIO口和一路串口作为shell组件的输出口,我的板子上用的是UART3作为串口,所以配置一下PB10和PB11.
然后在Connectivity下配置串口工作模式,并打开串口中断。
然后切换到Clock Configuration页面配置时钟,我的板子上使用的是单片机的内部晶振,最高频率可以跑到64MHz。
然后切换到Prject Manager页面,配置工程名字和路径在指定地址重新生成CubeMX工程。
生成MDK工程后只需要保留这四个文件,其他文件可以删除。
然后在Src文件下找到main.c文件,打开复制SystemClock_Config初始化代码。
将配置好的时钟初始化代码替换掉board.c中的时钟初始化代码。
board.h中配置了芯片的Flash和RAM大小,根据实际使用的芯片改成对应大小。STM32F103RCT6的Flash位256KRAM是48K
修改 board/Kconfig 文件,打开Kconfig文件
然后要修改工程构建相关文件,修改链接脚本,打开linker_scripts下的link.sct文件。
根据芯片的Flash和RAM大小修改这三个地方,要以十六进制表示。
其他两个链接脚本的文件分别为 iar 使用的 link.icf 和 gcc 编译器使用的 link.lds
然后打开SConscript文件,修改启动文件和芯片型号。
注意:如果在文件夹中找不到相应系列的 .s 文件,可能是多个系列的芯片重用了相同的启动文件,此时可以在 CubeMX 中生成目标芯片的工程,查看使用了哪个启动文件,然后再修改启动文件名。
template文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式。MDK4/MDK5/IAR 的工程模板文件,如下图所示
双击打开模板,修改芯片型号和选择下载和仿真器。
选择完成后就可关闭工程了。
然后在env界面输入命令menuconfig对工程进行配置,并生成新的rtconfig.h文件。
并将RT-Thread Kernel下的Kernel Device Object里的the device name for console改为uart3.
退出保存后再env中输入命令scons --target=mdk5重新生成工程
到这里新的BSP就可以使用了,双击打开工程
编译完成后打开PuTTY,下载、成功打印出RT Thread的Logo信息。BSP制作完成。
BSP制作完成后想要复制到别的路径下去怎么办?
scons --dist
使用此命令会在 BSP 目录下生成 dist 目录,这便是开发项目的目录结构,包含了RT-Thread源码及BSP相关工程,不相关的BSP文件夹及libcpu都会被移除,并且可以随意拷贝此工程到任何目录下使用。
使用完这个命令会在当前工程目录下生产dist文件夹,文件里包含改工程所用到的所有文件。
打开文件复制里面的stm32f103-my-bsp文件夹到需要的路径下,即可开始新项目的开发。
本文参考http://www.sohu.com/a/298141306_467791