RT-Thread 移植到ufun开发板 — bsp stm32f103-yf-ufun制作教程
正文共:3797 字 44 图
预计阅读时间: 10 分钟
作者:刘恒 本文多图,请注意流量消耗
【加微信:18917005679 可获取本篇文章PDF】
一、准备工具
1、PC机,本教程用的windows 7 ,64位操作系统。
2、USB数据线一根,一端接PC USB接口,另一端接开发板micro USB接口。
3、jlink、st-link或其它仿真器一台,不是必须,为方便调试,最好有,这里用st-link转换的jlink。
4、ufun开发板一块。
二、安装工具软件
1、安装MDK4、MDK5、IAR其中一个或全部IDE
安装方法网上搜索。
2、安装STM32CubeMX
安装方法网上搜索。
ufun开发板的MCU是STM32F103RCT6,先用STM32CubeMX下载STM32CubeF1 Firmware Package,启动STM32CubeMX,Help -> Manage embedded software packages
打开嵌入式包管理器,选择STM32Cube MCU Packages选项卡,点开STM32F1系列前的黑三角,选中最新的版本包,单击Install Now,开始下载包。
等待下载完成,自动解压
完成上述过程,单击Close
3、st-link转换的jlink
如果你有jlink,直接跳过此步。
这样折腾是为了后期使用SEGGER的SystemView,转换方法SEGGER官网有。到下面链接找:Converting ST-LINK On-Board Into a J-Link
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
4、安装jlink驱动
安装一路next即可。
驱动可以去官网下载。链接如下:
https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
5、安装env
到RT-Thread官网下载安装,env使用教程链接:
Env 视频教程
https://www.rt-thread.org/document/site/tutorial/env-video/
Env 用户手册
https://www.rt-thread.org/document/site/programming-manual/env/env/
6、安装CH340T USB转串口驱动
驱动和安装方法网上搜索。
三、制作stm32f103-yf-ufun bsp
本教程参考RT-Thread官网文档《STM32 系列 BSP 制作教程》,官网文档链接:
https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md
1、到RT-Thread官网,找到github代码仓库地址,克隆一份master分支到本地,本地自动创建名为rt-thread的文件夹。
2、复制通用模板
本次ufun开发板MCU型号为STM32F103RCT6,用的 F1 系列 BSP 模板。
到路径rt-thread\bsp\stm32\libraries\templates中,复制一份文件夹stm32f10x
粘贴到路径rt-thread\bsp\stm32
并重命名为stm32f103-yf-ufun,由于我这里已有与一份stm32f103-yf-ufun,这里重命名为stm32f103-yf-ufun-2为例说明。
3、使用 CubeMX 工具配置工程
进入路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board\CubeMX_Config
双击CubeMX_Config.ioc,用STM32CubeMX打开模板STM32CubeMX工程
由于模板工程用STM32CubeMX版本5.0.0创建,我安装的STM32CubeMX版本5.2.0,单击Migrate。
单击原芯片型号,修改为目标板ufun MCU型号
等出现如下界面
红框中输入目标芯片STM32F103RC,并双击对应的芯片STM32F103RCTx
按下图步骤配置外部晶振
按下图步骤配置串行线调试
按下图步骤配置USART1异步模式,与ufun开发板上的USB转串口对接的是USART1
按下图步骤配置时钟,这里把频率配置最大
按下面步骤工程名称,和生产目标代码的位置,第3步选择路径到文件夹board,下面的工具链一栏自动填入,无需手工选择
单击右上部的GENERATE CODE,生成代码。
提示目标工程已存在,是否覆盖,单击Yes覆盖旧文件。
目标路径生成的工程如下图,红框的两个文件夹不需要,直接删除
打开路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board\CubeMX_Config\Src下的文件main.c,把其中的函数SystemClock_Config,拷贝到路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board下的文件board.c中,替换board.c中的函数SystemClock_Config。
打开路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board下的文件board.h,修改 STM32_FLASH_SIZE 和 STM32_SRAM_SIZE 这两个宏控制的参数。本次制作的bsp所用的STM32F103RCTx芯片的flash大小为256k,ram的大小为48k,因此对该文件作出如下的修改:
4、修改 BSP 中的 Kconfig 文件
打开路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board中的文件Kconfig,把芯片型号SOC_STM32F103RB改为SOC_STM32F103RC,片上外设配置有GPIO和UART1即可。
5、修改构建工程相关文件
打开路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board\linker_scripts中的3个链接脚本文件,修改其中的flash和ram大小与目标芯片一致
打开路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2\board中文件SConscript,修改启动文件和目标芯片,这里参考STM32CubeMX生成的工程代码,其中使用的startup_stm32f103xe.s,确保startup_stm32f103xe.s在以下三个路径都有,如果没有,可以到STM32CubeMX生成的工程代码中拷贝。
rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm
rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\gcc
rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\iar
预编译宏定义是STM32F103xE
打开路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2中的工程模板,MDK5的工程模板是template.uvprojx,MDK5的工程模板是template.uvproj,IAR的工程模板是template.eww,分别配置三个模板
修改正确的目标芯片和下载程序用的仿真器,并配置仿真器目标芯片,以下已MDK5的工程模板配置截图展示。
6、重新生成工程
在路径rt-thread\bsp\stm32\stm32f103-yf-ufun-2中,打开env
输入menuconfig,回车
确保启用GPIO,UART1
使用env工具输入命令scons --target=mdk5重新生成工程
到这一步为止,新的bsp就可以使用了。
接下来我们可以分别使用命令scons --target=mdk4和scons --target=iar,来更新mdk4和iar的工程,使得该BSP变成一个完整的
7、测试生成的工程
打开MDK5目标工程,修改ufun开发板上LED3闪烁控制引脚为PA3,如下图
工程编译成功
把ufun开发板用之前准备的USB数据线连接到PC,仿真器与ufun开发板调试口连接
MDK5中下载flash到目标板测试
按下ufun的复位键,LED3闪烁正常
在设备管理器中找到ufun开发板上USB转串口对应的串口号
用串口工具打开,配置串口参数如下图
打开串口,回车,出现tshell提示符
按下ufun的复位键,打印RT-Thread启动信息
按下tab键,输出可用命令
再分别对MDK4,IAR的目标工程进行测试成功。
输入命令scons,用env自带的gcc编译器编译成功。
到此,新的ufun开发板bsp就制作完成了。
用文件对比工具,对比新的bsp与已有bsp中的文件,清除不必要的文件,确保bsp干净整洁。
依照其它bsp,完善readme文件,这样就可以提交到GitHub的bsp了。
RT-Thread线下活动
1、【西安站】物联网操作系统RT-Thread基础入门免费培训全天:2019年6月22日 9:30 ~ 2019年6月22日 17:00,培训全程将以【理论+动手】方式进行,通过拆解一个DEMO实例,带你从内核到组件到软件包全面了解RT-Thread的体系框架。
扫码报名
#题外话# 喜欢RT-Thread不要忘了在GitHub上留下你的星
你可以添加微信18917005679为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群
RT-Thread
让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。
长按二维码,关注我们