feat: add lfs file system use on chip flash

This commit is contained in:
lgv 2026-04-27 17:35:54 +08:00
parent 13214e33f8
commit ab4c5fdaa0
11 changed files with 293 additions and 64 deletions

57
.config
View File

@ -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

1
.idea/vcs.xml generated
View File

@ -3,6 +3,7 @@
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/packages/CMSIS-Core-latest" vcs="Git" />
<mapping directory="$PROJECT_DIR$/packages/littlefs-latest" vcs="Git" />
<mapping directory="$PROJECT_DIR$/packages/stm32h7_cmsis_driver-latest" vcs="Git" />
<mapping directory="$PROJECT_DIR$/packages/stm32h7_hal_driver-latest" vcs="Git" />
</component>

View File

@ -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

View File

@ -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']

View File

@ -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 */

View File

@ -0,0 +1,114 @@
#include <rtthread.h>
#include <rtdevice.h>
#include <stdbool.h>
#include <stdint.h>
#include <sys/stat.h>
#include "fal.h"
#if defined(RT_USING_DFS)
#include <dfs_fs.h>
#endif
#define DBG_TAG "falcfg"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
#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 */

View File

@ -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)
{

View File

@ -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

@ -0,0 +1 @@
Subproject commit 194556ba55d43072acfcd50d3bb8dd2bc2beec32

View File

@ -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",

View File

@ -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 */