I have some questions about JL software architecture.
Storage Architecture
Flash Access: On the hardware side, I noticed that Jieli uses both internal flash and external flash, but most datasheets do not specify the access mechanism for the internal flash. Additionally, the external flash is accessed via SFC, but the datasheet does not document this either.
File System
Jieli employs multiple file systems: vfs, nor_fs, sdfile, nor_sdfile, fat, and fat_sdfile, but some issues arise:
1. How are these other file systems associated with vfs?
2. How is vfs mapped to fs.h?
Device Management
Jieli has a device management table.
1. From the device_table, it appears that device registration can use functions like dev_open. However, the documentation mentions that the virtual file system virfat_flash can associate with res_nor, and once associated, APIs like fopen can be used directly. What is the principle behind this?
2. These codes can be seen in board_xxxx_demo.c.
#define FATFS_IN_FLASH_NAME "FATFSI" //isd_config_rule 文件配置
#define SDFILE_INSIDE_FAT_ROOT_PATH SDFILE_MOUNT_PATH"/app/"FATFS_IN_FLASH_NAME //分区
NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_inside_dev_data)
.path = SDFILE_INSIDE_FAT_ROOT_PATH,
.start_addr = TCFG_VIRFAT_INSERT_FLASH_BASE,
.size = TCFG_VIRFAT_INSERT_FLASH_SIZE,
NORFLASH_SFC_DEV_PLATFORM_DATA_END()
According to the JL documentation, these are partition configurations. So, does the device_table register devices or partitions?
JL device cfd
