boards: arm: gd32a503v_eval: introduce gd32a503v_eval board

introduce gd32a503v_eval board

Signed-off-by: YuLong Yao <feilongphone@gmail.com>
This commit is contained in:
YuLong Yao 2023-01-09 18:44:31 +08:00 committed by Carles Cufí
commit 50e13ab3d2
9 changed files with 420 additions and 0 deletions

View file

@ -0,0 +1,6 @@
# Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
# SPDX-License-Identifier: Apache-2.0
config BOARD_GD32A503V_EVAL
bool "GigaDevice GD32A503V-EVAL"
depends on SOC_GD32A503

View file

@ -0,0 +1,9 @@
# Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
# SPDX-License-Identifier: Apache-2.0
if BOARD_GD32A503V_EVAL
config BOARD
default "gd32a503v_eval"
endif # BOARD_GD32A503V_EVAL

View file

@ -0,0 +1,8 @@
# Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
# SPDX-License-Identifier: Apache-2.0
board_runner_args(pyocd "--target=gd32a503vd" "--tool-opt=--pack=${ZEPHYR_HAL_GIGADEVICE_MODULE_DIR}/${CONFIG_SOC_SERIES}/support/GigaDevice.GD32A50x_DFP.1.0.0.pack")
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
board_runner_args(gd32isp "--device=GD32A503VDT3")
include(${ZEPHYR_BASE}/boards/common/gd32isp.board.cmake)

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View file

@ -0,0 +1,223 @@
.. _gd32a503v_eval:
GigaDevice GD32A503V-EVAL
#########################
Overview
********
The GD32A503V-EVAL board is a hardware platform that enables design and debug
of the GigaDevice A503 Cortex-M4F High Performance MCU.
The GD32A503VD features a single-core ARM Cortex-M4F MCU which can run up
to 120-MHz with flash accesses zero wait states, 384kiB of Flash, 48kiB of
SRAM and 88 GPIOs.
.. image:: img/gd32a503v_eval.jpg
:align: center
:alt: gd32a503v_eval
Hardware
********
- 2 user LEDs
- 2 user push buttons
- Reset Button
- ADC connected to a potentiometer
- 1 DAC channels
- GD25Q16 2Mib SPI Flash
- AT24C02C 2KiB EEPROM
- CS4344 Stereo DAC with Headphone Amplifier
- GD-Link interface
- CMSIS-DAP swd debug interface over USB HID.
- 2 CAN port(support CAN-FD)
For more information about the GD32A503 SoC and GD32A503V-EVAL board:
- `GigaDevice Cortex-M33 High Performance SoC Website`_
- `GD32A503 Datasheet`_
- `GD32A503 Reference Manual`_
- `GD32A503V Eval Schematics`_
- `GD32 ISP Console`_
Supported Features
==================
The board configuration supports the following hardware features:
.. list-table::
:header-rows: 1
* - Peripheral
- Kconfig option
- Devicetree compatible
* - EXTI
- :kconfig:option:`CONFIG_GD32_EXTI`
- :dtcompatible:`gd,gd32-exti`
* - GPIO
- :kconfig:option:`CONFIG_GPIO`
- :dtcompatible:`gd,gd32-gpio`
* - NVIC
- N/A
- :dtcompatible:`arm,v8m-nvic`
* - PWM
- :kconfig:option:`CONFIG_PWM`
- :dtcompatible:`gd,gd32-pwm`
* - SYSTICK
- N/A
- N/A
* - USART
- :kconfig:option:`CONFIG_SERIAL`
- :dtcompatible:`gd,gd32-usart`
* - PINMUX
- :kconfig:option:`CONFIG_PINCTRL`
- :dtcompatible:`gd,gd32-pinctrl-af`
* - ADC
- :kconfig:option:`CONFIG_ADC`
- :dtcompatible:`gd,gd32-adc`
* - DAC
- :kconfig:option:`CONFIG_DAC`
- :dtcompatible:`gd,gd32-dac`
* - FMC
- N/A
- :dtcompatible:`gd,gd32-flash-controller`
* - SPI
- :kconfig:option:`CONFIG_SPI`
- :dtcompatible:`gd,gd32-spi`
Serial Port
===========
The GD32A503V-EVAL board has 3 serial communication ports. The default port
is UART0 at PIN-72 and PIN-73.
Programming and Debugging
*************************
Before program your board make sure to configure boot setting and serial port.
The default serial port is USART0.
+--------+--------+------------+
| Boot-0 | Boot-1 | Function |
+========+========+============+
| 1-2 | 1-2 | SRAM |
+--------+--------+------------+
| 1-2 | 2-3 | Bootloader |
+--------+--------+------------+
| 2-3 | Any | Flash |
+--------+--------+------------+
Using GD-Link
=============
The GD32A503V-EVAL includes an onboard programmer/debugger (GD-Link) which
allow flash programming and debug over USB. There are also program and debug
headers J2 and J100 that can be used with any ARM compatible tools.
#. Build the Zephyr kernel and the :ref:`hello_world` sample application:
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: gd32a503v_eval
:goals: build
:compact:
#. Run your favorite terminal program to listen for output. Under Linux the
terminal should be :code:`/dev/ttyUSB0`. For example:
.. code-block:: console
$ minicom -D /dev/ttyUSB0 -o
The -o option tells minicom not to send the modem initialization
string. Connection should be configured as follows:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
#. To flash an image:
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: gd32a503v_eval
:goals: flash
:compact:
You should see "Hello World! gd32a503v_eval" in your terminal.
#. To debug an image:
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: gd32a503v_eval
:goals: debug
:compact:
Using ROM bootloader
====================
The GD32A503 MCU have a ROM bootloader which allow flash programming. User
should install `GD32 ISP Console`_ software at some Linux path. The recommended
is :code:`$HOME/.local/bin`.
#. Build the Zephyr kernel and the :ref:`hello_world` sample application:
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: gd32a503v_eval
:goals: build
:compact:
#. Enable board bootloader:
- Remove boot-0 jumper
- press reset button
#. To flash an image:
.. code-block:: console
west flash -r gd32isp [--port=/dev/ttyUSB0]
#. Run your favorite terminal program to listen for output. Under Linux the
terminal should be :code:`/dev/ttyUSB0`. For example:
.. code-block:: console
$ minicom -D /dev/ttyUSB0 -o
The -o option tells minicom not to send the modem initialization
string. Connection should be configured as follows:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
Press reset button
You should see "Hello World! gd32a503v_eval" in your terminal.
.. _GigaDevice Cortex-M33 High Performance SoC Website:
https://www.gigadevice.com.cn/product/mcu/arm-cortex-m33/gd32a503vdt3
.. _GD32A503 Datasheet:
https://www.gd32mcu.com/download/down/document_id/401/path_type/1
.. _GD32A503 Reference Manual:
https://www.gd32mcu.com/download/down/document_id/402/path_type/1
.. _GD32A503V Eval Schematics:
https://www.gd32mcu.com/download/down/document_id/404/path_type/1
.. _GD32 ISP Console:
http://www.gd32mcu.com/download/down/document_id/175/path_type/1

View file

@ -0,0 +1,35 @@
/*
* Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/gd32a503v(b-c-d)xx-pinctrl.h>
&pinctrl {
usart0_default: usart0_default {
group1 {
pinmux = <USART0_TX_PA10>, <USART0_RX_PA11>;
};
};
adc0_default: adc0_default {
group1 {
pinmux = <ADC0_IN1_PC10>;
};
};
dac_default: dac_default {
group1 {
pinmux = <DAC_OUT_PA7>;
};
};
spi0_default: spi0_default {
group1 {
pinmux = <SPI0_SCK_PE14>, <SPI0_MOSI_PA2>,
<SPI0_MISO_PE13>,
/* Use pinmux to pullup pg10 and pg11. */
<SPI0_IO2_PE15>, <SPI0_IO3_PB10>;
};
};
};

View file

@ -0,0 +1,103 @@
/*
* Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <gigadevice/gd32a50x/gd32a503vdt3.dtsi>
#include "gd32a503v_eval-pinctrl.dtsi"
/ {
model = "GigaDevice GD32A503V-EVAL";
compatible = "gd,gd32a503v-eval";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &usart0;
zephyr,shell-uart = &usart0;
zephyr,flash-controller = &fmc;
};
leds {
compatible = "gpio-leds";
led1: led1 {
gpios = <&gpioc 0 GPIO_ACTIVE_LOW>;
label = "LED1";
};
led2: led2 {
gpios = <&gpioc 1 GPIO_ACTIVE_LOW>;
label = "LED2";
};
};
aliases {
led0 = &led1;
led1 = &led2;
spi-flash0 = &nor_flash;
};
};
&gpioa {
status = "okay";
};
&gpiob {
status = "okay";
};
&gpioc {
status = "okay";
};
&gpiod {
status = "okay";
};
&gpioe {
status = "okay";
};
&gpiof {
status = "okay";
};
&usart0 {
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&usart0_default>;
pinctrl-names = "default";
};
&adc0 {
status = "okay";
pinctrl-0 = <&adc0_default>;
pinctrl-names = "default";
};
&dac {
status = "okay";
pinctrl-0 = <&dac_default>;
pinctrl-names = "default";
};
&fwdgt {
status = "okay";
};
&spi0 {
status = "okay";
pinctrl-0 = <&spi0_default>;
pinctrl-names = "default";
cs-gpios = <&gpioa 1 GPIO_ACTIVE_LOW>;
nor_flash: gd25q16@0 {
compatible ="jedec,spi-nor";
size = <0x1000000>;
reg = <0>;
spi-max-frequency = <4000000>;
status = "okay";
jedec-id = [c8 40 15];
};
};

View file

@ -0,0 +1,13 @@
# Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
# SPDX-License-Identifier: Apache-2.0
CONFIG_SOC_SERIES_GD32A50X=y
CONFIG_SOC_GD32A503=y
CONFIG_BOARD_GD32A503V_EVAL=y
CONFIG_ARM_MPU=y
CONFIG_HW_STACK_PROTECTION=y
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y

View file

@ -0,0 +1,23 @@
# Copyright (c) 2022 YuLong Yao <feilongphone@gmail.com>
# SPDX-License-Identifier: Apache-2.0
identifier: gd32a503v_eval
name: GigaDevice GD32A503V-EVAL
type: mcu
arch: arm
ram: 48
flash: 384
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- adc
- counter
- dac
- dma
- gpio
- pwm
- spi
- uart
- watchdog