- eepromfs_result_t deepromfs_init(eeprom_handle_t *handle,la_t startAddr,efs_size_t size)
- {
- eepromfs_result_t eepromfs_result1;
- eepromfs_result_t eepromfs_result2;
- //初始化
- deepromfs.handle=handle;
- deepromfs.startAddr1=startAddr;
- deepromfs.size1=size/2;
- deepromfs.startAddr2=deepromfs.startAddr1+deepromfs.size1;
- deepromfs.size2=size/2;
- eepromfs_result1=eepromfs_init(deepromfs.handle,deepromfs.startAddr1);
- eepromfs_result2=eepromfs_init(deepromfs.handle,deepromfs.startAddr2);
- if((eepromfs_result1==EFR_OK)&&(eepromfs_result2==EFR_OK))
- {
- return EFR_OK;
- }
- else if((eepromfs_result1==EFR_OK)&&(eepromfs_result2!=EFR_OK))
- {
- //拷贝分区1数据到分区2
- eepromfs_copy(deepromfs.handle,deepromfs.startAddr2,deepromfs.startAddr1,deepromfs.size1);
- return EFR_OK;
- }
- else if((eepromfs_result1!=EFR_OK)&&(eepromfs_result2==EFR_OK))
- {
- //拷贝分区2数据到分区1
- eepromfs_copy(deepromfs.handle,deepromfs.startAddr1,deepromfs.startAddr2,deepromfs.size2);
- return EFR_OK;
- }
- else if((eepromfs_result1==EFR_CRC_INFO_ERR)&&(eepromfs_result2==EFR_CRC_INFO_ERR))
- {
- return EFR_CRC_INFO_ERR;
- }
- return EFR_ERR;
- }
- eepromfs_result_t deepromfs_format_quick(void)
- {
- eepromfs_result_t eepromfs_result;
-
- eepromfs_result=eepromfs_init(deepromfs.handle,deepromfs.startAddr1);
- if(eepromfs_result!=EFR_OK)
- {
- return eepromfs_result;
- }
-
- if(eepromfs_format_quick()!=EFR_OK)
- {
- return eepromfs_result;
- }
- eepromfs_result=eepromfs_init(deepromfs.handle,deepromfs.startAddr2);
- if(eepromfs_result!=EFR_OK)
- {
- return eepromfs_result;
- }
-
- eepromfs_result=eepromfs_format_quick();
- if(eepromfs_result!=EFR_OK)
- {
- return eepromfs_result;
- }
-
- return EFR_OK;
- }
提供各类格式化、读、写、删除的函数接口,方便用户直接调用:
- eepromfs_result_t eepromfs_init(eeprom_handle_t *handle,la_t startAddr);
- eepromfs_result_t eepromfs_format_quick(void);//格式化不改变大小
- eepromfs_result_t eepromfs_format_full(la_t startAddr,efs_size_t size);//格式化并重新指定大小
- eepromfs_result_t eepromfs_new(file_handle_t *fh,const char* filename,efs_size_t fileSize);
- eepromfs_result_t eepromfs_open(file_handle_t *fh,const char* filename);
- eepromfs_result_t eepromfs_close(file_handle_t* fh);
- eepromfs_result_t eepromfs_write(file_handle_t* fh, const fdata_t* data, efs_size_t size);
- eepromfs_result_t eepromfs_offsetWrite(file_handle_t* fh,la_t offSet,const fdata_t* data, efs_size_t size);
- eepromfs_result_t eepromfs_read(file_handle_t* fh, fdata_t* buf,efs_size_t bufLen,efs_size_t *pFilesize);
- eepromfs_result_t eepromfs_delete(const char* filename);
- eepromfs_result_t eepromfs_copy(eeprom_handle_t *handle,la_t destAddr,la_t srcAddr,efs_size_t size);
总体而言,这个库相对比较轻量级,普通ARM 单片机运行完全没有压力,具体源码,可以参看:https://gitee.com/wtau_zaozao/eepromfs