GD32H759I-START 开发板 RT-Thread BSP 快速上手与进阶配置指南
【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread
GD32H759I-START 是兆易创新推出的 GD32H7 系列评估板,搭载主频高达 600MHz 的 GD32H759IM 芯片(ARM Cortex-M7 内核),配合 RT-Thread 开源物联网实时操作系统,可用于高性能边缘计算、工业控制与人机交互等场景。本文以 bsp/gd32/arm/gd32h759i-start/README.md 为骨架,结合仓库内该 BSP 的源码、Kconfig 配置与构建脚本,完整讲解开发板资源、从零上电到串口输出"RT-Thread 启动横幅"的快速上手流程,以及通过 ENV 工具开启 UART、RTC 等高级外设的进阶配置方法,读者学完即可独立完成该 BSP 的烧录、验证与裁剪扩展。
开发板与芯片概览
GD32H759I-START(README 中亦称 GDH759I-START)是兆易创新面向 GD32H7 系列推出的评估板,定位是让开发者充分发挥 GD32H759IM 芯片的完整性能。
核心芯片 GD32H759IMT6 的关键规格如下:
| 项目 | 参数 |
|---|---|
| CPU 内核 | ARM Cortex-M7 |
| 最高主频 | 600MHz |
| FLASH | 3840KB(约 3.75MB) |
| RAM | 1024KB(1MB) |
| 调试接口 | GD-LINK(板载) |
开发板常用板载资源:
- 用户 LED:4 个,LED1(PC9)、LED2(PC10)、LED3(PC11)、LED4(PC12)
- 电源指示灯:1 个红色 LED
- 按键:2 个,User Key(PD15)与复位键 Reset(NRST)
- 调试接口:GD-LINK(支持下载与仿真)
从源码侧可以进一步印证芯片的内存布局。在 bsp/gd32/arm/gd32h759i-start/board/board.h 中,BSP 将内部 SRAM 大小配置为 512KB(GD32_SRAM_SIZE 512,起始地址0x24000000),并预留了外部 SDRAM 区间定义(EXT_SDRAM_BEGIN 0xC0000000,大小 32MB),说明该评估板具备扩展 SDRAM 的硬件条件,后续如需大内存场景可在此基础上接入 SDRAM 驱动。
外设支持情况
该 BSP 当前对外设的支持情况如下:
| 类别 | 外设 | 支持情况 | 备注 |
|---|---|---|---|
| 片上外设 | GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...121 |
| 片上外设 | UART | 支持 | UART0 - UART3 |
| 扩展模块 | 暂无 | 暂不支持 | 暂不支持 |
其中 GPIO 的 PIN 编号规则为:从 PA0 开始按引脚序映射为 PIN 0,直到 PA0...PIN 121,对应 GD32H759 的引脚集合。该映射由 bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.c 与drv_gpio.h中的 PIN 索引表实现,应用层通过 RT-Thread 的 PIN 设备框架(rt_pin_mode/rt_pin_write)操作时即使用这套编号。
需要说明的是,"外设支持表"仅代表该 BSP默认开启并验证的能力。从 bsp/gd32/arm/libraries/gd32_drivers 目录结构可以看到,GD32 驱动库还提供了 ADC、CAN、硬件 I2C、PWM、RTC、SDIO、SDRAM、SPI、Timer、WDT 等更多驱动源文件(如drv_adc.c、drv_can.c、drv_rtc.c、drv_sdram.c、drv_timer.c、drv_wdt.c等),配合 ENV 工具裁剪配置后即可启用。
快速上手
快速上手章节面向刚接触 RT-Thread 的新手,只需遵循以下步骤即可让 RT-Thread 在开发板上运行起来并看到实验效果。本 BSP 同时提供 MDK5 工程(Keil MDK5)、GCC 开发环境支持,也可直接使用 RT-Thread Studio 开发。下面以 MDK5 开发环境为例。
硬件连接
- 使用数据线连接开发板的GD-LINK USB 口到 PC(用于下载与调试)。
- 使用另一根数据线连接开发板的USART(0) USB 口到 PC(用于串口通信与供电)。
- 开发板通过 USB 供电即可运行。
若串口无输出,请确认驱动安装完成,并在设备管理器中识别到对应的 COM 口。
编译下载
- 双击打开 BSP 根目录下的
project.uvprojx(路径:bsp/gd32/arm/gd32h759i-start/project.uvprojx),进入 MDK5 工程。 - 点击Build(编译)按钮编译工程。
- 点击Download(下载)按钮将程序下载到开发板。
工程默认配置使用 GD-Link 仿真器下载程序,在通过 GD-Link 连接开发板的基础上,直接点击下载按钮即可烧录,无需额外配置调试器。
运行结果
下载成功后系统自动运行,表现为LED 闪烁——对应 bsp/gd32/arm/gd32h759i-start/applications/main.c 中的示例逻辑:main函数将 LED1(PC9)配置为推挽输出后,每 500ms 翻转一次电平,循环闪烁。
/* defined the LED1 pin: PC9 */ #define LED1_PIN GET_PIN(C, 9) int main(void) { int count = 1; /* set LED1 pin mode to output */ rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); while (count++) { rt_pin_write(LED1_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED1_PIN, PIN_LOW); rt_thread_mdelay(500); } return RT_EOK; }随后连接开发板对应串口到 PC,在终端工具(如 MobaXterm、SecureCRT、PuTTY)中打开相应串口,串口参数为115200-8-1-N(波特率 115200,数据位 8,停止位 1,无校验)。复位设备后可以看到 RT-Thread 的启动输出信息:
\ | / - RT - Thread Operating System / | \ 5.0.0 build Mar 3 2023 00:43:44 2006 - 2022 Copyright by RT-Thread team msh />出现msh />提示符即代表系统启动成功,可以在此输入 RT-Thread 的 MSH 命令(如list_thread、list_device等)与系统交互。
从源码角度,这段启动流程由 bsp/gd32/arm/gd32h759i-start/board/board.c 中的rt_hw_board_init()驱动:设置中断向量表 VTOR 到 Flash 起始地址、使能 I-Cache 与 D-Cache、配置系统时钟(SystemClock_Config,内部将 SysTick 配置为RT_TICK_PER_SECOND频率)、初始化串口(rt_hw_usart_init)、完成板级组件初始化,并将控制台设备绑定为uart0(rt_console_set_device(RT_CONSOLE_DEVICE_NAME))。注意 BSP 当前默认控制台设备为uart0(对应引脚 PF4/PF5),而非字面上的"串口1",这一点在阅读 README 中"默认只开启了 GPIO 和串口1"的表述时需结合 rtconfig.h 理解。
进阶使用
此 BSP 默认仅开启了 GPIO 与 UART0(控制台),如需使用更多板载资源与高级功能,需要利用ENV 工具对 BSP 进行配置。ENV 是 RT-Thread 提供的命令行配置工具(内嵌 menuconfig 图形化配置界面),操作步骤如下:
- 在 BSP 目录(
bsp/gd32/arm/gd32h759i-start)下打开 ENV 工具。 - 输入
menuconfig命令配置工程,按需勾选外设后保存并退出。 - 输入
pkgs --update命令更新软件包(拉取 GD32 芯片支持包等依赖)。 - 输入
scons --target=mdk4/mdk5/iar命令重新生成对应 IDE 的工程文件。
重新生成的工程即包含你勾选的外设驱动,编译下载即可使用。
关于依赖包,bsp/gd32/arm/gd32h759i-start/SConstruct 中内置了依赖检查逻辑bsp_pkg_check:构建前会检查packages/gd32-arm-cmsis-latest与packages/gd32-arm-series-latest两个目录是否存在,若缺失则提示先执行pkgs --update;若拉取不到包,则需先执行pkgs --upgrade再pkgs --update。也就是说,首次构建前必须完成软件包更新,这也是 README 进阶步骤强调pkgs --update的原因。
构建脚本还支持多工具链切换,见 rtconfig.py:通过环境变量RTT_CC可指定gcc/keil/iar,分别对应 GCC(默认arm-none-eabi-交叉编译器)、Keil MDK(armcc)与 IAR(iccarm)三套编译环境,链接脚本分别使用board/linker_scripts/link.ld、link.sct、link.icf。GCC 调试模式默认-O0 -gdwarf-2,并会在构建后自动生成rtthread.bin与 map 文件。
外设驱动配置详解
进阶配置的核心入口是 bsp/gd32/arm/gd32h759i-start/board/Kconfig,其中以菜单形式组织了芯片型号、片上外设与板载外设的开关。BSP 顶层 Kconfig 依次引入 RT-Thread 内核配置、软件包配置(PKGS_DIR/Kconfig)与共享驱动库配置(../libraries/Kconfig),并在非 Nano 模式下引入board/Kconfig。
芯片型号与 GPIO
SOC_SERIES_GD32H7xx:默认开启,标识芯片系列。SOC_GD32H759IM:默认开启,选择具体型号,同时自动选中RT_USING_COMPONENTS_INIT与RT_USING_USER_MAIN(启用组件自动初始化和用户 main 线程)。BSP_USING_GPIO:默认开启,启用 PIN 设备框架(select RT_USING_PIN),对应drv_gpio.c驱动。
UART 串口配置
BSP_USING_UART默认开启,并提供一个Serial 框架版本选择:BSP_USING_SERIAL_V1(串口 V1 框架,默认)或BSP_USING_SERIAL_V2(串口 V2 框架)。选择 V2 后,可进一步为每个串口开启 RX/TX DMA、配置 ping-pong 缓冲与收发缓冲大小。当前默认配置(rtconfig.h)使用的是 Serial V1 框架(RT_USING_SERIAL_V1)。
四个串口的默认引脚与复用功能(AFIO)如下表所示:
| 串口 | 默认使能 | TX 引脚 | RX 引脚 | 复用功能 |
|---|---|---|---|---|
| UART0 | 是 | PF4 | PF5 | AF4 |
| UART1 | 是 | PA2 | PA3 | AF7 |
| UART2 | 否 | PB10 | PB11 | AF7 |
| UART3 | 否 | PC10 | PC11 | AF8 |
在 menuconfig 中,每个串口都提供BSP_UARTx_TX_PIN、BSP_UARTx_RX_PIN、BSP_UARTx_AFIO三个可配置项,可自由改成其他引脚组合。若使用 Serial V2 框架,还可配置以下参数(以 UART0 为例):
| 配置项 | 含义 | 取值范围 | 默认值 |
|---|---|---|---|
BSP_UART0_RX_USING_DMA | 使能 UART0 RX DMA | 依赖RT_SERIAL_USING_DMA | 否 |
BSP_UART0_TX_USING_DMA | 使能 UART0 TX DMA | 依赖RT_SERIAL_USING_DMA | 否 |
BSP_UART0_DMA_PING_BUFSIZE | RX DMA ping-pong 缓冲大小 | 16~65535 | 64 |
BSP_UART0_RX_BUFSIZE | RX 缓冲大小 | 64~65535 | 128 |
BSP_UART0_TX_BUFSIZE | TX 缓冲大小 | 0~65535 | 128 |
串口底层驱动由 bsp/gd32/arm/libraries/gd32_drivers/drv_usart.c(V1 框架)与drv_usart_v2.c(V2 框架)实现,两套驱动共用一个drv_usart.h头文件,并通过 Kconfig 中的框架选择编译进工程。
RTC 实时时钟
BSP_USING_ONCHIP_RTC默认关闭,开启后自动启用 RT-Thread RTC 设备(RT_USING_RTC),并可选开启闹钟功能(BSP_USING_ALARM,对应RT_USING_ALARM)。闹钟可在Alarm0 与 Alarm1两个 RTC 闹钟通道中选择其一,对应 bsp/gd32/arm/libraries/gd32_drivers/drv_rtc.c 中的底层实现。
其他可扩展外设
board/Kconfig末尾通过source "$(BSP_DIR)/../libraries/gd32_drivers/Kconfig"引入共享驱动库的完整配置菜单,其中包括 ADC、CAN、硬件 I2C、PWM、SDIO、SDRAM、SPI、Timer、看门狗等外设开关。开发者可按需在 menuconfig 中勾选,例如在需要大内存缓冲或图形界面时开启 SDRAM 驱动(drv_sdram.c),结合 board.h 中预留的EXT_SDRAM_BEGIN内存区间使用。
注意事项与维护信息
- 本 BSP 默认工程配置使用 GD-Link 仿真器下载,请确保 GD-Link 正确连接后再点击下载按钮。
- 首次构建前务必先执行
pkgs --update拉取 GD32 芯片支持包,否则 SConstruct 的依赖检查会直接中止构建。 - 串口参数固定为 115200-8-1-N,终端工具需与之一致才能看到启动信息。
- 该 BSP 由维护人 Astrozen 维护(邮箱:git@wirano.me),如在使用中发现问题可向其反馈。
整体而言,GD32H759I-START 的 RT-Thread BSP 提供了"开箱即用"的 MDK5/GCC/IAR 多工具链工程,默认点亮 LED 并输出 MSH 控制台,配合 ENV 工具与共享 GD32 驱动库可快速扩展至 UART、RTC、ADC、SDRAM 等丰富外设,是评估 GD32H7 高性能内核与进行 RT-Thread 应用开发的便捷起点。
【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考