Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,445 changes: 1,445 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/.config

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
mainmenu "RT-Thread Configuration"

BSP_DIR := .

RTT_DIR := ../../../..

PKGS_DIR := packages

source "$(RTT_DIR)/Kconfig"
osource "$PKGS_DIR/Kconfig"
rsource "../libraries/Kconfig"
rsource "board/Kconfig"
135 changes: 135 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# GD32470I-EVAL评估板BSP说明

## 简介

GD32470I-EVAL评估板使用GD32F470IKH6作为主控制器。评估板使用Mini USB接口或者DC-005连接器提供5V电源。该评估板具有丰富的板载资源,提供包括扩展引脚在内的及SWD, Reset, Boot, User button key, LED, CAN, I2C, I2S, USART, RTC, LCD, SPI, ADC, DAC, EXMC, CTC, SDIO, DCI, ENET, USBFS, USBHS, GD-Link等外设资源,图片如下:

![board](figures/board.jpg)

> 更多关于开发板的资料可以查看GD32470I-EVAL-V1.0原理图。

该开发板常用 **板载资源** 如下:

- GD32F470IKH6,主频 240MHz,CPU内核:ARM Cortex-M4,3072KB FLASH ,512KB RAM
- 常用外设

- 用户LED :3个,LED1(PE2),LED2(PE3),LED3(PF10)
- 电源指示灯:一个红色LED
- 按键:4个,K1-Reset(NRST),K2-Wakeup(PA0),K3-Tamper(PC13),K4-User key(PB14)
- General TM * 10、Advanced TM * 2、Basic TM * 2
- SysTick * 1
- 看门狗 * 2
- RTC * 1
- USART * 4、UART * 4
- I2C * 3、I2S * 2
- SPI * 6
- SDIO * 1
- CAN * 2
- USBFS+HS
- 以太网 * 1
- TFT-LCD
- EXMC/SDRAM * 1
- EXMC/NAND Flash * 1
- ADC * 3
- DAC * 2
- DCI摄像头接口 * 1
- 最多支持176GPIOs
- 调试接口:GD-Link
- 支持RGB接口和MCU屏幕接口
- 一路SDIO-TF卡
- SPI Flash:板载Flash
- SDRAM:外扩SDRAM
- 一路Mini USB
- 调试接口引出了SWD和UART
- 丰富的扩展引脚
- 开发板更多信息请查看GD32470I-EVAL原理图

## 外设支持

| **片上外设** | **支持情况** | **备注** |
|:------------|:------------:|:----------------------------------|
| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...175 |
| UART | 支持 | UART0 - UART7 |
| SPI | 支持 | 支持 SPI0 ~ SPI5,可配置多个总线 |
| I2C | 支持 | 支持 I2C0 ~ I2C2 |


## 使用说明

使用说明分为如下两个章节:

- 快速上手

本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。

- 进阶使用

本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。

### 快速上手

本 BSP 为开发者提供 MDK5工程,支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。

#### 硬件连接

使用GD-Link调试器连接开发板到 PC,使用USB2TTL连接USART0,并给开发板供电(可使用Mini USB接口或DC-005连接器提供5V电源)。

#### 编译下载

双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。

> 工程默认配置使用 GD-Link 仿真器下载程序,在通过 GD-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板

#### 运行结果

下载程序成功之后,系统会自动运行,LED 闪烁。

连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息:

```bash
\ | /
- RT - Thread Operating System
/ | \ 5.0.0 build Mar 3 2023 00:43:44
2006 - 2022 Copyright by RT-Thread team
msh />
```

### 进阶使用

此 BSP 默认只开启了 GPIO 和 串口0的功能,如果需使用高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下:

1. 在 bsp 下打开 env 工具。

2. 输入`menuconfig`命令配置工程,配置好之后保存退出。

3. 输入`pkgs --update`命令更新软件包。

4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。

## 注意事项

- 若需使用板载 SPI Flash,请在 `menuconfig` 中启用以下配置:

```
RT-Thread Components --->
Device Drivers --->
[*] Enable SPI BUS support (RT_USING_SPI)
[*] Enable SFUD for SPI Flash (RT_USING_SFUD)

Hardware Drivers Config --->
On-chip Peripheral Drivers --->
[*] Enable SPI BUS (BSP_USING_SPI)
[*] Enable SPI5 BUS (BSP_USING_SPI5)
```

- 若需使用SDRAM功能,请在 `menuconfig` 中启用EXMC配置
- 若需使用DCI摄像头功能,请在 `menuconfig` 中启用相应的DCI配置
- 若需使用LCD显示功能,请在 `menuconfig` 中启用LCD相关配置


## 联系人信息

维护人:

- [godmial](https://github.com/godmial), 邮箱:<2633967641@qq.com>
- [yuanzihao](https://github.com/zihao-yuan/), 邮箱:<y@yzh.email>
15 changes: 15 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/SConscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# for module compiling
import os
Import('RTT_ROOT')
from building import *

cwd = GetCurrentDir()
objs = []
list = os.listdir(cwd)

for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
objs = objs + SConscript(os.path.join(d, 'SConscript'))

Return('objs')
77 changes: 77 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/SConstruct
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import os
import sys
import rtconfig

if os.getenv('RTT_ROOT'):
RTT_ROOT = os.getenv('RTT_ROOT')
else:
RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..')

sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
try:
from building import *
except:
print('Cannot found RT-Thread root directory, please check RTT_ROOT')
print(RTT_ROOT)
exit(-1)

def bsp_pkg_check():
import subprocess

check_paths = [
os.path.join("packages", "gd32-arm-cmsis-latest"),
os.path.join("packages", "gd32-arm-series-latest")
]

need_update = not all(os.path.exists(p) for p in check_paths)

if need_update:
print("\n===============================================================================")
print("Dependency packages missing, please running 'pkgs --update'...")
print("If no packages are fetched, run 'pkgs --upgrade' first, then 'pkgs --update'...")
print("===============================================================================")
exit(1)

RegisterPreBuildingAction(bsp_pkg_check)

TARGET = 'rtthread.' + rtconfig.TARGET_EXT

DefaultEnvironment(tools=[])
env = Environment(tools = ['mingw'],
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
AR = rtconfig.AR, ARFLAGS = '-rc',
CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS,
LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
env.PrependENVPath('PATH', rtconfig.EXEC_PATH)

if rtconfig.PLATFORM in ['iccarm']:
env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
env.Replace(ARFLAGS = [''])
env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')

Export('env')
Export('RTT_ROOT')
Export('rtconfig')

SDK_ROOT = os.path.abspath('./')

if os.path.exists(SDK_ROOT + '/libraries'):
libraries_path_prefix = SDK_ROOT + '/libraries'
else:
libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'

SDK_LIB = libraries_path_prefix
Export('SDK_LIB')

# prepare building environment
objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)

# include drivers
objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript')))

# include lcd and drivers
objs.extend(SConscript(os.path.join(SDK_ROOT, 'board', 'ports', 'SConscript')))

# make a building
DoBuilding(TARGET, objs)
15 changes: 15 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/applications/SConscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from building import *
import os

cwd = GetCurrentDir()
src = Glob('*.c')
CPPPATH = [cwd]

group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)

list = os.listdir(cwd)
for item in list:
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
group = group + SConscript(os.path.join(item, 'SConscript'))

Return('group')
37 changes: 37 additions & 0 deletions bsp/gd32/arm/gd32470i-eval/applications/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (c) 2006-2025, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-08-20 BruceOu first implementation
* 2025-08-20 WangShun change the LED pins
*/

#include <stdio.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

/* defined the LED1 pin: PF10 */
#define LED1_PIN GET_PIN(F, 10)

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;
}

Loading