MISC分区读写参考
1. 概述¶
FreeRTOS SDk 提供了一个misc.fwfs分区,用于存放运行时需要的文件。比如屏参文件、iq bin文件等。本文将会介绍如何在rtos代码中实现对misc.fwfs分区的读写。
2. MISC分区介绍¶
misc分区的文件系统类型是firmware fs,系统起来后会自动mount到'/mnt/MISC'下面。我们封装了一组API用于读写misc.fwfs分区,头文件是cam_fs_wrapper.h,主要api如下:
-
CamFsRet_e CamFsMount(CamFsFmt_e fmt, const char *szPartName, const char *szMntPath); // mount a file system
功能:
mount一个文件系统
参数介绍:
fmt: 文件系统格式,misc分区请用宏MISC_FILESYSTEM // #define MISC_FILESYSTEM CAM_FS_FMT_FIRMWAREFS
szPartName: 分区名字,如“MISC”
szMntPath: mount路径,如”/mnt/MISC”
-
CamFsRet_e CamFsUnmount(const char *szMntPath); // unmount file system
功能:
unmount 一个文件系统
参数介绍:
szMntPath: mount路径,如“/mnt/MISC”
-
CamFsRet_e CamFsOpen(CamFsFd *ptFd, const char *szPath, u32 nFlag, u32 nMode);
功能:
打开一个文件
参数介绍:
ptFD: File Descriptor
szPath: 文件路径
nFlag: 文件打开模式,可选的有O_CREAT/O_RDWR/O_RDONLY/O_WRONLY等,参考cam_fs_wrapper.h
nMode: 文件访问模式,类似Linux chmod功能
-
CamFsRet_e CamFsClose(CamFsFd tFd);
功能:
关闭一个文件
参数介绍:
tFD: File Descriptor
-
S32 CamFsRead(CamFsFd tFd, void *pBuf, u32 nCount);
功能:
读文件
参数介绍:
tFD: File descriptor
pBuf: 用于存放读数据的buf首地址
nCount: 要去读的字节数
-
S32 CamFsWrite(CamFsFd rFd, const void *pBuf, u32 nCount);
功能:
写文件
参数介绍:
tFD: File descriptor
pBuf: 存放即将写入数据的首地址
nCount: 写入字节数
-
S32 CamFsSeek(CamFsFd tFd, u32 nOffset, u32 nWhence);
功能:
设定文件的读写偏移量
参数:
tFD: File descriptor
nOffset: 以nWhence为开始的偏移量
nWhence: 做为nOffset的基础偏移量,常用的有SEEK_SET/SEEK_CUR/SEEK_END
3. demo¶
void rw_test() { char buf[64] = { 0 }; u32 file_size = 0; CamFsFd tFD; const char *str = “Hello World!”; u8 i = 0; const char *path = “/mnt/MISC/test.txt”; memset(buf, 0, sizeof(buf)); //open file CamFsOpen(&tFD, path, O_RDWR|O_CREAT, 0777); CamFsWrite(tFD, str, strlen(str)); file_size = CamFsSeek(tFD, 0 , SEEK_END); CamFsRead(tFD, buf, file_size); CamFsClose(tFD); }