This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 6a799fef6c add littlefs support for gd32f450zk-eval board
6a799fef6c is described below
commit 6a799fef6ce42494fb126d69fedb281d1d86f652
Author: GD32-MCU <[email protected]>
AuthorDate: Sat Apr 1 16:32:13 2023 +0800
add littlefs support for gd32f450zk-eval board
---
arch/arm/src/gd32f4/gd32f4xx_progmem.c | 4 +-
boards/arm/gd32f4/gd32f450zk-eval/Kconfig | 7 ++
.../gd32f450zk-eval/configs/fmclfsnsh/defconfig | 89 +++++++++++++++++++++
.../gd32f450zk-eval/configs/spilfsnsh/defconfig | 93 ++++++++++++++++++++++
.../gd32f4/gd32f450zk-eval/src/gd32f4xx_appinit.c | 29 ++++++-
.../arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_gd25.c | 27 +++++++
6 files changed, 246 insertions(+), 3 deletions(-)
diff --git a/arch/arm/src/gd32f4/gd32f4xx_progmem.c
b/arch/arm/src/gd32f4/gd32f4xx_progmem.c
index 19156c7d5a..28088f55d8 100644
--- a/arch/arm/src/gd32f4/gd32f4xx_progmem.c
+++ b/arch/arm/src/gd32f4/gd32f4xx_progmem.c
@@ -69,14 +69,14 @@
# define FMC_PROGMEM_SECTOR_SIZES {_K(16), _K(16), _K(16), _K(16)}
# define FMC_PROGMEM_SECTOR_NUM (4)
# define FMC_PROGMEM_SECTOR_SADDR (0x08100000)
-# define FMC_PROGMEM_SECTOR_EADDR (0x0813FFFF)
+# define FMC_PROGMEM_SECTOR_EADDR (0x0810FFFF)
# elif defined(CONFIG_GD32F4_FLASH_CONFIG_K)
# define FMC_PROGMEM_SECTOR_SIZES {_K(16), _K(16), _K(16), _K(16)}
# define FMC_PROGMEM_SECTOR_NUM (4)
# define FMC_PROGMEM_SECTOR_SADDR (0x08100000)
-# define FMC_PROGMEM_SECTOR_EADDR (0x0813FFFF)
+# define FMC_PROGMEM_SECTOR_EADDR (0x0810FFFF)
# endif
diff --git a/boards/arm/gd32f4/gd32f450zk-eval/Kconfig
b/boards/arm/gd32f4/gd32f450zk-eval/Kconfig
index 4254e19e48..a0d8af4897 100644
--- a/boards/arm/gd32f4/gd32f450zk-eval/Kconfig
+++ b/boards/arm/gd32f4/gd32f450zk-eval/Kconfig
@@ -112,6 +112,13 @@ config GD32F450ZK_EVAL_GD25_NXFFS
a wear-leveling, NuttX FLASH file system (NXFFS). The downside
of
NXFFS is that it can be very slow.
+config GD32F450ZK_EVAL_GD25_LITTLEFS
+ bool "Create GD25 serial FLASH LFS file system"
+ depends on FS_LITTLEFS
+ ---help---
+ Create the MTD driver for the GD25 and mount the GD25 device as
+ a wear-leveling, LittleFS FLASH file system (LFS).
+
endchoice # GD25 serial FLASH configuration
config GD32F450ZK_EVAL_AT24_TEST
diff --git a/boards/arm/gd32f4/gd32f450zk-eval/configs/fmclfsnsh/defconfig
b/boards/arm/gd32f4/gd32f450zk-eval/configs/fmclfsnsh/defconfig
new file mode 100644
index 0000000000..5725b28260
--- /dev/null
+++ b/boards/arm/gd32f4/gd32f450zk-eval/configs/fmclfsnsh/defconfig
@@ -0,0 +1,89 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed
.config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that
includes your
+# modifications.
+#
+# CONFIG_ARCH_FPU is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="gd32f450zk-eval"
+CONFIG_ARCH_BOARD_GD32F450ZK_EVAL=y
+CONFIG_ARCH_BUTTONS=y
+CONFIG_ARCH_CHIP="gd32f4"
+CONFIG_ARCH_CHIP_GD32F450ZK=y
+CONFIG_ARCH_CHIP_GD32F4=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_BOARD_LOOPSPERMSEC=16717
+CONFIG_BUILTIN=y
+CONFIG_DEBUG_CUSTOMOPT=y
+CONFIG_DEBUG_OPTLEVEL="-O0"
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ETH0_PHY_DP83848C=y
+CONFIG_FS_LITTLEFS=y
+CONFIG_FS_LITTLEFS_PROGRAM_SIZE_FACTOR=1
+CONFIG_FS_PROCFS=y
+CONFIG_FS_PROCFS_REGISTER=y
+CONFIG_FS_TMPFS=y
+CONFIG_GD32F4_DISABLE_IDLE_SLEEP_DURING_DEBUG=y
+CONFIG_GD32F4_ENETMAC=y
+CONFIG_GD32F4_FLASH_CONFIG_K=y
+CONFIG_GD32F4_FMC=y
+CONFIG_GD32F4_MTD=y
+CONFIG_GD32F4_PHY_SR=16
+CONFIG_GD32F4_PHY_SR_100FD=0x0004
+CONFIG_GD32F4_PHY_SR_100HD=0x0000
+CONFIG_GD32F4_PHY_SR_10FD=0x0006
+CONFIG_GD32F4_PHY_SR_10HD=0x0002
+CONFIG_GD32F4_PHY_SR_ALTCONFIG=y
+CONFIG_GD32F4_PHY_SR_ALTMODE=0x006
+CONFIG_GD32F4_PROGMEM=y
+CONFIG_GD32F4_RMII_EXTCLK=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INTELHEX_BINARY=y
+CONFIG_MM_REGIONS=2
+CONFIG_NET=y
+CONFIG_NETDB_DNSCLIENT=y
+CONFIG_NETINIT_DRIPADDR=0x0a320301
+CONFIG_NETINIT_IPADDR=0x0a320336
+CONFIG_NETINIT_MACADDR_1=0x20304050
+CONFIG_NETINIT_MACADDR_2=0x6080
+CONFIG_NETINIT_NOMAC=y
+CONFIG_NETUTILS_DISCOVER=y
+CONFIG_NETUTILS_WEBCLIENT=y
+CONFIG_NET_ARP_IPIN=y
+CONFIG_NET_ARP_SEND=y
+CONFIG_NET_BROADCAST=y
+CONFIG_NET_ETH_PKTSIZE=1500
+CONFIG_NET_ICMP=y
+CONFIG_NET_ICMP_SOCKET=y
+CONFIG_NET_IGMP=y
+CONFIG_NET_LOOPBACK=y
+CONFIG_NET_ROUTE=y
+CONFIG_NET_STATISTICS=y
+CONFIG_NET_TCP=y
+CONFIG_NET_UDP=y
+CONFIG_NET_UDP_CHECKSUMS=y
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_RAM_SIZE=114688
+CONFIG_RAM_START=0x20000000
+CONFIG_RAW_BINARY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_LPWORK=y
+CONFIG_SCHED_WAITPID=y
+CONFIG_START_DAY=6
+CONFIG_START_MONTH=12
+CONFIG_START_YEAR=2011
+CONFIG_SYSTEM_DHCPC_RENEW=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_PING=y
+CONFIG_TASK_NAME_SIZE=0
+CONFIG_USART0_SERIAL_CONSOLE=y
diff --git a/boards/arm/gd32f4/gd32f450zk-eval/configs/spilfsnsh/defconfig
b/boards/arm/gd32f4/gd32f450zk-eval/configs/spilfsnsh/defconfig
new file mode 100644
index 0000000000..ca9cd87f35
--- /dev/null
+++ b/boards/arm/gd32f4/gd32f450zk-eval/configs/spilfsnsh/defconfig
@@ -0,0 +1,93 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed
.config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that
includes your
+# modifications.
+#
+# CONFIG_ARCH_FPU is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="gd32f450zk-eval"
+CONFIG_ARCH_BOARD_GD32F450ZK_EVAL=y
+CONFIG_ARCH_BUTTONS=y
+CONFIG_ARCH_CHIP="gd32f4"
+CONFIG_ARCH_CHIP_GD32F450ZK=y
+CONFIG_ARCH_CHIP_GD32F4=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_BOARD_LOOPSPERMSEC=16717
+CONFIG_BUILTIN=y
+CONFIG_DEBUG_CUSTOMOPT=y
+CONFIG_DEBUG_OPTLEVEL="-O0"
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ETH0_PHY_DP83848C=y
+CONFIG_FS_LITTLEFS=y
+CONFIG_FS_PROCFS=y
+CONFIG_FS_PROCFS_REGISTER=y
+CONFIG_FS_TMPFS=y
+CONFIG_GD25_SPIFREQUENCY=4000000
+CONFIG_GD32F450ZK_EVAL_GD25_BLOCKMOUNT=y
+CONFIG_GD32F450ZK_EVAL_GD25_LITTLEFS=y
+CONFIG_GD32F4_168MHZ=y
+CONFIG_GD32F4_DISABLE_IDLE_SLEEP_DURING_DEBUG=y
+CONFIG_GD32F4_ENETMAC=y
+CONFIG_GD32F4_FLASH_CONFIG_K=y
+CONFIG_GD32F4_PHY_SR=16
+CONFIG_GD32F4_PHY_SR_100FD=0x0004
+CONFIG_GD32F4_PHY_SR_100HD=0x0000
+CONFIG_GD32F4_PHY_SR_10FD=0x0006
+CONFIG_GD32F4_PHY_SR_10HD=0x0002
+CONFIG_GD32F4_PHY_SR_ALTCONFIG=y
+CONFIG_GD32F4_PHY_SR_ALTMODE=0x006
+CONFIG_GD32F4_RMII_EXTCLK=y
+CONFIG_GD32F4_SPI5=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INTELHEX_BINARY=y
+CONFIG_MM_REGIONS=2
+CONFIG_MTD=y
+CONFIG_MTD_BYTE_WRITE=y
+CONFIG_MTD_GD25=y
+CONFIG_NET=y
+CONFIG_NETDB_DNSCLIENT=y
+CONFIG_NETINIT_DRIPADDR=0x0a320301
+CONFIG_NETINIT_IPADDR=0x0a320336
+CONFIG_NETINIT_MACADDR_1=0x20304050
+CONFIG_NETINIT_MACADDR_2=0x6080
+CONFIG_NETINIT_NOMAC=y
+CONFIG_NETUTILS_DISCOVER=y
+CONFIG_NETUTILS_WEBCLIENT=y
+CONFIG_NET_ARP_IPIN=y
+CONFIG_NET_ARP_SEND=y
+CONFIG_NET_BROADCAST=y
+CONFIG_NET_ETH_PKTSIZE=1500
+CONFIG_NET_ICMP=y
+CONFIG_NET_ICMP_SOCKET=y
+CONFIG_NET_IGMP=y
+CONFIG_NET_LOOPBACK=y
+CONFIG_NET_ROUTE=y
+CONFIG_NET_STATISTICS=y
+CONFIG_NET_TCP=y
+CONFIG_NET_UDP=y
+CONFIG_NET_UDP_CHECKSUMS=y
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_RAM_SIZE=114688
+CONFIG_RAM_START=0x20000000
+CONFIG_RAW_BINARY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_LPWORK=y
+CONFIG_SCHED_WAITPID=y
+CONFIG_START_DAY=6
+CONFIG_START_MONTH=12
+CONFIG_START_YEAR=2011
+CONFIG_SYSTEM_DHCPC_RENEW=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_PING=y
+CONFIG_TASK_NAME_SIZE=0
+CONFIG_USART0_SERIAL_CONSOLE=y
diff --git a/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_appinit.c
b/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_appinit.c
index 5060eafe6c..1bf1b97c11 100644
--- a/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_appinit.c
+++ b/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_appinit.c
@@ -104,7 +104,7 @@ int board_app_initialize(uintptr_t arg)
}
#endif
-#ifdef CONFIG_FS_NXFFS
+#ifndef CONFIG_DISABLE_MOUNTPOINT
# ifdef CONFIG_GD32F4_PROGMEM
@@ -118,6 +118,7 @@ int board_app_initialize(uintptr_t arg)
syslog(LOG_ERR, "ERROR: progmem_initialize failed\n");
}
+# if defined(CONFIG_FS_NXFFS)
/* Initialize to provide NXFFS on the MTD interface */
ret = nxffs_initialize(mtd);
@@ -135,7 +136,33 @@ int board_app_initialize(uintptr_t arg)
syslog(LOG_ERR, "ERROR: Failed to mount the NXFFS volume: %d\n",
ret);
}
+# elif defined(CONFIG_FS_LITTLEFS)
+ /* Initialize to provide LittleFS on the MTD interface */
+ ret = register_mtddriver("/dev/fmc", mtd, 0755, NULL);
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "ERROR: Failed to register MTD: %d\n", ret);
+ return ret;
+ }
+
+ /* Mount the file system at /mnt/fmc */
+
+ ret = nx_mount("/dev/fmc", "/mnt/fmc", "littlefs", 0, NULL);
+ if (ret < 0)
+ {
+ ret = nx_mount("/dev/fmc", "/mnt/fmc", "littlefs", 0,
+ "forceformat");
+ if (ret < 0)
+ {
+ ferr("ERROR: Failed to mount the FS volume: %d\n", ret);
+ return ret;
+ }
+ }
+
+ syslog(LOG_INFO, "INFO: LittleFS volume /mnt/fmc mount " \
+ "on chip flash success: %d\n", ret);
+# endif
# endif
# ifdef HAVE_GD25
diff --git a/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_gd25.c
b/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_gd25.c
index ebc8fd4532..966e4a54f9 100644
--- a/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_gd25.c
+++ b/boards/arm/gd32f4/gd32f450zk-eval/src/gd32f4xx_gd25.c
@@ -122,6 +122,33 @@ int gd32_gd25_automount(int minor)
syslog(LOG_INFO, "INFO: NXFFS volume /mnt/gd25 mount \
spi flash success: %d\n", ret);
+
+#elif defined(CONFIG_GD32F450ZK_EVAL_GD25_LITTLEFS)
+ /* Initialize to provide LittleFS on the MTD interface */
+
+ ret = register_mtddriver("/dev/spiflash", mtd, 0755, NULL);
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "ERROR: Failed to register MTD: %d\n", ret);
+ return ret;
+ }
+
+ /* Mount the file system at /mnt/gd25 */
+
+ ret = nx_mount("/dev/spiflash", "/mnt/gd25", "littlefs", 0, NULL);
+ if (ret < 0)
+ {
+ ret = nx_mount("/dev/spiflash", "/mnt/gd25", "littlefs", 0,
+ "forceformat");
+ if (ret < 0)
+ {
+ ferr("ERROR: Failed to mount the FS volume: %d\n", ret);
+ return ret;
+ }
+ }
+
+ syslog(LOG_INFO, "INFO: LittleFS volume /mnt/gd25 mount \
+ spi flash success: %d\n", ret);
#endif
/* Now we are initialized */