From b87b4cbde5797dcea1b3150595ef2d85a2d8f7f8 Mon Sep 17 00:00:00 2001 From: yuanzihao Date: Sun, 21 Jan 2024 01:13:30 +0800 Subject: [PATCH] [BSP][GD32]add gd32407v-lckfb (#8496) --- .github/workflows/bsp_buildings.yml | 1 + bsp/gd32/README.md | 1 + bsp/gd32/arm/README.md | 1 + bsp/gd32/arm/gd32407v-lckfb/.config | 1033 ++++++ bsp/gd32/arm/gd32407v-lckfb/Kconfig | 21 + bsp/gd32/arm/gd32407v-lckfb/README.md | 98 + bsp/gd32/arm/gd32407v-lckfb/SConscript | 15 + bsp/gd32/arm/gd32407v-lckfb/SConstruct | 60 + .../gd32407v-lckfb/applications/SConscript | 15 + .../arm/gd32407v-lckfb/applications/main.c | 35 + bsp/gd32/arm/gd32407v-lckfb/board/Kconfig | 241 ++ bsp/gd32/arm/gd32407v-lckfb/board/SConscript | 28 + bsp/gd32/arm/gd32407v-lckfb/board/board.c | 85 + bsp/gd32/arm/gd32407v-lckfb/board/board.h | 44 + .../gd32407v-lckfb/board/gd32f4xx_libopt.h | 45 + .../board/linker_scripts/link.icf | 40 + .../board/linker_scripts/link.ld | 142 + .../board/linker_scripts/link.sct | 15 + bsp/gd32/arm/gd32407v-lckfb/figures/board.jpg | Bin 0 -> 248353 bytes bsp/gd32/arm/gd32407v-lckfb/project.ewd | 3056 +++++++++++++++++ bsp/gd32/arm/gd32407v-lckfb/project.ewp | 2150 ++++++++++++ bsp/gd32/arm/gd32407v-lckfb/project.ewt | 3043 ++++++++++++++++ bsp/gd32/arm/gd32407v-lckfb/project.eww | 10 + bsp/gd32/arm/gd32407v-lckfb/project.uvoptx | 917 +++++ bsp/gd32/arm/gd32407v-lckfb/project.uvproj | 828 +++++ bsp/gd32/arm/gd32407v-lckfb/project.uvprojx | 724 ++++ bsp/gd32/arm/gd32407v-lckfb/rtconfig.h | 252 ++ bsp/gd32/arm/gd32407v-lckfb/rtconfig.py | 151 + bsp/gd32/arm/gd32407v-lckfb/template.ewp | 1889 ++++++++++ bsp/gd32/arm/gd32407v-lckfb/template.uvoptx | 185 + bsp/gd32/arm/gd32407v-lckfb/template.uvproj | 628 ++++ bsp/gd32/arm/gd32407v-lckfb/template.uvprojx | 414 +++ bsp/gd32/arm/gd32470z-lckfb/.config | 21 +- bsp/gd32/arm/gd32470z-lckfb/project.uvoptx | 732 ++++ bsp/gd32/arm/gd32470z-lckfb/project.uvprojx | 205 +- bsp/gd32/arm/gd32470z-lckfb/rtconfig.h | 10 +- .../CMSIS/GD/GD32F4xx/Include/gd32f4xx.h | 4 + .../GD/GD32F4xx/Source/system_gd32f4xx.c | 6 + 38 files changed, 16990 insertions(+), 155 deletions(-) create mode 100644 bsp/gd32/arm/gd32407v-lckfb/.config create mode 100644 bsp/gd32/arm/gd32407v-lckfb/Kconfig create mode 100644 bsp/gd32/arm/gd32407v-lckfb/README.md create mode 100644 bsp/gd32/arm/gd32407v-lckfb/SConscript create mode 100644 bsp/gd32/arm/gd32407v-lckfb/SConstruct create mode 100644 bsp/gd32/arm/gd32407v-lckfb/applications/SConscript create mode 100644 bsp/gd32/arm/gd32407v-lckfb/applications/main.c create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/Kconfig create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/SConscript create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/board.c create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/board.h create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/gd32f4xx_libopt.h create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.icf create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.ld create mode 100644 bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.sct create mode 100644 bsp/gd32/arm/gd32407v-lckfb/figures/board.jpg create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.ewd create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.ewp create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.ewt create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.eww create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.uvoptx create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.uvproj create mode 100644 bsp/gd32/arm/gd32407v-lckfb/project.uvprojx create mode 100644 bsp/gd32/arm/gd32407v-lckfb/rtconfig.h create mode 100644 bsp/gd32/arm/gd32407v-lckfb/rtconfig.py create mode 100644 bsp/gd32/arm/gd32407v-lckfb/template.ewp create mode 100644 bsp/gd32/arm/gd32407v-lckfb/template.uvoptx create mode 100644 bsp/gd32/arm/gd32407v-lckfb/template.uvproj create mode 100644 bsp/gd32/arm/gd32407v-lckfb/template.uvprojx diff --git a/.github/workflows/bsp_buildings.yml b/.github/workflows/bsp_buildings.yml index b30b4e829d..fe42bea346 100644 --- a/.github/workflows/bsp_buildings.yml +++ b/.github/workflows/bsp_buildings.yml @@ -225,6 +225,7 @@ jobs: - "gd32/arm/gd32305r-start" - "gd32/arm/gd32307e-start" - "gd32/arm/gd32407v-start" + - "gd32/arm/gd32407v-lckfb" - "gd32/arm/gd32450z-eval" - "gd32/arm/gd32470z-lckfb" - "n32/n32g43xcl-stb" diff --git a/bsp/gd32/README.md b/bsp/gd32/README.md index b7f94cc13b..334f3c8d78 100644 --- a/bsp/gd32/README.md +++ b/bsp/gd32/README.md @@ -20,6 +20,7 @@ GD32 系列 BSP 目前支持情况如下表所示: | [gd32307e-start](arm/gd32307e-start) | 兆易创新 官方 GD32307E-START 开发板 | | **F4 系列** | | | [gd32407v-start](arm/gd32407v-start) | 兆易创新 官方 GD32407V-START 开发板 | +| [gd32407v-lckfb](arm/gd32407v-lckfb) | 立创天空星 GD32F407VET6 开发板 | | [gd32450z-eval](arm/gd32450z-eval) | 兆易创新 官方 GD32450Z-EVAL 开发板 | | [gd32470z-lckfb](arm/gd32470z-lckfb) | 立创梁山派 GD32F470ZGT6 开发板 | | **RISC-V 系列** | | diff --git a/bsp/gd32/arm/README.md b/bsp/gd32/arm/README.md index 383b7ae3e6..68b76d37e2 100644 --- a/bsp/gd32/arm/README.md +++ b/bsp/gd32/arm/README.md @@ -19,6 +19,7 @@ GD32 ARM 系列 BSP 目前支持情况如下表所示: | [gd32307e-start](gd32307e-start) | 兆易创新 官方 GD32307E-START 开发板 | | **F4 系列** | | | [gd32407v-start](gd32407v-start) | 兆易创新 官方 GD32407V-START 开发板 | +| [gd32407v-lckfb](gd32407v-lckfb) | 立创天空星 GD32F407VET6 开发板 | | [gd32450z-eval](gd32450z-eval) | 兆易创新 官方 GD32450Z-EVAL 开发板 | | [gd32470z-lckfb](gd32470z-lckfb) | 立创梁山派 GD32F470ZGT6 开发板 | diff --git a/bsp/gd32/arm/gd32407v-lckfb/.config b/bsp/gd32/arm/gd32407v-lckfb/.config new file mode 100644 index 0000000000..7a725b52d4 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/.config @@ -0,0 +1,1033 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_NANO is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=100 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +# CONFIG_RT_USING_HOOKLIST is not set +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +# CONFIG_RT_USING_TIMER_SOFT is not set + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +# CONFIG_RT_DEBUGING_AUTO_INIT is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" +CONFIG_RT_VER_NUM=0x50100 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 +# CONFIG_RT_USING_CACHE is not set +# CONFIG_RT_USING_HW_ATOMIC is not set +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +# CONFIG_RT_USING_CPU_FFS is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +CONFIG_FINSH_USING_OPTION_COMPLETION=y + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +# CONFIG_RT_USING_DM is not set +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +CONFIG_RT_USING_SYSTEM_WORKQUEUE=y +CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048 +CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +CONFIG_RT_USING_I2C_BITOPS=y +# CONFIG_RT_I2C_BITOPS_DEBUG is not set +# CONFIG_RT_USING_SOFT_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_DEV_BUS is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set +# CONFIG_RT_USING_KTIME is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# C/C++ and POSIX layer +# + +# +# ISO-ANSI C layer +# + +# +# Timezone and Daylight Saving Time +# +# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set +CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y +CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8 +CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0 +CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RESOURCE_ID is not set +# CONFIG_RT_USING_ADT is not set +# CONFIG_RT_USING_RT_LINK is not set +# CONFIG_RT_USING_VBUS is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LWIP is not set +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_RYANMQTT is not set +# CONFIG_PKG_USING_RYANW5500 is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set +# CONFIG_PKG_USING_WOL is not set +# CONFIG_PKG_USING_ZEPHYR_POLLING is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_3GPP_AMRNB is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set +# CONFIG_PKG_USING_FLASH_BLOB is not set +# CONFIG_PKG_USING_MLIBC is not set + +# +# peripheral libraries and drivers +# + +# +# sensors drivers +# +# CONFIG_PKG_USING_LSM6DSM is not set +# CONFIG_PKG_USING_LSM6DSL is not set +# CONFIG_PKG_USING_LPS22HB is not set +# CONFIG_PKG_USING_HTS221 is not set +# CONFIG_PKG_USING_LSM303AGR is not set +# CONFIG_PKG_USING_BME280 is not set +# CONFIG_PKG_USING_BME680 is not set +# CONFIG_PKG_USING_BMA400 is not set +# CONFIG_PKG_USING_BMI160_BMX160 is not set +# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_MS5805 is not set +# CONFIG_PKG_USING_DA270 is not set +# CONFIG_PKG_USING_DF220 is not set +# CONFIG_PKG_USING_HSHCAL001 is not set +# CONFIG_PKG_USING_BH1750 is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_TSL4531 is not set +# CONFIG_PKG_USING_DS18B20 is not set +# CONFIG_PKG_USING_DHT11 is not set +# CONFIG_PKG_USING_DHTXX is not set +# CONFIG_PKG_USING_GY271 is not set +# CONFIG_PKG_USING_GP2Y10 is not set +# CONFIG_PKG_USING_SGP30 is not set +# CONFIG_PKG_USING_HDC1000 is not set +# CONFIG_PKG_USING_BMP180 is not set +# CONFIG_PKG_USING_BMP280 is not set +# CONFIG_PKG_USING_SHTC1 is not set +# CONFIG_PKG_USING_BMI088 is not set +# CONFIG_PKG_USING_HMC5883 is not set +# CONFIG_PKG_USING_MAX6675 is not set +# CONFIG_PKG_USING_TMP1075 is not set +# CONFIG_PKG_USING_SR04 is not set +# CONFIG_PKG_USING_CCS811 is not set +# CONFIG_PKG_USING_PMSXX is not set +# CONFIG_PKG_USING_RT3020 is not set +# CONFIG_PKG_USING_MLX90632 is not set +# CONFIG_PKG_USING_MLX90393 is not set +# CONFIG_PKG_USING_MLX90392 is not set +# CONFIG_PKG_USING_MLX90397 is not set +# CONFIG_PKG_USING_MS5611 is not set +# CONFIG_PKG_USING_MAX31865 is not set +# CONFIG_PKG_USING_VL53L0X is not set +# CONFIG_PKG_USING_INA260 is not set +# CONFIG_PKG_USING_MAX30102 is not set +# CONFIG_PKG_USING_INA226 is not set +# CONFIG_PKG_USING_LIS2DH12 is not set +# CONFIG_PKG_USING_HS300X is not set +# CONFIG_PKG_USING_ZMOD4410 is not set +# CONFIG_PKG_USING_ISL29035 is not set +# CONFIG_PKG_USING_MMC3680KJ is not set +# CONFIG_PKG_USING_QMP6989 is not set +# CONFIG_PKG_USING_BALANCE is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_STHS34PF80 is not set + +# +# touch drivers +# +# CONFIG_PKG_USING_GT9147 is not set +# CONFIG_PKG_USING_GT1151 is not set +# CONFIG_PKG_USING_GT917S is not set +# CONFIG_PKG_USING_GT911 is not set +# CONFIG_PKG_USING_FT6206 is not set +# CONFIG_PKG_USING_FT5426 is not set +# CONFIG_PKG_USING_FT6236 is not set +# CONFIG_PKG_USING_XPT2046_TOUCH is not set +# CONFIG_PKG_USING_CST816X is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_ILI9341 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set +# CONFIG_PKG_USING_AIP650 is not set +# CONFIG_PKG_USING_FINGERPRINT is not set +# CONFIG_PKG_USING_BT_ECB02C is not set +# CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_QPID is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_KISSFFT is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_MORSE is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set +# CONFIG_PKG_USING_CorevMCU_CLI is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects and Demos +# +# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set +# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set +# CONFIG_PKG_USING_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set +# CONFIG_PKG_USING_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set +# CONFIG_PKG_USING_SEEED_TM1637 is not set + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set + +# +# Uncategorized +# + +# +# Hardware Drivers Config +# +CONFIG_SOC_SERIES_GD32F4xx=y +CONFIG_SOC_GD32407V=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +CONFIG_BSP_USING_UART0=y +# CONFIG_BSP_UART0_RX_USING_DMA is not set +# CONFIG_BSP_USING_UART1 is not set +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_UART5 is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set + +# +# Board extended module Drivers +# diff --git a/bsp/gd32/arm/gd32407v-lckfb/Kconfig b/bsp/gd32/arm/gd32407v-lckfb/Kconfig new file mode 100644 index 0000000000..609eb0745e --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/arm/gd32407v-lckfb/README.md b/bsp/gd32/arm/gd32407v-lckfb/README.md new file mode 100644 index 0000000000..629a9efd1b --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/README.md @@ -0,0 +1,98 @@ +# GD32F407V-LCKFB立创天空星开发板BSP说明 + +## 简介 + +该开发板是由立创开发板精心打造的一款高性价比的开发工具,**软硬件全开源**。设计上充分考虑了与多种100脚封装的单片机的兼容性。这种设计使得它不仅适用于特定的芯片,还能够适配市场上多种不同厂家生产的100脚微控制器,极大地提高了适用范围和灵活性。首批量产的立创梁山派·天空星开发板的主控芯片为GD32F407VET6。 + +为了最大限度的方便开发者和爱好者,该核心板通过排针将所有可用的IO(输入/输出)引脚都引出,这样大家就可以轻松地连接各种外部模块和设备,无需进行复杂的焊接工作。这一特点特别适合那些需要快速原型制作和迭代的场合,如学生电子竞赛、创客活动以及个人DIY项目。 + +此外,这款核心板的设计考虑到了大家在电子竞赛中对于稳定性和可靠性的需求,以及在小型项目开发中对低成本的追求。具体请看硬件设计手册。 + +![[(lckfb.com)](https://lckfb.com/project/detail/lckfb-lspi-skystar-gd32f407vet6-lite?param=baseInfo)](figures/board.jpg) + +## 资料罗列: + +* [硬件开源地址](https://oshwhub.com/li-chuang-kai-fa-ban/li-chuang-liang-shan-pai-tian-kong-xing-kai-fa-ban) +* [硬件文档](https://lceda001.feishu.cn/wiki/D4cqwUkiTi6723knO2cczSThnYb) +* [入门手册](https://lceda001.feishu.cn/wiki/Zawdwg0laig3Qnk2XuxcKrQRn2g) +* [模块移植手册](https://lceda001.feishu.cn/wiki/GySKwn3jMitXbAkhX0GcDjtBnQd) +* [移植的DAPLINK开源仓库](https://gitee.com/lcsc/SkyStar-GD32F407VET6-DAPLINK) +* [购买地址](https://lckfb.com/project/detail/lckfb-lspi-skystar-gd32f407vet6-lite?param=baseInfo) + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------- | :----------: | :------------------------------ | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...81 | +| UART | 支持 | UART0 - UART5 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 -  SPI2 | +| ADC | 支持 | ADC0 - ADC2 | +| TF CARD | 支持 | SDIO | +| SPI FLASH | 暂不支持 | | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 CMSIS-DAP 仿真器下载程序,在通过 CMSIS-DAP 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,LED 闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Jan 13 2024 09:22:48 + 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` 命令重新生成工程。 + +## 注意事项 + +暂无 + +## 联系人信息 + +维护人: + +- [yuanzihao](https://github.com/zihao-yuan/), 邮箱:[y@yzh.email](mailto:y@yzh.email) \ No newline at end of file diff --git a/bsp/gd32/arm/gd32407v-lckfb/SConscript b/bsp/gd32/arm/gd32407v-lckfb/SConscript new file mode 100644 index 0000000000..20f7689c53 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/SConscript @@ -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') diff --git a/bsp/gd32/arm/gd32407v-lckfb/SConstruct b/bsp/gd32/arm/gd32407v-lckfb/SConstruct new file mode 100644 index 0000000000..0701e74ed5 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/SConstruct @@ -0,0 +1,60 @@ +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) + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = 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('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) + +gd32_library = 'GD32F4xx_Firmware_Library' +rtconfig.BSP_LIBRARY_TYPE = gd32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/gd32/arm/gd32407v-lckfb/applications/SConscript b/bsp/gd32/arm/gd32407v-lckfb/applications/SConscript new file mode 100644 index 0000000000..9bb9abae89 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/applications/SConscript @@ -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') diff --git a/bsp/gd32/arm/gd32407v-lckfb/applications/main.c b/bsp/gd32/arm/gd32407v-lckfb/applications/main.c new file mode 100644 index 0000000000..a382a3a9e2 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/applications/main.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2024-01-13 yuanzihao first implementation + */ + +#include +#include +#include +#include + +/* defined the LED1 pin: PB2 */ +#define LED_PIN GET_PIN(B, 2) + +int main(void) +{ + int count = 1; + + /* set LED1 pin mode to output */ + rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig b/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig new file mode 100644 index 0000000000..fb7cda0ca5 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig @@ -0,0 +1,241 @@ +menu "Hardware Drivers Config" + +config SOC_SERIES_GD32F4xx + bool + default y + +config SOC_GD32407V + bool + select SOC_SERIES_GD32F4xx + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + + menuconfig BSP_USING_FS + bool "Enable File System" + select RT_USING_DFS + select RT_USING_DFS_ROMFS + default n + + if BSP_USING_FS + config BSP_USING_SDCARD_FATFS + bool "Enable SDCARD (FATFS)" + select BSP_USING_SDIO + select RT_USING_DFS_ELMFAT + default n + if BSP_USING_SDCARD_FATFS + menuconfig BSP_USING_FS_AUTO_MOUNT + bool "Enable filesystem auto mount" + default y + endif + + endif + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART0 + bool "Enable UART0" + default n + + config BSP_UART0_RX_USING_DMA + bool "Enable UART0 RX DMA" + depends on BSP_USING_UART0 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART1 + bool "Enable UART1" + default y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART4 + bool "Enable UART4" + default n + + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART5 + bool "Enable UART5" + default n + + config BSP_UART5_RX_USING_DMA + bool "Enable UART5 RX DMA" + depends on BSP_USING_UART5 + select RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 24 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 216 + default 25 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + + source "../libraries/gd32_drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/SConscript b/bsp/gd32/arm/gd32407v-lckfb/board/SConscript new file mode 100644 index 0000000000..30dd4e76b6 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/SConscript @@ -0,0 +1,28 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +''') + +path = [cwd] + +startup_path_prefix = SDK_LIB + +if rtconfig.PLATFORM in ['gcc']: + src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s'] +elif rtconfig.PLATFORM in ['armcc', 'armclang']: + src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s'] +elif rtconfig.PLATFORM in ['iccarm']: + src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s'] + +CPPDEFINES = ['GD32F407','LCKFB_SKYSTART_GD32F407V'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + +Return('group') diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/board.c b/bsp/gd32/arm/gd32407v-lckfb/board/board.c new file mode 100644 index 0000000000..28315cd113 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/board.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-20 BruceOu first implementation + */ +#include +#include +#include +#include + +/** + * @brief This function is executed in case of error occurrence. + * @param None + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler */ + /* User can add his own implementation to report the HAL error return state */ + while (1) + { + } + /* USER CODE END Error_Handler */ +} + +/** System Clock Configuration +*/ +void SystemClock_Config(void) +{ + SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND); + NVIC_SetPriority(SysTick_IRQn, 0); +} + +/** + * This is the timer interrupt service routine. + * + */ +void SysTick_Handler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + rt_tick_increase(); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +/** + * This function will initial GD32 board. + */ +void rt_hw_board_init() +{ + /* NVIC Configuration */ +#define NVIC_VTOR_MASK 0x3FFFFF80 +#ifdef VECT_TAB_RAM + /* Set the Vector Table base location at 0x10000000 */ + SCB->VTOR = (0x10000000 & NVIC_VTOR_MASK); +#else /* VECT_TAB_FLASH */ + /* Set the Vector Table base location at 0x08000000 */ + SCB->VTOR = (0x08000000 & NVIC_VTOR_MASK); +#endif + + SystemClock_Config(); + +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif + +#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); +#endif + +#ifdef BSP_USING_SDRAM + rt_system_heap_init((void *)EXT_SDRAM_BEGIN, (void *)EXT_SDRAM_END); +#else + rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); +#endif +} + +/*@}*/ diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/board.h b/bsp/gd32/arm/gd32407v-lckfb/board/board.h new file mode 100644 index 0000000000..ce65ef97c0 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/board.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-20 BruceOu first implementation + */ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include "gd32f4xx.h" +#include "drv_usart.h" +#include "drv_gpio.h" + +#include "gd32f4xx_exti.h" + +// Internal SRAM memory size[Kbytes] <8-128> +// Default: 128 +#ifdef __ICCARM__ +// Use *.icf ram symbal, to avoid hardcode. +extern char __ICFEDIT_region_RAM_end__; +#define GD32_SRAM_END &__ICFEDIT_region_RAM_end__ +#else +#define GD32_SRAM_SIZE 128 +#define GD32_SRAM_END (0x20000000 + GD32_SRAM_SIZE * 1024) +#endif + +#ifdef __ARMCC_VERSION +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) +#elif __ICCARM__ +#pragma section="HEAP" +#define HEAP_BEGIN (__segment_end("HEAP")) +#else +extern int __bss_end; +#define HEAP_BEGIN (&__bss_end) +#endif + +#define HEAP_END GD32_SRAM_END + +#endif + diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/gd32f4xx_libopt.h b/bsp/gd32/arm/gd32407v-lckfb/board/gd32f4xx_libopt.h new file mode 100644 index 0000000000..d26e3d15ec --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/gd32f4xx_libopt.h @@ -0,0 +1,45 @@ +/*! + \file gd32f4xx_libopt.h + \brief library optional for gd32f4xx +*/ + +/* + Copyright (C) 2016 GigaDevice + + 2016-10-19, V1.0.0, firmware for GD32F4xx +*/ + +#ifndef GD32F4XX_LIBOPT_H +#define GD32F4XX_LIBOPT_H +#include "gd32f4xx_rcu.h" +#include "gd32f4xx_adc.h" +#include "gd32f4xx_can.h" +#include "gd32f4xx_crc.h" +#include "gd32f4xx_ctc.h" +#include "gd32f4xx_dac.h" +#include "gd32f4xx_dbg.h" +#include "gd32f4xx_dci.h" +#include "gd32f4xx_dma.h" +//#include "gd32f4xx_enet.h" +#include "gd32f4xx_exmc.h" +#include "gd32f4xx_exti.h" +#include "gd32f4xx_fmc.h" +#include "gd32f4xx_fwdgt.h" +#include "gd32f4xx_gpio.h" +#include "gd32f4xx_syscfg.h" +#include "gd32f4xx_i2c.h" +#include "gd32f4xx_ipa.h" +#include "gd32f4xx_iref.h" +#include "gd32f4xx_pmu.h" +#include "gd32f4xx_rcu.h" +#include "gd32f4xx_rtc.h" +#include "gd32f4xx_sdio.h" +#include "gd32f4xx_spi.h" +#include "gd32f4xx_timer.h" +#include "gd32f4xx_tli.h" +#include "gd32f4xx_trng.h" +#include "gd32f4xx_usart.h" +#include "gd32f4xx_wwdgt.h" +#include "gd32f4xx_misc.h" + +#endif /* GD32F4XX_LIBOPT_H */ diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.icf new file mode 100644 index 0000000000..a0393aa418 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.icf @@ -0,0 +1,40 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x08000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; +define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x200; +define symbol __ICFEDIT_size_heap__ = 0x200; +/**** End of ICF editor section. ###ICF###*/ + +export symbol __ICFEDIT_region_RAM_end__; + +define symbol __region_RAM1_start__ = 0x10000000; +define symbol __region_RAM1_end__ = 0x1000FFFF; + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; +define region RAM1_region = mem:[from __region_RAM1_start__ to __region_RAM1_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +keep { section FSymTab }; +keep { section VSymTab }; +keep { section .rti_fn* }; +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; + +place in ROM_region { readonly }; +place in RAM_region { readwrite, + block CSTACK, block HEAP }; +place in RAM1_region { section .sram }; diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.ld new file mode 100644 index 0000000000..35809713fa --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.ld @@ -0,0 +1,142 @@ +/* + * linker script for GD32F4xx with GNU ld + * BruceOu 2021-12-14 + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + CODE (rx) : ORIGIN = 0x08000000, LENGTH = 512k /* 512KB flash */ + DATA (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 128KB sram ,0x1000 0000 - 0x1000 FFFF TCMSRAM(64KB)*/ +} +ENTRY(Reset_Handler) +_system_stack_size = 0x200; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _stext = .; + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + . = ALIGN(4); + _etext = .; + } > CODE = 0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + + /* This is used by the startup in order to initialize the .data secion */ + _sidata = .; + } > CODE + __exidx_end = .; + + /* .data section which is used for initialized data */ + + .data : AT (_sidata) + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _sdata = . ; + + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _edata = . ; + } >DATA + + .stack : + { + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >DATA + + __bss_start = .; + .bss : + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; + + *(.bss) + *(.bss.*) + *(COMMON) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _ebss = . ; + + *(.bss.init) + } > DATA + __bss_end = .; + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.sct new file mode 100644 index 0000000000..5d1e3e6c00 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/board/linker_scripts/link.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00080000 { ; load region size_region + ER_IROM1 0x08000000 0x00080000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20000000 0x00020000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/gd32/arm/gd32407v-lckfb/figures/board.jpg b/bsp/gd32/arm/gd32407v-lckfb/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d31a8e04fc59e0a6b15ca38908e5710dc4eb26a5 GIT binary patch literal 248353 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 xVGUL{o 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 + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32407v-lckfb/project.ewp b/bsp/gd32/arm/gd32407v-lckfb/project.ewp new file mode 100644 index 0000000000..f49223016b --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/project.ewp @@ -0,0 +1,2150 @@ + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_soft_i2c.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32407v-lckfb/project.ewt b/bsp/gd32/arm/gd32407v-lckfb/project.ewt new file mode 100644 index 0000000000..03124a4a87 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/project.ewt @@ -0,0 +1,3043 @@ + + + 3 + + Debug + + ARM + + 1 + + C-STAT + 515 + + 515 + + 0 + + 1 + 600 + 1 + 6 + 0 + 1 + 100 + Debug\C-STAT + + + 2.3.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + Release + + ARM + + 0 + + C-STAT + 515 + + 515 + + 0 + + 1 + 600 + 1 + 6 + 0 + 1 + 100 + Release\C-STAT + + + 2.3.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_soft_i2c.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32407v-lckfb/project.eww b/bsp/gd32/arm/gd32407v-lckfb/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32407v-lckfb/project.uvoptx b/bsp/gd32/arm/gd32407v-lckfb/project.uvoptx new file mode 100644 index 0000000000..357325ee42 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/project.uvoptx @@ -0,0 +1,917 @@ + + + + 1.0 + +

### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + + + + 0 + CMSIS_AGDI + -X"LCKFB-CMSIS-DAP" -ULCKFB-V0.0.3-8437307582050767921 -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_512KB.FLM -FS08000000 -FL080000 -FP0($$Device:GD32F407VE$Flash\GD32F4xx_512KB.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F4xx_512KB -FL080000 -FS08000000 -FP0($$Device:GD32F407VE$Flash\GD32F4xx_512KB.FLM) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 12 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + i2c-bit-ops.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\i2c_core.c + i2c_core.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\i2c_dev.c + i2c_dev.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 1 + 0 + 0 + 0 + + 5 + 27 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 28 + 2 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + startup_gd32f4xx.s + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 47 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + gd32f4xx_i2c.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + gd32f4xx_syscfg.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + gd32f4xx_exti.c + 0 + 0 + + + 8 + 50 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + gd32f4xx_gpio.c + 0 + 0 + + + 8 + 51 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + gd32f4xx_rcu.c + 0 + 0 + + + 8 + 52 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + gd32f4xx_misc.c + 0 + 0 + + + 8 + 53 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + gd32f4xx_usart.c + 0 + 0 + + + 8 + 54 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + system_gd32f4xx.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + + diff --git a/bsp/gd32/arm/gd32407v-lckfb/project.uvproj b/bsp/gd32/arm/gd32407v-lckfb/project.uvproj new file mode 100644 index 0000000000..6699f2d036 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/project.uvproj @@ -0,0 +1,828 @@ + + + 1.1 +
### uVision Project, (C) Keil Software
+ + + rt-thread + 0x4 + ARM-ADS + 0 + + + GD32F407VK + GigaDevice + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) + + "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) + 0 + gd32f4xx.h + + + + + + + + + + SFD\GD\GD32F4xx\GD32F4xx.SFR + 0 + 0 + + + + GD\GD32F4xx\ + GD\GD32F4xx\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 3 + + + + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 1 + 0x8000000 + 0x300000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x300000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + RT_USING_LIBC, RT_USING_ARMLIBC, USE_STDPERIPH_DRIVER, GD32F407, __CLK_TCK=RT_TICK_PER_SECOND, __STDC_LIMIT_MACROS, __RTTHREAD__ + + ..\..\..\..\components\drivers\include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\compilers\common\extension;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\..\..\..\components\libc\compilers\common\include;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;.;..\..\..\..\components\libc\posix\ipc;..\..\..\..\components\libc\posix\io\eventfd;..\libraries\gd32_drivers;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\..\..\..\components\drivers\include;..\..\..\..\libcpu\arm\common;..\..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\posix\io\epoll;applications;..\..\..\..\components\finsh + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Compiler + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + + + cctype.c + 1 + ..\..\..\..\components\libc\compilers\common\cctype.c + + + + + cstdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + + + + + cstring.c + 1 + ..\..\..\..\components\libc\compilers\common\cstring.c + + + + + ctime.c + 1 + ..\..\..\..\components\libc\compilers\common\ctime.c + + + + + cunistd.c + 1 + ..\..\..\..\components\libc\compilers\common\cunistd.c + + + + + cwchar.c + 1 + ..\..\..\..\components\libc\compilers\common\cwchar.c + + + + + CPU + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c + + + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c + + + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + + DeviceDrivers + + + device.c + 1 + ..\..\..\..\components\drivers\core\device.c + + + + + i2c-bit-ops.c + 1 + ..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + + + i2c_core.c + 1 + ..\..\..\..\components\drivers\i2c\i2c_core.c + + + + + i2c_dev.c + 1 + ..\..\..\..\components\drivers\i2c\i2c_dev.c + + + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c + + + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + + + pin.c + 1 + ..\..\..\..\components\drivers\misc\pin.c + + + + + serial.c + 1 + ..\..\..\..\components\drivers\serial\serial.c + + + + + Drivers + + + board.c + 1 + board\board.c + + + + + startup_gd32f4xx.s + 2 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + + + + + drv_gpio.c + 1 + ..\libraries\gd32_drivers\drv_gpio.c + + + + + drv_soft_i2c.c + 1 + ..\libraries\gd32_drivers\drv_soft_i2c.c + + + + + drv_usart.c + 1 + ..\libraries\gd32_drivers\drv_usart.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\..\components\finsh\shell.c + + + + + msh.c + 1 + ..\..\..\..\components\finsh\msh.c + + + + + msh_parse.c + 1 + ..\..\..\..\components\finsh\msh_parse.c + + + + + cmd.c + 1 + ..\..\..\..\components\finsh\cmd.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + + + components.c + 1 + ..\..\..\..\src\components.c + + + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + + + object.c + 1 + ..\..\..\..\src\object.c + + + + + scheduler_up.c + 1 + ..\..\..\..\src\scheduler_up.c + + + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + + + Libraries + + + gd32f4xx_i2c.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + + + gd32f4xx_syscfg.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + + + gd32f4xx_exti.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + + + gd32f4xx_gpio.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + + + gd32f4xx_rcu.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + + + gd32f4xx_misc.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + + + gd32f4xx_usart.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + + + system_gd32f4xx.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + + + +
diff --git a/bsp/gd32/arm/gd32407v-lckfb/project.uvprojx b/bsp/gd32/arm/gd32407v-lckfb/project.uvprojx new file mode 100644 index 0000000000..7b329ac6df --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/project.uvprojx @@ -0,0 +1,724 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + GD32F407VE + GigaDevice + GigaDevice.GD32F4xx_DFP.3.0.4 + https://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_512KB -FS08000000 -FL080000 -FP0($$Device:GD32F407VE$Flash\GD32F4xx_512KB.FLM)) + 0 + $$Device:GD32F407VE$Device\F4XX\Include\gd32f4xx.h + + + + + + + + + + $$Device:GD32F407VE$SVD\GD32F4xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + RT_USING_LIBC, RT_USING_ARMLIBC, __RTTHREAD__, USE_STDPERIPH_DRIVER, GD32F407, __CLK_TCK=RT_TICK_PER_SECOND, __STDC_LIMIT_MACROS, LCKFB_SKYSTART_GD32F407V + + ..\..\..\..\components\libc\compilers\common\include;applications;..\..\..\..\components\drivers\include;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\finsh;..\..\..\..\include;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\compilers\common\extension;.;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\libraries\gd32_drivers;..\..\..\..\components\libc\posix\io\eventfd;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\..\..\..\components\libc\compilers\common\extension\fcntl\octal;board;..\..\..\..\components\libc\posix\io\epoll;..\..\..\..\components\drivers\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\..\..\..\components\drivers\include;..\..\..\..\libcpu\arm\common;..\..\..\..\components\libc\posix\ipc + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\gd32_rom.ld + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Compiler + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + cctype.c + 1 + ..\..\..\..\components\libc\compilers\common\cctype.c + + + cstdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + + + cstring.c + 1 + ..\..\..\..\components\libc\compilers\common\cstring.c + + + ctime.c + 1 + ..\..\..\..\components\libc\compilers\common\ctime.c + + + cunistd.c + 1 + ..\..\..\..\components\libc\compilers\common\cunistd.c + + + cwchar.c + 1 + ..\..\..\..\components\libc\compilers\common\cwchar.c + + + + + CPU + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + + DeviceDrivers + + + device.c + 1 + ..\..\..\..\components\drivers\core\device.c + + + i2c-bit-ops.c + 1 + ..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + i2c_core.c + 1 + ..\..\..\..\components\drivers\i2c\i2c_core.c + + + i2c_dev.c + 1 + ..\..\..\..\components\drivers\i2c\i2c_dev.c + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + pin.c + 1 + ..\..\..\..\components\drivers\misc\pin.c + + + serial.c + 1 + ..\..\..\..\components\drivers\serial\serial.c + + + + + Drivers + + + board.c + 1 + board\board.c + + + startup_gd32f4xx.s + 2 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + + + drv_gpio.c + 1 + ..\libraries\gd32_drivers\drv_gpio.c + + + drv_usart.c + 1 + ..\libraries\gd32_drivers\drv_usart.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\..\components\finsh\cmd.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + components.c + 1 + ..\..\..\..\src\components.c + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + scheduler_up.c + 1 + ..\..\..\..\src\scheduler_up.c + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + + + Libraries + + + gd32f4xx_i2c.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + gd32f4xx_syscfg.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + gd32f4xx_exti.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + gd32f4xx_gpio.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + gd32f4xx_rcu.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + gd32f4xx_misc.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + gd32f4xx_usart.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + system_gd32f4xx.c + 1 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + <Project Info> + 0 + 1 + + + + +
diff --git a/bsp/gd32/arm/gd32407v-lckfb/rtconfig.h b/bsp/gd32/arm/gd32407v-lckfb/rtconfig.h new file mode 100644 index 0000000000..c3218730ec --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/rtconfig.h @@ -0,0 +1,252 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_CPUS_NR 1 +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 100 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 + +/* kservice optimization */ + +#define RT_USING_DEBUG +#define RT_DEBUGING_COLOR +#define RT_DEBUGING_CONTEXT + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_SMALL_MEM_AS_HEAP +#define RT_USING_HEAP +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart0" +#define RT_VER_NUM 0x50100 +#define RT_BACKTRACE_LEVEL_MAX_NR 32 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 +#define FINSH_USING_OPTION_COMPLETION + +/* DFS: device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_I2C +#define RT_USING_I2C_BITOPS +#define RT_USING_PIN + +/* Using USB */ + + +/* C/C++ and POSIX layer */ + +/* ISO-ANSI C layer */ + +/* Timezone and Daylight Saving Time */ + +#define RT_LIBC_USING_LIGHT_TZ_DST +#define RT_LIBC_TZ_DEFAULT_HOUR 8 +#define RT_LIBC_TZ_DEFAULT_MIN 0 +#define RT_LIBC_TZ_DEFAULT_SEC 0 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Memory protection */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + +/* sensors drivers */ + + +/* touch drivers */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* Signal Processing and Control Algorithm Packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Projects and Demos */ + + +/* Sensors */ + + +/* Display */ + + +/* Timing */ + + +/* Data Processing */ + + +/* Data Storage */ + +/* Communication */ + + +/* Device Control */ + + +/* Other */ + + +/* Signal IO */ + + +/* Uncategorized */ + +/* Hardware Drivers Config */ + +#define SOC_SERIES_GD32F4xx +#define SOC_GD32407V + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART0 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/gd32/arm/gd32407v-lckfb/rtconfig.py b/bsp/gd32/arm/gd32407v-lckfb/rtconfig.py new file mode 100644 index 0000000000..9b8be8b91d --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/rtconfig.py @@ -0,0 +1,151 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m4' +CROSS_TOOL='keil' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armcc' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iccarm' + EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.ld' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + CXX = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M4.fp ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + CFLAGS += ' -std=c99' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iccarm': + # toolchains + CC = 'iccarm' + CXX = 'iccarm' + AS = 'iasmarm' + AR = 'iarchive' + LINK = 'ilinkarm' + TARGET_EXT = 'out' + + DEVICE = '-Dewarm' + #DEVICE = ' -D USE_STDPERIPH_DRIVER' + ' -D GD32F407xK' + + CFLAGS = DEVICE + CFLAGS += ' --diag_suppress Pa050' + CFLAGS += ' --no_cse' + CFLAGS += ' --no_unroll' + CFLAGS += ' --no_inline' + CFLAGS += ' --no_code_motion' + CFLAGS += ' --no_tbaa' + CFLAGS += ' --no_clustering' + CFLAGS += ' --no_scheduling' + CFLAGS += ' --endian=little' + CFLAGS += ' --cpu=Cortex-M4' + CFLAGS += ' -e' + CFLAGS += ' --fpu=VFPv4_sp' + CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' + CFLAGS += ' --silent' + + AFLAGS = DEVICE + AFLAGS += ' -s+' + AFLAGS += ' -w+' + AFLAGS += ' -r' + AFLAGS += ' --cpu Cortex-M4' + AFLAGS += ' -S' + AFLAGS += ' --fpu VFPv4_sp' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + CXXFLAGS = CFLAGS + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/gd32/arm/gd32407v-lckfb/template.ewp b/bsp/gd32/arm/gd32407v-lckfb/template.ewp new file mode 100644 index 0000000000..c3cff156ac --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/arm/gd32407v-lckfb/template.uvoptx b/bsp/gd32/arm/gd32407v-lckfb/template.uvoptx new file mode 100644 index 0000000000..bf22d03cbd --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/template.uvoptx @@ -0,0 +1,185 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + CMSIS_AGDI + -X"LCKFB-CMSIS-DAP" -ULCKFB-V0.0.3-8437307582050767921 -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_512KB.FLM -FS08000000 -FL080000 -FP0($$Device:GD32F407VE$Flash\GD32F4xx_512KB.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F4xx_512KB -FL080000 -FS08000000 -FP0($$Device:GD32F407VE$Flash\GD32F4xx_512KB.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/gd32/arm/gd32407v-lckfb/template.uvproj b/bsp/gd32/arm/gd32407v-lckfb/template.uvproj new file mode 100644 index 0000000000..deb72d33b0 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/template.uvproj @@ -0,0 +1,628 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 0 + + + GD32F407VK + GigaDevice + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) + + "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) + 0 + gd32f4xx.h + + + + + + + + + + SFD\GD\GD32F4xx\GD32F4xx.SFR + 0 + 0 + + + + GD\GD32F4xx\ + GD\GD32F4xx\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 3 + + + + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 1 + 0x8000000 + 0x300000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x300000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Include;..\..\..\Library\Firmware\CMSIS\GD\GD32F4xx\Include;..\..\..\Library\Utilities;..\ + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Application + + + main.c + 1 + ..\main.c + + + gd32f4xx_it.c + 1 + ..\gd32f4xx_it.c + + + + + CMSIS + + + system_gd32f4xx.c + 1 + ..\..\..\Library\Firmware\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + + GD32F4xx_Peripherals + + + gd32f4xx_adc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_adc.c + + + gd32f4xx_can.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_can.c + + + gd32f4xx_crc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_crc.c + + + gd32f4xx_ctc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_ctc.c + + + gd32f4xx_dac.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dac.c + + + gd32f4xx_dbg.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dbg.c + + + gd32f4xx_dci.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dci.c + + + gd32f4xx_dma.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dma.c + + + gd32f4xx_enet.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_enet.c + + + gd32f4xx_exmc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_exmc.c + + + gd32f4xx_exti.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + gd32f4xx_fmc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_fmc.c + + + gd32f4xx_fwdgt.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_fwdgt.c + + + gd32f4xx_gpio.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + gd32f4xx_i2c.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + gd32f4xx_ipa.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_ipa.c + + + gd32f4xx_iref.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_iref.c + + + gd32f4xx_misc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + gd32f4xx_pmu.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_pmu.c + + + gd32f4xx_rcu.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + gd32f4xx_rtc.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_rtc.c + + + gd32f4xx_sdio.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_sdio.c + + + gd32f4xx_spi.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_spi.c + + + gd32f4xx_syscfg.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + gd32f4xx_timer.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_timer.c + + + gd32f4xx_tli.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_tli.c + + + gd32f4xx_trng.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_trng.c + + + gd32f4xx_usart.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + gd32f4xx_wwdgt.c + 1 + ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_wwdgt.c + + + + + GD32F4xx_START + + + gd32f407r_start.c + 1 + ..\..\..\Library\Utilities\gd32f407r_start.c + + + + + Startup + + + startup_gd32f4xx.s + 2 + ..\..\..\Library\Firmware\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + + + + + Doc + + + readme.txt + 5 + ..\readme.txt + + + + + + + +
diff --git a/bsp/gd32/arm/gd32407v-lckfb/template.uvprojx b/bsp/gd32/arm/gd32407v-lckfb/template.uvprojx new file mode 100644 index 0000000000..027f6ec914 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-lckfb/template.uvprojx @@ -0,0 +1,414 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + GD32F407VE + GigaDevice + GigaDevice.GD32F4xx_DFP.3.0.4 + https://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_512KB -FS08000000 -FL080000 -FP0($$Device:GD32F407VE$Flash\GD32F4xx_512KB.FLM)) + 0 + $$Device:GD32F407VE$Device\F4XX\Include\gd32f4xx.h + + + + + + + + + + $$Device:GD32F407VE$SVD\GD32F4xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\gd32_rom.ld + + + + + + + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + <Project Info> + 0 + 1 + + + + +
diff --git a/bsp/gd32/arm/gd32470z-lckfb/.config b/bsp/gd32/arm/gd32470z-lckfb/.config index 221bd6b4ce..b83c89e0ed 100644 --- a/bsp/gd32/arm/gd32470z-lckfb/.config +++ b/bsp/gd32/arm/gd32470z-lckfb/.config @@ -8,8 +8,10 @@ # CONFIG_RT_NAME_MAX=8 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_NANO is not set # CONFIG_RT_USING_AMP is not set # CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 CONFIG_RT_ALIGN_SIZE=8 # CONFIG_RT_THREAD_PRIORITY_8 is not set CONFIG_RT_THREAD_PRIORITY_32=y @@ -19,6 +21,7 @@ CONFIG_RT_TICK_PER_SECOND=1000 CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_USING_HOOK=y CONFIG_RT_HOOK_USING_FUNC_PTR=y +# CONFIG_RT_USING_HOOKLIST is not set CONFIG_RT_USING_IDLE_HOOK=y CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=256 @@ -37,7 +40,7 @@ CONFIG_RT_KSERVICE_USING_STDLIB=y CONFIG_RT_USING_DEBUG=y CONFIG_RT_DEBUGING_COLOR=y CONFIG_RT_DEBUGING_CONTEXT=y -# CONFIG_RT_DEBUGING_INIT is not set +# CONFIG_RT_DEBUGING_AUTO_INIT is not set # # Inter-Thread communication @@ -65,19 +68,15 @@ CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y # CONFIG_RT_USING_MEMTRACE is not set # CONFIG_RT_USING_HEAP_ISR is not set CONFIG_RT_USING_HEAP=y - -# -# Kernel Device Object -# CONFIG_RT_USING_DEVICE=y # CONFIG_RT_USING_DEVICE_OPS is not set -# CONFIG_RT_USING_DM is not set # CONFIG_RT_USING_INTERRUPT_INFO is not set CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" -CONFIG_RT_VER_NUM=0x50002 +CONFIG_RT_VER_NUM=0x50100 # CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 # CONFIG_RT_USING_CACHE is not set # CONFIG_RT_USING_HW_ATOMIC is not set # CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set @@ -133,6 +132,7 @@ CONFIG_DFS_FILESYSTEM_TYPES_MAX=4 # # Device Drivers # +# CONFIG_RT_USING_DM is not set CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_UNAMED_PIPE_NUMBER=64 # CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set @@ -156,7 +156,6 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_MTD_NOR is not set # CONFIG_RT_USING_MTD_NAND is not set # CONFIG_RT_USING_PM is not set -# CONFIG_RT_USING_FDT is not set # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set # CONFIG_RT_USING_SPI is not set @@ -227,6 +226,12 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set + # # Utilities # diff --git a/bsp/gd32/arm/gd32470z-lckfb/project.uvoptx b/bsp/gd32/arm/gd32470z-lckfb/project.uvoptx index 14dde5e4db..b3c3c17210 100644 --- a/bsp/gd32/arm/gd32470z-lckfb/project.uvoptx +++ b/bsp/gd32/arm/gd32470z-lckfb/project.uvoptx @@ -174,6 +174,738 @@ + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 12 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 25 + 2 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + startup_gd32f4xx.s + 0 + 0 + + + 5 + 26 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 27 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Filesystem + 0 + 0 + 0 + 0 + + 6 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\components\dfs\dfs_v1\src\dfs_posix.c + dfs_posix.c + 0 + 0 + + + 6 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\components\dfs\dfs_v1\src\dfs_fs.c + dfs_fs.c + 0 + 0 + + + 6 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\components\dfs\dfs_v1\src\dfs.c + dfs.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\components\dfs\dfs_v1\src\dfs_file.c + dfs_file.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh_file.c + msh_file.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 8 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 9 + 49 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + gd32f4xx_syscfg.c + 0 + 0 + + + 9 + 50 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + gd32f4xx_exti.c + 0 + 0 + + + 9 + 51 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + gd32f4xx_gpio.c + 0 + 0 + + + 9 + 52 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + gd32f4xx_rcu.c + 0 + 0 + + + 9 + 53 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + gd32f4xx_misc.c + 0 + 0 + + + 9 + 54 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + gd32f4xx_usart.c + 0 + 0 + + + 9 + 55 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + system_gd32f4xx.c + 0 + 0 + + + ::CMSIS 0 diff --git a/bsp/gd32/arm/gd32470z-lckfb/project.uvprojx b/bsp/gd32/arm/gd32470z-lckfb/project.uvprojx index 87e72658a9..3d5204a608 100644 --- a/bsp/gd32/arm/gd32470z-lckfb/project.uvprojx +++ b/bsp/gd32/arm/gd32470z-lckfb/project.uvprojx @@ -1,42 +1,46 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread 0x4 ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC 0 GD32F470ZG GigaDevice - GigaDevice.GD32F4xx_DFP.3.0.0 - http://gd32mcu.com/data/documents/pack/ + GigaDevice.GD32F4xx_DFP.3.0.4 + https://gd32mcu.com/data/documents/pack/ IRAM(0x20000000,0x070000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x0100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE - - + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_1MB -FS08000000 -FL0100000 -FP0($$Device:GD32F470ZG$Flash\GD32F4xx_1MB.FLM)) 0 $$Device:GD32F470ZG$Device\F4XX\Include\gd32f4xx.h - - - - - - - - - + + + + + + + + + $$Device:GD32F470ZG$SVD\GD32F4xx.svd 0 0 - - - - - + + + + + 0 0 @@ -50,7 +54,7 @@ 0 0 1 - 0 + 1 .\build\ 1 0 @@ -58,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -68,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -79,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -100,8 +104,8 @@ 0 0 3 - - + + 1 @@ -134,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -171,7 +175,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -182,6 +186,7 @@ 2 0 0 + 0 1 0 8 @@ -305,7 +310,7 @@ 0x10000 - + 1 @@ -332,10 +337,10 @@ 0 0 - + __STDC_LIMIT_MACROS, RT_USING_ARMLIBC, USE_STDPERIPH_DRIVER, GD32F470, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__ - - ..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\compilers\common\extension;..\libraries\GD32F4xx_Firmware_Library\CMSIS;board;..\..\..\..\components\libc\compilers\common\include;applications;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\dfs\dfs_v1\include;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\posix\ipc;..\..\..\..\components\libc\posix\io\eventfd;..\libraries\gd32_drivers;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\..\..\..\components\drivers\include;..\..\..\..\libcpu\arm\common;..\..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\epoll;.;..\..\..\..\components\finsh + + ..\..\..\..\components\libc\compilers\common\include;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\finsh;..\..\..\..\include;board;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\..\components\dfs\dfs_v1\include;..\..\..\..\libcpu\arm\cortex-m4;.;..\libraries\gd32_drivers;..\..\..\..\components\libc\posix\io\eventfd;applications;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\components\libc\posix\io\epoll;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\..\..\..\components\drivers\include;..\..\..\..\libcpu\arm\common;..\..\..\..\components\libc\posix\ipc @@ -350,10 +355,10 @@ 0 4 - - - - + + + + @@ -365,13 +370,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + + @@ -394,50 +399,36 @@ 1 ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - cctype.c 1 ..\..\..\..\components\libc\compilers\common\cctype.c - - cstdlib.c 1 ..\..\..\..\components\libc\compilers\common\cstdlib.c - - cstring.c 1 ..\..\..\..\components\libc\compilers\common\cstring.c - - ctime.c 1 ..\..\..\..\components\libc\compilers\common\ctime.c - - cunistd.c 1 ..\..\..\..\components\libc\compilers\common\cunistd.c - - cwchar.c 1 @@ -453,22 +444,16 @@ 1 ..\..\..\..\libcpu\arm\common\div0.c - - showmem.c 1 ..\..\..\..\libcpu\arm\common\showmem.c - - context_rvds.S 2 ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S - - cpuport.c 1 @@ -484,64 +469,46 @@ 1 ..\..\..\..\components\drivers\core\device.c - - completion.c 1 ..\..\..\..\components\drivers\ipc\completion.c - - dataqueue.c 1 ..\..\..\..\components\drivers\ipc\dataqueue.c - - pipe.c 1 ..\..\..\..\components\drivers\ipc\pipe.c - - ringblk_buf.c 1 ..\..\..\..\components\drivers\ipc\ringblk_buf.c - - ringbuffer.c 1 ..\..\..\..\components\drivers\ipc\ringbuffer.c - - waitqueue.c 1 ..\..\..\..\components\drivers\ipc\waitqueue.c - - workqueue.c 1 ..\..\..\..\components\drivers\ipc\workqueue.c - - pin.c 1 ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 @@ -557,22 +524,16 @@ 1 board\board.c - - startup_gd32f4xx.s 2 ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -588,22 +549,16 @@ 1 ..\..\..\..\components\dfs\dfs_v1\src\dfs_posix.c - - dfs_fs.c 1 ..\..\..\..\components\dfs\dfs_v1\src\dfs_fs.c - - dfs.c 1 ..\..\..\..\components\dfs\dfs_v1\src\dfs.c - - dfs_file.c 1 @@ -619,29 +574,21 @@ 1 ..\..\..\..\components\finsh\shell.c - - msh.c 1 ..\..\..\..\components\finsh\msh.c - - msh_parse.c 1 ..\..\..\..\components\finsh\msh_parse.c - - cmd.c 1 ..\..\..\..\components\finsh\cmd.c - - msh_file.c 1 @@ -657,78 +604,56 @@ 1 ..\..\..\..\src\clock.c - - components.c 1 ..\..\..\..\src\components.c - - idle.c 1 ..\..\..\..\src\idle.c - - ipc.c 1 ..\..\..\..\src\ipc.c - - irq.c 1 ..\..\..\..\src\irq.c - - kservice.c 1 ..\..\..\..\src\kservice.c - - mem.c 1 ..\..\..\..\src\mem.c - - mempool.c 1 ..\..\..\..\src\mempool.c - - object.c 1 ..\..\..\..\src\object.c - - scheduler_up.c 1 ..\..\..\..\src\scheduler_up.c - - thread.c 1 ..\..\..\..\src\thread.c - - timer.c 1 @@ -744,43 +669,31 @@ 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c - - gd32f4xx_exti.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c - - gd32f4xx_gpio.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c - - gd32f4xx_rcu.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c - - gd32f4xx_misc.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c - - gd32f4xx_usart.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c - - system_gd32f4xx.c 1 @@ -788,21 +701,26 @@
+ + ::CMSIS + + - + - + - + - + + @@ -812,4 +730,5 @@ + diff --git a/bsp/gd32/arm/gd32470z-lckfb/rtconfig.h b/bsp/gd32/arm/gd32470z-lckfb/rtconfig.h index 5cdba2d84b..14d0473ecc 100644 --- a/bsp/gd32/arm/gd32470z-lckfb/rtconfig.h +++ b/bsp/gd32/arm/gd32470z-lckfb/rtconfig.h @@ -7,6 +7,7 @@ /* RT-Thread Kernel */ #define RT_NAME_MAX 8 +#define RT_CPUS_NR 1 #define RT_ALIGN_SIZE 8 #define RT_THREAD_PRIORITY_32 #define RT_THREAD_PRIORITY_MAX 32 @@ -42,14 +43,12 @@ #define RT_USING_SMALL_MEM #define RT_USING_SMALL_MEM_AS_HEAP #define RT_USING_HEAP - -/* Kernel Device Object */ - #define RT_USING_DEVICE #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart0" -#define RT_VER_NUM 0x50002 +#define RT_VER_NUM 0x50100 +#define RT_BACKTRACE_LEVEL_MAX_NR 32 /* RT-Thread Components */ @@ -118,6 +117,9 @@ /* Network */ +/* Memory protection */ + + /* Utilities */ diff --git a/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h index de1d1364f7..7a7e6f3754 100644 --- a/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h +++ b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h @@ -55,6 +55,10 @@ OF SUCH DAMAGE. #error "Please select the target GD32F4xx device in gd32f4xx.h file" #endif /* undefine GD32F4xx tip */ +#ifdef LCKFB_SKYSTART_GD32F407V +#define HXTAL_VALUE ((uint32_t)8000000) +#endif + /* define value of high speed crystal oscillator (HXTAL) in Hz */ #if !defined (HXTAL_VALUE) #define HXTAL_VALUE ((uint32_t)25000000) diff --git a/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c index 25020f2795..51fd50c2f2 100644 --- a/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c +++ b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c @@ -56,6 +56,12 @@ //#define __SYSTEM_CLOCK_240M_PLL_8M_HXTAL (uint32_t)(240000000) //#define __SYSTEM_CLOCK_240M_PLL_25M_HXTAL (uint32_t)(240000000) +#ifdef LCKFB_SKYSTART_GD32F407V +#undef __SYSTEM_CLOCK_200M_PLL_25M_HXTAL +#define __SYSTEM_CLOCK_168M_PLL_8M_HXTAL (uint32_t)(168000000) +#endif + + #define RCU_MODIFY(__delay) do{ \ volatile uint32_t i; \ if(0 != __delay){ \