SPI NOR 配置
5 Dec 2024
Read time: 6 minute(s)
SPI NOR 驱动配置
-
Baremetal 配置
在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择:
Board options ---> [*] Using Qspi0 [ ] Using Qspi1 [ ] Using Qspi2 [ ] Using Qspi3 Qspi0 Parameter ---> (100000000) Max frequency(Hz) [*] QSPI0 Devices: SPINOR ---> (100000000) SPINOR bus frequency(Hz) Drivers options ---> AIC Bare Driver ---> [*] Enable AIC MTD Bare Driver Peripheral ---> -*- SPINOR Driver SFUD: Serial Flash Universal Driver
注:为了方便配置,使能 AIC_QSPI0_DEVICE_SPINOR 后,会自动选上 AIC_SPINOR_DRV、LPKG_USING_SFUD 和 AIC_MTD_BARE_DRV。
-
RTOS 配置
在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择:
Board options ---> [*] Using Qspi0 [ ] Using Qspi1 [ ] Using Qspi2 [ ] Using Qspi3 Qspi0 Parameter ---> (100000000) Max frequency(Hz) [*] QSPI0 Devices: SPINOR ---> (100000000) SPINOR bus frequency(Hz) Drivers options ---> Peripheral ---> -*- SPINOR Driver SFUD: Serial Flash Universal Driver Rt-Thread options ---> RT-Thread Components ---> Device Drivers ---> -*- Using MTD Nor Flash device drivers -*- Using SPI Bus/Device device drivers -*- Enable QSPI mode -*- Using SFUD(Serial Flash Universal Driver) [*] Using auto probe flash JEDEC SFDP parameter [*] Using defined supported flash chip information table [*] Using QSPI mode support (50000000) Default spi maximum speed(HZ)
注:为了方便配置,使能 AIC_QSPI0_DEVICE_SPINOR 后,会自动选上 AIC_SPINOR_DRV、RT_USING_SFUD、LPKG_USING_SFUD 和 RT_USING_MTD_NOR。
文件系统配置
-
Baremetal FatFS 配置
Local packages options ---> Third-party packages options ---> [*] DFS: device virtual file system for baremetal mode ---> [*] Using posix-like functions, open/read/write/close (8) The maximal number of mounted file system (4) The maximal number of file system type (16) The maximal number of opened files [ ] Using mount table for file system [*] Enable elm-chan fatfs elm-chan's FatFs, Generic FAT Filesystem Module ---> [*] Enable ReadOnly file system on flash [ ] Enable RAM file system
-
RT-Thread FatFS 配置
Rt-Thread options ---> RT-Thread Components ---> [*] DFS: device virtual file system ---> [*] Using posix-like functions, open/read/write/close [*] Using working directory (4) The maximal number of mounted file system (4) The maximal number of file system type (16) The maximal number of opened files [*] Using mount table for file system [*] Enable elm-chan fatfs elm-chan's FatFs, Generic FAT Filesystem Module ---> (4096) Maximum sector size to be handled. [ ] Using devfs for device objects [*] Enable ReadOnly file system on flash [ ] Enable RAM file system
当 Using mount table for file system 选项打开时,系统启动后会根据一个 Table 配置来自动挂载文件系统。该 Table 定义在 board.c 中:#ifdef RT_USING_DFS_MNTTABLE #include <dfs_fs.h> const struct dfs_mount_tbl mount_table[] = { #if (defined(AIC_USING_FS_IMAGE_TYPE_FATFS_FOR_0) || defined(AIC_USING_FS_IMAGE_TYPE_FATFS_FOR_1)) {"blk_rodata", "/rodata", "elm", 0, 0, 0}, #endif {0} }; #endif
-
FatFS 支持写功能
Baremetal 和 RT-Thread FatFS 都支持写功能,执行 make m 命令进入功能配置页,并进行如下配置:
Application options ---> [*] FATFS enable write func in spinor
因为 SPINOR 块大小是 4K,sector 是 512,代码兼容后,写速度较慢,不推荐使用 FatFS 写功能。
-
RT-Thread Littlefs 配置
Local packages options ---> Third-party packages options ---> [*] Littlefs: A high-integrity embedded file system ---> (256) disk read size (256) disk write size (4096) disk block size (256) lfs r/w cache size (128) lfs lookahead size
注意,当 Using mount table for filesystem 选项打开时,系统启动后会根据一个 Table 配置来自动挂载文件系统。该 Table 定义在 board.c 中:#ifdef RT_USING_DFS_MNTTABLE #include <dfs_fs.h> const struct dfs_mount_tbl mount_table[] = { #ifdef LPKG_USING_LITTLEFS {"data", "/data", "lfs", 0, 0, 0}, #endif {0} }; #endif
文件系统镜像制作和烧录
-
FatFS 镜像
Application options ---> [*] Using File System Image 0 ---> Select File System Type (FATFS) ---> (packages/artinchip/lvgl-ui/aic_demo/meter_demo/lvgl_src/) Data Directory (rodata.fatfs) Image Name [*] auto calcuate image size (8) size of cluster in fatfs image
-
Littlefs 镜像
Application options ---> [*] Using File System Image 1 ---> Select File System Type (LittleFS) ---> (packages/artinchip/lvgl-ui/aic_demo/meter_demo/lvgl_src/) Data Directory (data.lfs) Image Name (4096) Erase block size (256) Page size