Flash 分区配置文件路径:
- /boards/cv180xb_qfn/configs/config.yaml
- /boards/cv181xc_qfn/configs/config.yaml
Board: CV1810C-WEVB-0006A
Solution: smart_doorbell
Project: turnkey_qfn
本文以/boards/cv181xc_qfn/configs/config.yaml
中prim
分区的配置进行说明
- {
name: prim,
address: 0x02E000,
size: 0x4B0000,
index: 0,
filename: yoc.bin,
load_addr: 0x80040000,
update: FULL,
car: xz,
} # 4.5 MB
Name | Description |
---|---|
name | 分区名称 |
address | 该分区相对于整块 Flash 偏移 |
size | 分区大小 |
index | 分区类型,参照 storages 序列 |
filename | 写入该分区的文件名 |
load_addr | 分区内存加载起始地址 |
update | 分区升级类型(FULL/DIFF) |
car | 文件压缩方式(NULL/XZ) |
LittleFS 说明
LittleFS 是一个为微控制器设计的开源嵌入式文件系统
文件系统打包
- 升级编译环境的 YoC 至最新版本
- 执行
product lfs
命令可查看相关参数说明 - 创建待打包文件夹,并放入打包文件
- 执行
product lfs ./lfs.bin -c my_lfs -b 4096 -s 0x400000
- 该命令将
my_lfs
文件夹打包成lfs.bin
镜像,文件系统大小为 4MB,块大小为 4KB
- 该命令将
分区配置修改
在config.yaml
中新增lfs
分区配置,大小为 4MB,烧录文件lfs.bin
- {
name: lfs,
address: 0x4DE000,
size: 0x400000,
index: 0,
filename: lfs.bin,
} # 4 MB
Note
配置Flash分区地址和大小时,请确保未与其他分区空间重叠
添加VFS挂载
修改对应solution下common_yocsystem.c
文件配置,增加VFS挂载,将lfs
分区挂载到/mnt/data
下
#if CONFIG_SUPPORT_NORFLASH || CONFIG_PARTITION_SUPPORT_SPINANDFLASH
int fatfs_en = 0;
ret = partition_init();
if(ret >= 0)
{
fatfs_en = app_sd_detect_check();
LOGE("app", fatfs_en ? "fatfs enable.\n" : "fatfs disable.\n");
// mount lfs flash to /mnt/data
ret = vfs_lfs_register_with_path("lfs", "/mnt/data");
if (ret != 0) {
LOGE("app", "lfs register failed(%d)", ret);
} else {
LOGE("app", "lfs register succeed.");
}
}
else
printf("partition_init failed! ret = %d\n" , ret);
#endif
挂载成功后可对/mnt/data
中文件内容进行读写
cat功能使用需在yaml中配置
CONFIG_EXT4VFS_SUPPORT: 1
(cli-uart)# ls /mnt/data
.
..
test.txt
(cli-uart)# cat /mnt/data/test.txt
Hello SOPHGO!
文件系统烧录
将lfs.bin
放置于固件升级目录images
下,采用TF卡或USB方式进行烧录
在开发过程中,若不存在lfs.bin
升级的需求,可不重复烧写该文件,以避免分区被覆写并降低烧录耗时