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