diff --git a/.config b/.config
index 242e3fd..315a37d 100644
--- a/.config
+++ b/.config
@@ -217,7 +217,22 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y
#
# DFS: device virtual file system
#
-# CONFIG_RT_USING_DFS is not set
+CONFIG_RT_USING_DFS=y
+CONFIG_DFS_USING_POSIX=y
+CONFIG_DFS_USING_WORKDIR=y
+# CONFIG_RT_USING_DFS_MNTTABLE is not set
+CONFIG_DFS_FD_MAX=16
+CONFIG_RT_USING_DFS_V1=y
+# CONFIG_RT_USING_DFS_V2 is not set
+CONFIG_DFS_FILESYSTEMS_MAX=4
+CONFIG_DFS_FILESYSTEM_TYPES_MAX=4
+# CONFIG_RT_USING_DFS_ELMFAT is not set
+CONFIG_RT_USING_DFS_DEVFS=y
+# CONFIG_RT_USING_DFS_ROMFS is not set
+# CONFIG_RT_USING_DFS_CROMFS is not set
+# CONFIG_RT_USING_DFS_RAMFS is not set
+# CONFIG_RT_USING_DFS_TMPFS is not set
+# CONFIG_RT_USING_DFS_MQUEUE is not set
# end of DFS: device virtual file system
CONFIG_RT_USING_FAL=y
@@ -252,7 +267,7 @@ CONFIG_RT_USING_ADC=y
CONFIG_RT_USING_PWM=y
# CONFIG_RT_USING_PULSE_ENCODER is not set
# CONFIG_RT_USING_INPUT_CAPTURE is not set
-# CONFIG_RT_USING_MTD_NOR is not set
+CONFIG_RT_USING_MTD_NOR=y
# CONFIG_RT_USING_MTD_NAND is not set
# CONFIG_RT_USING_PM is not set
# CONFIG_RT_USING_RTC is not set
@@ -311,7 +326,7 @@ CONFIG_RT_CHERRYUSB_DEVICE_DWC2_ST=y
# CONFIG_RT_CHERRYUSB_DEVICE_NRF5X is not set
CONFIG_RT_CHERRYUSB_DEVICE_CDC_ACM=y
# CONFIG_RT_CHERRYUSB_DEVICE_HID is not set
-# CONFIG_RT_CHERRYUSB_DEVICE_MSC is not set
+CONFIG_RT_CHERRYUSB_DEVICE_MSC=y
# CONFIG_RT_CHERRYUSB_DEVICE_AUDIO is not set
# CONFIG_RT_CHERRYUSB_DEVICE_VIDEO is not set
# CONFIG_RT_CHERRYUSB_DEVICE_CDC_RNDIS is not set
@@ -327,6 +342,9 @@ CONFIG_CONFIG_USBDEV_MSC_MAX_BUFSIZE=1024
# CONFIG_CONFIG_USBDEV_CDC_ECM_USING_LWIP is not set
CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_NONE=y
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM is not set
+# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_MSC is not set
+# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_MSC_BLKDEV is not set
+# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM_MSC is not set
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV1 is not set
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2_CDC is not set
# CONFIG_RT_CHERRYUSB_HOST is not set
@@ -753,7 +771,38 @@ CONFIG_PKG_CMSIS_CORE_VER="latest"
# 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_LITTLEFS=y
+CONFIG_PKG_LITTLEFS_PATH="/packages/system/littlefs"
+# CONFIG_PKG_USING_LITTLEFS_V090 is not set
+# CONFIG_PKG_USING_LITTLEFS_V170 is not set
+# CONFIG_PKG_USING_LITTLEFS_V172 is not set
+# CONFIG_PKG_USING_LITTLEFS_V201 is not set
+# CONFIG_PKG_USING_LITTLEFS_V205 is not set
+# CONFIG_PKG_USING_LITTLEFS_V214 is not set
+# CONFIG_PKG_USING_LITTLEFS_V220 is not set
+# CONFIG_PKG_USING_LITTLEFS_V221 is not set
+# CONFIG_PKG_USING_LITTLEFS_V230 is not set
+# CONFIG_PKG_USING_LITTLEFS_V250 is not set
+# CONFIG_PKG_USING_LITTLEFS_V293 is not set
+# CONFIG_PKG_USING_LITTLEFS_V2112 is not set
+CONFIG_PKG_USING_LITTLEFS_LATEST_VERSION=y
+CONFIG_LFS_READ_SIZE=256
+CONFIG_LFS_PROG_SIZE=256
+CONFIG_LFS_BLOCK_SIZE=4096
+# CONFIG_LFS_YES_TRACE is not set
+CONFIG_LFS_NO_DEBUG=y
+# CONFIG_LFS_NO_WARN is not set
+# CONFIG_LFS_NO_ERROR is not set
+# CONFIG_LFS_NO_ASSERT is not set
+# CONFIG_LFS_NO_INTRINSICS is not set
+# CONFIG_LFS_NO_MALLOC is not set
+CONFIG_LFS_CACHE_SIZE=256
+CONFIG_LFS_BLOCK_CYCLES=-1
+# CONFIG_DFS_LFS_READONLY is not set
+CONFIG_LFS_THREADSAFE=y
+CONFIG_LFS_LOOKAHEAD_MAX=128
+CONFIG_RT_DEF_LFS_DRIVERS=1
+CONFIG_PKG_LITTLEFS_VER="latest"
# CONFIG_PKG_USING_DFS_JFFS2 is not set
# CONFIG_PKG_USING_DFS_UFFS is not set
# CONFIG_PKG_USING_LWEXT4 is not set
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 7fa58b3..dbb6095 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -3,6 +3,7 @@
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 01fbc31..0c4f0e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,9 +49,12 @@ INCLUDE_DIRECTORIES(
packages/erpc-1.14.0/erpc_c/port
packages/erpc-1.14.0/erpc_c/setup
packages/erpc-1.14.0/erpc_c/transports
+ packages/littlefs-latest
rt-thread/include
rt-thread/libcpu/arm/common
rt-thread/libcpu/arm/cortex-m7
+ rt-thread/components/dfs/dfs_v1/include
+ rt-thread/components/dfs/dfs_v1/filesystems/devfs
rt-thread/components/drivers/include
rt-thread/components/drivers/ktime
rt-thread/components/drivers/ktime/inc
@@ -99,6 +102,7 @@ INCLUDE_DIRECTORIES(
ADD_DEFINITIONS(
-DSTM32H750xx
+ -DLFS_CONFIG=lfs_config.h
-D__RTTHREAD__
-DRT_USING_NEWLIBC
-DRT_USING_LIBC
@@ -108,11 +112,11 @@ ADD_DEFINITIONS(
# Library source files
SET(RT_APP_ERPC_SOURCES
- applications/erpc/proto/generated/servo_service_server.cpp
- applications/erpc/common/src/erpc_error_handler.cpp
applications/erpc/proto/generated/servo_service_interface.cpp
- applications/erpc/service/src/erpc_server_main.cpp
+ applications/erpc/common/src/erpc_error_handler.cpp
applications/erpc/service/src/servo_service_impl.cpp
+ applications/erpc/proto/generated/servo_service_server.cpp
+ applications/erpc/service/src/erpc_server_main.cpp
)
SET(RT_APPLICATIONS_SOURCES
@@ -120,13 +124,14 @@ SET(RT_APPLICATIONS_SOURCES
)
SET(RT_CHERRYUSB_SOURCES
- rt-thread/components/drivers/usb/cherryusb/osal/usb_osal_rtthread.c
- rt-thread/components/drivers/usb/cherryusb/platform/rtthread/usb_msh.c
rt-thread/components/drivers/usb/cherryusb/port/dwc2/usb_glue_st.c
- rt-thread/components/drivers/usb/cherryusb/port/dwc2/usb_dc_dwc2.c
+ rt-thread/components/drivers/usb/cherryusb/platform/rtthread/usb_msh.c
rt-thread/components/drivers/usb/cherryusb/class/cdc/usbd_cdc_acm.c
- rt-thread/components/drivers/usb/cherryusb/platform/rtthread/usb_check.c
rt-thread/components/drivers/usb/cherryusb/core/usbd_core.c
+ rt-thread/components/drivers/usb/cherryusb/platform/rtthread/usb_check.c
+ rt-thread/components/drivers/usb/cherryusb/port/dwc2/usb_dc_dwc2.c
+ rt-thread/components/drivers/usb/cherryusb/class/msc/usbd_msc.c
+ rt-thread/components/drivers/usb/cherryusb/osal/usb_osal_rtthread.c
)
SET(RT_COMMON_SOURCES
@@ -150,8 +155,8 @@ SET(RT_CONTROLLER_SOURCES
)
SET(RT_CPP_SOURCES
- rt-thread/components/libc/cplusplus/cxx_crt.cpp
rt-thread/components/libc/cplusplus/cxx_crt_init.c
+ rt-thread/components/libc/cplusplus/cxx_crt.cpp
)
SET(RT_DEVICEDRIVERS_SOURCES
@@ -167,6 +172,7 @@ SET(RT_DEVICEDRIVERS_SOURCES
rt-thread/components/drivers/ipc/workqueue.c
rt-thread/components/drivers/misc/adc.c
rt-thread/components/drivers/misc/rt_drv_pwm.c
+ rt-thread/components/drivers/mtd/mtd_nor.c
rt-thread/components/drivers/pin/dev_pin.c
rt-thread/components/drivers/serial/dev_serial.c
rt-thread/components/drivers/spi/dev_qspi_core.c
@@ -177,6 +183,7 @@ SET(RT_DEVICEDRIVERS_SOURCES
SET(RT_DRIVERS_SOURCES
board/CubeMX_Config/Src/stm32h7xx_hal_msp.c
board/board.c
+ board/ports/fal/fal_flashfs.c
board/ports/usb/usb_cdc_char_device.c
board/ports/usb/usb_cdc_init.c
libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/gcc/startup_stm32h750xx.s
@@ -192,36 +199,45 @@ SET(RT_DRIVERS_SOURCES
)
SET(RT_ERPC_SOURCES
+ packages/erpc-1.14.0/erpc_c/transports/erpc_inter_thread_buffer_transport.cpp
+ packages/erpc-1.14.0/erpc_c/port/erpc_port_rtt.cpp
+ packages/erpc-1.14.0/erpc_c/transports/erpc_usb_cdc_transport.cpp
packages/erpc-1.14.0/erpc_c/infra/erpc_transport_arbitrator.cpp
+ packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_dynamic.cpp
+ packages/erpc-1.14.0/erpc_c/setup/erpc_setup_usb_cdc.cpp
+ packages/erpc-1.14.0/erpc_c/infra/erpc_basic_codec.cpp
+ packages/erpc-1.14.0/erpc_c/setup/erpc_server_setup.cpp
+ packages/erpc-1.14.0/erpc_c/infra/erpc_message_buffer.cpp
packages/erpc-1.14.0/erpc_c/infra/erpc_framed_transport.cpp
packages/erpc-1.14.0/erpc_c/infra/erpc_pre_post_action.cpp
- packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_dynamic.cpp
- packages/erpc-1.14.0/erpc_c/infra/erpc_message_loggers.cpp
- packages/erpc-1.14.0/erpc_c/infra/erpc_server.cpp
- packages/erpc-1.14.0/erpc_c/setup/erpc_setup_usb_cdc.cpp
- packages/erpc-1.14.0/erpc_c/transports/erpc_inter_thread_buffer_transport.cpp
- packages/erpc-1.14.0/erpc_c/transports/erpc_usb_cdc_transport.cpp
packages/erpc-1.14.0/erpc_c/infra/erpc_simple_server.cpp
- packages/erpc-1.14.0/erpc_c/port/erpc_threading_pthreads.cpp
packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_static.cpp
- packages/erpc-1.14.0/erpc_c/setup/erpc_server_setup.cpp
+ packages/erpc-1.14.0/erpc_c/infra/erpc_server.cpp
packages/erpc-1.14.0/erpc_c/infra/erpc_crc16.cpp
- packages/erpc-1.14.0/erpc_c/infra/erpc_message_buffer.cpp
- packages/erpc-1.14.0/erpc_c/infra/erpc_basic_codec.cpp
- packages/erpc-1.14.0/erpc_c/port/erpc_port_rtt.cpp
+ packages/erpc-1.14.0/erpc_c/infra/erpc_message_loggers.cpp
+ packages/erpc-1.14.0/erpc_c/port/erpc_threading_pthreads.cpp
)
SET(RT_FAL_SOURCES
- rt-thread/components/fal/src/fal_rtt.c
- rt-thread/components/fal/src/fal.c
- rt-thread/components/fal/src/fal_flash.c
rt-thread/components/fal/src/fal_partition.c
+ rt-thread/components/fal/src/fal.c
+ rt-thread/components/fal/src/fal_rtt.c
+ rt-thread/components/fal/src/fal_flash.c
+)
+
+SET(RT_FILESYSTEM_SOURCES
+ rt-thread/components/dfs/dfs_v1/filesystems/devfs/devfs.c
+ rt-thread/components/dfs/dfs_v1/src/dfs.c
+ rt-thread/components/dfs/dfs_v1/src/dfs_file.c
+ rt-thread/components/dfs/dfs_v1/src/dfs_fs.c
+ rt-thread/components/dfs/dfs_v1/src/dfs_posix.c
)
SET(RT_FINSH_SOURCES
+ rt-thread/components/finsh/msh_file.c
+ rt-thread/components/finsh/shell.c
rt-thread/components/finsh/msh_parse.c
rt-thread/components/finsh/cmd.c
- rt-thread/components/finsh/shell.c
rt-thread/components/finsh/msh.c
)
@@ -245,15 +261,15 @@ SET(RT_KERNEL_SOURCES
SET(RT_KLIBC_SOURCES
rt-thread/src/klibc/kstdio.c
- rt-thread/src/klibc/rt_vsscanf.c
rt-thread/src/klibc/kstring.c
+ rt-thread/src/klibc/rt_vsscanf.c
rt-thread/src/klibc/kerrno.c
)
SET(RT_KTIME_SOURCES
- rt-thread/components/drivers/ktime/src/hrtimer.c
rt-thread/components/drivers/ktime/src/cputimer.c
rt-thread/components/drivers/ktime/src/boottime.c
+ rt-thread/components/drivers/ktime/src/hrtimer.c
)
SET(RT_LIBCPU_SOURCES
@@ -266,37 +282,45 @@ SET(RT_LIBCPU_SOURCES
)
SET(RT_LIBRARIES_SOURCES
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cec.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_comp.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_usart.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c
libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_lptim.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c
- libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/system_stm32h7xx.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c
libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_lptim.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_usart.c
libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.c
- libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nor.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_comp.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c
+ libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/system_stm32h7xx.c
libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cec.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c
+ libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c
+)
+
+SET(RT_LITTLEFS_SOURCES
+ packages/littlefs-latest/lfs.c
+ packages/littlefs-latest/dfs_lfs.c
+ packages/littlefs-latest/lfs_crc.c
+ packages/littlefs-latest/lfs_util.c
)
SET(RT_POSIX_SOURCES
@@ -315,8 +339,8 @@ SET(RT_POSIX_SOURCES
SET(RT_SERVO_CONTROL_SOURCES
applications/servo_manager/src/servo_driver.cpp
- applications/servo_manager/src/servo_control.cpp
applications/servo_manager/src/servo_manager.cpp
+ applications/servo_manager/src/servo_control.cpp
)
SET(RT_UTC_UTEST_SOURCES
@@ -352,12 +376,14 @@ ADD_LIBRARY(rtt_DeviceDrivers OBJECT ${RT_DEVICEDRIVERS_SOURCES})
ADD_LIBRARY(rtt_Drivers OBJECT ${RT_DRIVERS_SOURCES})
ADD_LIBRARY(rtt_erpc OBJECT ${RT_ERPC_SOURCES})
ADD_LIBRARY(rtt_Fal OBJECT ${RT_FAL_SOURCES})
+ADD_LIBRARY(rtt_Filesystem OBJECT ${RT_FILESYSTEM_SOURCES})
ADD_LIBRARY(rtt_Finsh OBJECT ${RT_FINSH_SOURCES})
ADD_LIBRARY(rtt_Kernel OBJECT ${RT_KERNEL_SOURCES})
ADD_LIBRARY(rtt_klibc OBJECT ${RT_KLIBC_SOURCES})
ADD_LIBRARY(rtt_ktime OBJECT ${RT_KTIME_SOURCES})
ADD_LIBRARY(rtt_libcpu OBJECT ${RT_LIBCPU_SOURCES})
ADD_LIBRARY(rtt_Libraries OBJECT ${RT_LIBRARIES_SOURCES})
+ADD_LIBRARY(rtt_littlefs OBJECT ${RT_LITTLEFS_SOURCES})
ADD_LIBRARY(rtt_POSIX OBJECT ${RT_POSIX_SOURCES})
ADD_LIBRARY(rtt_servo_control OBJECT ${RT_SERVO_CONTROL_SOURCES})
@@ -384,12 +410,14 @@ TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME}.elf
rtt_Drivers
rtt_erpc
rtt_Fal
+ rtt_Filesystem
rtt_Finsh
rtt_Kernel
rtt_klibc
rtt_ktime
rtt_libcpu
rtt_Libraries
+ rtt_littlefs
rtt_POSIX
rtt_servo_control
rtt_utc_UTest
diff --git a/board/SConscript b/board/SConscript
index d225094..b439e2b 100644
--- a/board/SConscript
+++ b/board/SConscript
@@ -9,6 +9,7 @@ cwd = GetCurrentDir()
src = Glob('board.c')
src += Glob('CubeMX_Config/Src/stm32h7xx_hal_msp.c')
# src += Glob('ports/qspi_flash_init.c')
+src += Glob('ports/fal/*.c')
src += Glob('ports/usb/*.c')
path = [cwd]
path += [cwd + '/CubeMX_Config/Inc']
diff --git a/board/ports/fal/fal_cfg.h b/board/ports/fal/fal_cfg.h
index a876f7a..3344197 100644
--- a/board/ports/fal/fal_cfg.h
+++ b/board/ports/fal/fal_cfg.h
@@ -7,12 +7,12 @@
/* ===================== Flash device Configuration ========================= */
-extern const struct fal_flash_dev stm32_onchip_flash_256k;
+extern const struct fal_flash_dev stm32_onchip_flash_1024k;
/* flash device table */
#define FAL_FLASH_DEV_TABLE \
{ \
-&stm32_onchip_flash_256k \
+&stm32_onchip_flash_1024k \
}
/* ====================== Partition Configuration ========================== */
@@ -21,8 +21,8 @@ extern const struct fal_flash_dev stm32_onchip_flash_256k;
#define FAL_PART_TABLE \
{ \
-{FAL_PART_MAGIC_WORD, "bl", "onchip_flash_256k", 0, 128 * 1024, 0}, \
-{FAL_PART_MAGIC_WORD, "config", "onchip_flash_256k", 128 * 1024, 128 * 1024, 0}, \
+{FAL_PART_MAGIC_WORD, "bl", "onchip_flash_1024k", 0, 128 * 1024, 0}, \
+{FAL_PART_MAGIC_WORD, "config", "onchip_flash_1024k", 128 * 1024, 896 * 1024, 0}, \
}
#endif /* FAL_PART_HAS_TABLE_CFG */
diff --git a/board/ports/fal/fal_flashfs.c b/board/ports/fal/fal_flashfs.c
new file mode 100644
index 0000000..5faa27e
--- /dev/null
+++ b/board/ports/fal/fal_flashfs.c
@@ -0,0 +1,114 @@
+#include
+#include
+
+#include
+#include
+#include
+
+#include "fal.h"
+
+#if defined(RT_USING_DFS)
+#include
+#endif
+
+#define DBG_TAG "falcfg"
+#define DBG_LVL DBG_INFO
+#include
+
+#if defined(RT_USING_DFS) && defined(RT_USING_MTD_NOR)
+
+static const char g_fal_part_name[] = "config";
+static const char g_fal_mount_path[] = "/";
+static const char g_fal_fs_name[] = "lfs";
+
+static rt_bool_t fal_flashfs_partition_is_blank(void)
+{
+ uint8_t probe[256];
+ const struct fal_partition *part;
+ rt_size_t i;
+
+ part = fal_partition_find(g_fal_part_name);
+ if (!part)
+ {
+ return RT_FALSE;
+ }
+
+ if (fal_partition_read(part, 0, probe, sizeof(probe)) != sizeof(probe))
+ {
+ return RT_FALSE;
+ }
+
+ for (i = 0; i < sizeof(probe); ++i)
+ {
+ if (probe[i] != 0xFF)
+ {
+ return RT_FALSE;
+ }
+ }
+
+ return RT_TRUE;
+}
+
+static int fal_flashfs_mount(void)
+{
+ (void)mkdir(g_fal_mount_path, 0);
+
+ if (dfs_mount(g_fal_part_name, g_fal_mount_path, g_fal_fs_name, 0, 0) == 0)
+ {
+ LOG_I("mounted %s at %s as %s",
+ g_fal_part_name,
+ g_fal_mount_path,
+ g_fal_fs_name);
+ return RT_EOK;
+ }
+
+ return -RT_ERROR;
+}
+
+int fal_flashfs_mount_init(void)
+{
+ rt_device_t dev;
+
+ if (fal_init() <= 0)
+ {
+ LOG_E("fal init failed");
+ return -RT_ERROR;
+ }
+
+ dev = rt_device_find(g_fal_part_name);
+ if (!dev)
+ {
+ dev = fal_mtd_nor_device_create(g_fal_part_name);
+ if (!dev)
+ {
+ LOG_E("create MTD NOR device %s failed", g_fal_part_name);
+ return -RT_ERROR;
+ }
+ }
+
+ LOG_I("using partition %s as MTD NOR device for %s", g_fal_part_name, g_fal_fs_name);
+
+ if (fal_flashfs_mount() == RT_EOK)
+ {
+ return RT_EOK;
+ }
+
+ if (fal_flashfs_partition_is_blank())
+ {
+ LOG_W("partition %s is blank, formatting as %s", g_fal_part_name, g_fal_fs_name);
+ if ((dfs_mkfs(g_fal_fs_name, g_fal_part_name) == 0) &&
+ (fal_flashfs_mount() == RT_EOK))
+ {
+ return RT_EOK;
+ }
+ }
+
+ LOG_W("mount %s failed; you can try manually: mkfs -t %s %s",
+ g_fal_mount_path,
+ g_fal_fs_name,
+ g_fal_part_name);
+ return RT_EOK;
+}
+INIT_ENV_EXPORT(fal_flashfs_mount_init);
+
+#endif /* RT_USING_DFS && RT_USING_MTD_NOR */
diff --git a/libraries/HAL_Drivers/drivers/drv_flash/drv_flash_h7.c b/libraries/HAL_Drivers/drivers/drv_flash/drv_flash_h7.c
index d4fb21b..3767807 100644
--- a/libraries/HAL_Drivers/drivers/drv_flash/drv_flash_h7.c
+++ b/libraries/HAL_Drivers/drivers/drv_flash/drv_flash_h7.c
@@ -151,6 +151,7 @@ int stm32_flash_erase(rt_uint32_t addr, size_t size)
{
rt_err_t result = RT_EOK;
rt_uint32_t SECTORError = 0;
+ rt_bool_t dcache_enabled = RT_FALSE;
if ((addr + size - 1) > FLASH_END)
{
@@ -197,7 +198,11 @@ int stm32_flash_erase(rt_uint32_t addr, size_t size)
HAL_FLASH_Unlock();
EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
- SCB_DisableDCache();
+ dcache_enabled = ((SCB->CCR & SCB_CCR_DC_Msk) != 0U) ? RT_TRUE : RT_FALSE;
+ if (dcache_enabled)
+ {
+ SCB_DisableDCache();
+ }
if(size_bank1)
{
@@ -227,7 +232,10 @@ int stm32_flash_erase(rt_uint32_t addr, size_t size)
__exit:
- SCB_EnableDCache();
+ if (dcache_enabled)
+ {
+ SCB_EnableDCache();
+ }
HAL_FLASH_Lock();
if (result != RT_EOK)
@@ -245,6 +253,7 @@ static int fal_flash_write_128k(long offset, const rt_uint8_t *buf, size_t size)
static int fal_flash_erase_128k(long offset, size_t size);
const struct fal_flash_dev stm32_onchip_flash_128k = { "onchip_flash_128k", 0x08000000, (128 * 1024), (128 * 1024), {NULL, fal_flash_read_128k, fal_flash_write_128k, fal_flash_erase_128k} };
const struct fal_flash_dev stm32_onchip_flash_256k = { "onchip_flash_256k", 0x08000000, (256 * 1024), (128 * 1024), {NULL, fal_flash_read_128k, fal_flash_write_128k, fal_flash_erase_128k},256 };
+const struct fal_flash_dev stm32_onchip_flash_1024k = { "onchip_flash_1024k", 0x08000000, (1024 * 1024), (128 * 1024), {NULL, fal_flash_read_128k, fal_flash_write_128k, fal_flash_erase_128k},256 };
static int fal_flash_read_128k(long offset, rt_uint8_t *buf, size_t size)
{
diff --git a/libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Include/stm32h750xx.h b/libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Include/stm32h750xx.h
index 55bb192..ee03086 100644
--- a/libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Include/stm32h750xx.h
+++ b/libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Include/stm32h750xx.h
@@ -2145,7 +2145,7 @@ typedef struct
#define FLASH_BANK1_BASE (0x08000000UL) /*!< Base address of : (up to 128 KB) Flash Bank1 accessible over AXI */
#define FLASH_BANK2_BASE (0x08100000UL) /*!< For legacy only , Flash bank 2 not available on STM32H750xx value line */
-#define FLASH_END (0x0803FFFFUL) /*!< FLASH end address */
+#define FLASH_END (0x080FFFFFUL) /*!< FLASH end address */
/* Legacy define */
#define FLASH_BASE FLASH_BANK1_BASE
diff --git a/packages/littlefs-latest b/packages/littlefs-latest
new file mode 160000
index 0000000..194556b
--- /dev/null
+++ b/packages/littlefs-latest
@@ -0,0 +1 @@
+Subproject commit 194556ba55d43072acfcd50d3bb8dd2bc2beec32
diff --git a/packages/pkgs.json b/packages/pkgs.json
index f597dd0..4990fec 100644
--- a/packages/pkgs.json
+++ b/packages/pkgs.json
@@ -4,6 +4,11 @@
"path": "/packages/system/CMSIS/CMSIS-Core",
"ver": "latest"
},
+ {
+ "name": "LITTLEFS",
+ "path": "/packages/system/littlefs",
+ "ver": "latest"
+ },
{
"name": "STM32H7_HAL_DRIVER",
"path": "/packages/peripherals/hal-sdk/stm32/stm32h7_hal_driver",
diff --git a/rtconfig.h b/rtconfig.h
index 3b1ebd8..52fe34d 100644
--- a/rtconfig.h
+++ b/rtconfig.h
@@ -135,6 +135,14 @@
/* DFS: device virtual file system */
+#define RT_USING_DFS
+#define DFS_USING_POSIX
+#define DFS_USING_WORKDIR
+#define DFS_FD_MAX 16
+#define RT_USING_DFS_V1
+#define DFS_FILESYSTEMS_MAX 4
+#define DFS_FILESYSTEM_TYPES_MAX 4
+#define RT_USING_DFS_DEVFS
/* end of DFS: device virtual file system */
#define RT_USING_FAL
#define FAL_USING_DEBUG
@@ -150,6 +158,7 @@
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_ADC
#define RT_USING_PWM
+#define RT_USING_MTD_NOR
#define RT_USING_SPI
#define RT_USING_QSPI
#define RT_USING_PIN
@@ -159,6 +168,7 @@
#define RT_CHERRYUSB_DEVICE_SPEED_FS
#define RT_CHERRYUSB_DEVICE_DWC2_ST
#define RT_CHERRYUSB_DEVICE_CDC_ACM
+#define RT_CHERRYUSB_DEVICE_MSC
#define CONFIG_USBDEV_REQUEST_BUFFER_LEN 1024
#define CONFIG_USBDEV_MSC_MAX_BUFSIZE 1024
#define RT_CHERRYUSB_DEVICE_TEMPLATE_NONE
@@ -294,6 +304,17 @@
/* Micrium: Micrium software products porting for RT-Thread */
/* end of Micrium: Micrium software products porting for RT-Thread */
+#define PKG_USING_LITTLEFS
+#define PKG_USING_LITTLEFS_LATEST_VERSION
+#define LFS_READ_SIZE 256
+#define LFS_PROG_SIZE 256
+#define LFS_BLOCK_SIZE 4096
+#define LFS_NO_DEBUG
+#define LFS_CACHE_SIZE 256
+#define LFS_BLOCK_CYCLES -1
+#define LFS_THREADSAFE
+#define LFS_LOOKAHEAD_MAX 128
+#define RT_DEF_LFS_DRIVERS 1
/* end of system packages */
/* peripheral libraries and drivers */