开发环境
- RT-Thread 版本: v5.2.2
- 目标芯片型号: GD32F450ZK
本文将在之前搭建好的Ubuntu系统与RT-Thread开发环境基础上,手把手演示如何为GD32F450系列单片机创建工程、进行配置,并使用VSCode完成编码与测试。
获取BSP源码包
首先,我们需要获取对应版本的RT-Thread源码。打开终端,执行以下命令来克隆指定版本(v5.2.2)的仓库:
git clone --depth 1 -b v5.2.2 https://gitee.com/rtthread/rt-thread.git
cd rt-thread/
git describe --tags

最后一条命令用于确认当前所在代码的标签版本,应输出 v5.2.2。
生成独立工程
RT-Thread使用BSP(板级支持包)结构。我们进入GD32F450评估板的BSP目录,并生成一个可独立分发的工程。
cd rt-thread/bsp/gd32/arm/gd32450z-eval
scons --dist
执行打包命令时,可能会遇到依赖包缺失的提示。

根据提示,运行包管理器更新命令以下载所需的芯片支持包:
pkgs --update

依赖包下载完成后,再次执行 scons --dist 命令。这次命令会成功执行,将BSP打包成一个独立的工程目录(例如 dist/gd32450z-eval),方便我们后续在VSCode中打开和开发。打包过程涉及到编译和链接的准备工作。

关键工程配置
将生成的独立工程目录(gd32450z-eval)在VSCode中打开,接下来需要对几个关键文件进行修改,以适配GD32F450ZK芯片的具体硬件资源。
1. 修改链接脚本 (link.ld)
找到并打开 link.ld 文件。GD32F450ZK的Flash大小为3072KB,但SRAM大小为192KB(而非256KB)。需要将DATA区域的LENGTH从 256k 修改为 192k。

这个链接脚本定义了程序的内存布局,是链接器工作的核心依据。
2. 修改板级头文件 (board.h)
打开 board.h 文件,找到SRAM大小定义的部分。同样地,将 GD32_SRAM_SIZE 的宏定义值从 256 修改为 192。

此处的修改确保了系统在初始化时能正确识别可用的内存管理空间。
3. 修改RT-Thread配置文件 (rtconfig.h)
打开 rtconfig.h 文件,找到控制台设备名称的定义。需要将 RT_CONSOLE_DEVICE_NAME 的宏定义从 “uart” 改为 “uart0”,以匹配GD32系列UART设备的命名。

编译与功能测试
完成上述配置后,我们就可以开始编写应用代码了。在 applications 目录下的 main.c 文件中,实现一个简单的LED闪烁程序作为测试。
/*
* 程序功能:LED闪烁
* 硬件连接:LED连接在PE3引脚
*/
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
/* 定义LED引脚: PE3 */
#define LED1_PIN GET_PIN(E, 3)
int main(void)
{
int count = 1;
/* 设置LED引脚为输出模式 */
rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
while (count++)
{
rt_pin_write(LED1_PIN, PIN_HIGH); // 点亮LED
rt_thread_mdelay(500); // 延时500ms
rt_pin_write(LED1_PIN, PIN_LOW); // 熄灭LED
rt_thread_mdelay(500); // 延时500ms
}
return RT_EOK;
}
在终端中进入工程目录,使用 scons 命令即可编译项目,生成固件。将固件下载到GD32F450ZK开发板后,可以看到LED开始以1秒的周期闪烁。

通过串口工具连接开发板,上电后可以看到RT-Thread系统成功启动,并进入命令行交互界面(msh),这标志着整个开发环境与基础工程运行正常。

至此,我们已经完成了在RT-Thread操作系统下,使用VSCode进行GD32F450单片机开发的完整流程。从环境搭建、工程创建、配置修改到代码编写与功能验证,这个过程涵盖了嵌入式系统编程的多个基础环节。希望这篇实践指南能为你后续更复杂的项目开发打下基础。更多深入的技术文档和社区讨论,欢迎访问云栈社区。