hehung · 2022年12月03日 · 四川

【GD32F427开发板试用】2. RT-Thread标准版移植

之前的帖子

【GD32F427开发板试用】1. 串口实现scanf输入控制LED

前言

一个嵌入式系统对于单片机开发可以事半功倍,目前常用的嵌入式系统有FreeRTOS以及RT-Thread,RT-Thread是国内的开元嵌入式操作系统,使用起来很方便,还支持Shell,本次将RT-Thread移植到GD32F427上。

本文主要实现如下功能:

  1. 基于RT-Thread 现在gd32407v-start的BSP更新为GD32F427V-Start的BSP,在MDK上完成RT-Thread标准版适配;
  2. 修改FINSH默认串口配置;
  3. 使用RT-Thread Stdio开发GD32F427V-start。

BSP移植源码以及资料下载:

源码可以直接在Gitee上下载,国内访问很快。
https://gitee.com/rtthread/rt-thread
当然也可以使用Github:https://github.com/RT-Thread/rt-thread
BSP制作过程中需要用到ENV工具。
EVN工具下载地址:https://www.rt-thread.org/download.html
ENV工具使用教程
ENV工具教程:https://www.rt-thread.org/document/site/#/development-tools/env/env?id=env-%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95

RT-Thread官方基于gd32f407v-start有较为详细的移植教程。
移植教程:https://gitee.com/rtthread/rt-thread/blob/gitee_master/bsp/gd32/arm/docs/GD32_ARM%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md

移植工作

BSP

参考官方gd32f407v-start的移植教程,进行移植,因为gd32F407V-start与gd32f427v-start相似度很高,移植起来修改很小。

创建gd32f427v-start工程

进入目录: rt-thread-gitee_master\bsp\gd32\arm,将gd32f407v-start工程拷贝一份,更名为gd32f427v-start。
1.png

更新工程配置

如果使用的是MDK5,打开template.uvprojx文件,在MDK5上修改相关配置;
如果使用的是MDK4,打开template.uvproj文件,在MDK4上修改相关配置。

此处注意:必须要打开template.uvprojx/template.uvproj文件,不要打开project.uvprojx/project.uvproj。
  1. 修改目标设备
    如下,选择GD32F427VK
    2.png
  2. 修改调试器
    7.png

之后保存退出,即可。

更新库文件

将我们下载的最新的GD32F4xx_Firmware_Library库更新到:xxx/rt-thread-gitee_master\bsp\gd32\arm\libraries
因为RT-Thread官方并不会计时更新库,官方的库不包含对F427V的支持,需要更新到最新的库;
更新下图的内容
3.png

修改librariex下的Kconfig文件

修改如下,删除不需要的配置。

config SOC_FAMILY_GD32
    bool

config SOC_SERIES_GD32F4
    bool
    select ARCH_ARM_CORTEX_M4
    select SOC_FAMILY_GD32

修改gd32f427v-start/SConstruct文件

本文件主要修改编译后的elf以及map文件名,不该也可以。
我修改为如下:
96.png

修改链接文件

连接文件在gd32f427v-start/board/linker_scripts下,链接文件中主要修改RAM预计FLASH的起始,结束地址,通过查看数据手册,GD32F427vk的RAM大小为256KB,FLASH大小为3072KB。
5.png

注意:虽然RAM地址为256KB,但是链接文件中只能写196KB的大小,不然heap初始化会进入硬件异常,我也不清楚具体原因,查看了用户手册,发现应该是内部RAM可用范围为196KB的原因,如下图,112+64+16 = 192KB。
97.png

GD32F427V的RAM大小为192KB,因为GD32F427VK只能用192KB,所以三个链接文件都不需要进行更新,可以直接使用。

修改board/Sconscript

修改如下:
93.png

修改串口引脚

默认串口引脚PA9在GD32F427V-Start上不能使用,所以需要修改为其他的复用串口引脚,在libraries/gd32_drivers/drv_usart.c里面修改,如下图:
94.png

配置串口USART0

一下步骤都需要使用到ENV工具,参考教程,在RT-Thread官方下载ENV工具,然后将工具添加到右键菜单栏,在工程目录gd32f427v-start下单击右键,选择ConEmu Here,打开ENV配置工具
99.png

然后输入menuconfig打开配置菜单,进行如下配置

  1. 使能uart0
    8.png
  2. rt_kprintf关联到uart0
    修改rt_kprintf串口映射关系
    98.png

之后保存,退出

生成MDK5工程

配置完成之后,输入如下命令编译。

scons

输入如下命令生成MDK5工程

scons --target=MDK5

--target=MDK5/MDK4/IAR可以生成基于KEIL5/KEIL4/IAR的工程

验证RT-Thread是否移植成功

打开project.uvprojx,编译,下载,打开串口调试助手,可以看到如下界面,输入help,查看命令,并且LED2没500ms闪烁一次,表示移植成功。
990.png

使用RT-Thread Studio开发

目前已经实现了基于MDK5的开发环境的搭建,但是RT-Thread Studio开发起来更便捷一些,可以直接打开配置界面进行配置,然后编译下载,不需要在单独使用ENV工具进行配置。所以我决定后面都用RT-Thread Studio开发,下面说明过程。

打开ENV工具,使用下面的命令生成工程:

scons --dist

使用该命令后,会在工程目录下的dist目录下生成工程,还有一个是工程的压缩文件。

使用RT-Thread Studio 调试

之后导入工程,编译下载即可,很便捷,可以使用板载的GD-Link下载,也可以使用SWD,用JLINK或者是ST-LINK下载调试。
我试了一下,如果用ST-LINK下载是可以的,但是调试会报错,暂时没找到原因。
可以使用板载的GD-LINK下载,配置方式如下:

  1. 配置下载方式
    9.png
  2. 配置device名称
    90.png
  3. 下载信息
    可以看到下载的时候有报错信息,但是不用管它,依然可以下载成功,调试也是一样的,可以正常调试,暂时没找到具体报错原因,不影响使用。
    91.png
推荐阅读
关注数
10711
内容数
187
中国高性能通用微控制器领域的领跑者兆易创新GD系列芯片技术专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息