1. 项目概述
1.1 目标硬件
- 开发板: GD32F527 EVAL
- MCU: GD32F527
- 内核: ARM Cortex-M33
- 主频: 200MHz
- Flash: 具体型号决定
- RAM: 具体型号决定
1.2 现有 HAL 支持情况
Zephyr 中已有以下 GD32 系列支持:
- gd32a50x - GD32A50x 系列 (Cortex-M23)
- gd32e10x - GD32E10x 系列 (Cortex-M3)
- gd32e50x - GD32E50x 系列 (Cortex-M4)
- gd32f3x0 - GD32F3x0 系列 (Cortex-M4)
- gd32f4xx - GD32F4xx 系列 (Cortex-M4)
- gd32l23x - GD32L23x 系列 (Cortex-M23)
- gd32vf103 - GD32VF103 系列 (RISC-V)
注意: 目前 Zephyr 暂未原生支持 GD32F5xx 系列,需要额外添加 SoC 支持层。
1.3 移植目标
在 GD32F527 EVAL 开发板上完整移植 Zephyr RTOS,支持以下功能:
- 基础系统启动与时钟
- GPIO 控制
- 串口调试 (UART)
- 定时器 (SysTick / TIMER)
- 看门狗 (WDG)
- SPI/I2C 等外设
2. 环境准备
我手上已经有zephyr的开发环境,略过。
3. 移植步骤
3.1 第一阶段:添加 GD32F5xx 系列 HAL 支持
3.1.1 创建 HAL 目录
在 modules/hal/gigadevice/ 目录下创建 GD32F5xx 支持:
modules/hal/gigadevice/gd32f5xx/
├── cmsis/
│ └── gd/
│ └── gd32f5xx/
│ ├── include/
│ │ ├── gd32f5xx.h
│ │ ├── system_gd32f5xx.h
│ │ ├── core_cm33.h
│ │ └── cmsis_armclang.h
│ └── source/
│ └── system_gd32f5xx.c
├── standard_peripheral/
│ ├── include/
│ │ ├── gd32f5xx_rcu.h
│ │ ├── gd32f5xx_gpio.h
│ │ ├── gd32f5xx_usart.h
│ │ └── ... (其他外设头文件)
│ └── source/
│ └── (外设源文件)
└── zephyr/
└── Kconfig.gigadevice.gd32f5xx
3.1.2 系统初始化文件 (system_gd32f5xx.c)
3.2 第二阶段:创建板级支持包 (BSP)
3.2.1 创建板级目录结构
按照 Zephyr 标准,板级文件应放在 zephyr/boards/gd/ 目录下:
zephyr/boards/gd/gd32f527_eval/
├── board.yml # 板型元数据 (新格式)
├── Kconfig.gd32f527_eval # 板型 Kconfig
├── gd32f527_eval.yaml # 板型定义 (旧格式,兼容)
├── gd32f527_eval_defconfig # 默认配置
├── gd32f527_eval.dts # 设备树源文件
├── gd32f527_eval-pinctrl.dtsi # 引脚复用配置
├── board.cmake # 烧录配置
├── prj.conf # 项目配置 (可选)
└── support/ # 调试配置
├── flash.ld # 链接脚本
├── openocd.cfg # OpenOCD 配置
└── JLinkDevices.xml # J-Link 设备描述
3.2.2 板型元数据 (board.yml)
3.2.3 板型定义 (gd32f527_eval.yaml)
3.2.4 Kconfig 文件 (Kconfig.gd32f527_eval)
3.2.5 默认配置文件 (gd32f527_eval_defconfig)
3.2.6 设备树文件 (gd32f527_eval.dts)
3.2.7 引脚复用配置 (gd32f527_eval-pinctrl.dtsi)
3.3 第三阶段:SoC 支持层
3.3.1 创建 SoC 目录结构
zephyr/soc/arm/gd32f5xx/
├── Kconfig.soc
└── gd32f527/
├── Kconfig
├── linker.ld
└── cmsis.c
3.3.2 SoC Kconfig (Kconfig.soc)
3.3.3 SoC 链接脚本 (linker.ld)
3.4 第四阶段:设备驱动
3.5 第五阶段:调试配置
4. 参考开发板结构
4.1 现有 GD32 开发板参考
zephyr/boards/gd/
├── gd32a503v_eval/ # GD32A503 Cortex-M23
├── gd32e103v_eval/ # GD32E103 Cortex-M3
├── gd32e507v_start/ # GD32E507 Cortex-M4
├── gd32e507z_eval/ # GD32E507 Cortex-M4
├── gd32f350r_eval/ # GD32F350 Cortex-M4
├── gd32f403z_eval/ # GD32F403 Cortex-M4
├── gd32f407v_start/ # GD32F407 Cortex-M4
├── gd32f450i_eval/ # GD32F450 Cortex-M4
├── gd32f450v_start/ # GD32F450 Cortex-M4
├── gd32f450z_eval/ # GD32F450 Cortex-M4
├── gd32f470i_eval/ # GD32F470 Cortex-M4
├── gd32l233r_eval/ # GD32L233 Cortex-M23
├── gd32vf103c_starter/ # GD32VF103 RISC-V
└── gd32vf103v_eval/ # GD32VF103 RISC-V
4.2 参考文件
建议参考以下开发板的实现:
- gd32f450i_eval - Cortex-M4,高 Flash/RAM
- gd32f470i_eval - Cortex-M4,功能完整
5. 编译与测试
6. 资源与参考
6.1 官方文档
- Zephyr Project Documentation: https://docs.zephyrproject.org/
- Zephyr Porting Guide: https://docs.zephyrproject.org/latest/guides/porting/
- Zephyr Board Porting: https://docs.zephyrproject.org/latest/guides/porting/board_porting.html
6.2 相关资料
- GD32F527 数据手册
- GD32F5xx 参考手册
- ARM Cortex-M33 技术参考手册
- CMSIS 文档
6.3 Zephyr 代码参考
- 现有 GD32 开发板: zephyr/boards/gd/
- GD32 HAL 层: modules/hal/gigadevice/
- GD32 驱动: drivers/
我要赚赏金
