我的现状是程序里dfs_mkfs(“elm”, SPI_FLASH_NAME);,然后 dfs_mount(SPI_FLASH_NAME, “/“, “elm”, 0, 0);就可以成功。
但是,在正常使用中是希望只格式化一次就可以了,后续板子断电再上电时,挂载就可以了,不能每次都格式化,格式化就把以前的数据清除了。
怎么解决我这个问题?请帮忙
先 dfs_mount(SPI_FLASH_NAME, "/", "elm", 0, 0);
尝试挂载文件系统,如果挂载成功则退出,如果挂载失败则使用 dfs_mkfs("elm", SPI_FLASH_NAME);
来进行格式化,然后再调用 dfs_mkfs("elm", SPI_FLASH_NAME);
进行挂载即可。
按照这个逻辑,第一次启用因为没有格式化,所以挂载失败,进行格式化,格式化完成后再挂载,因为已经格式化过,所以挂载成功。 以后设备再上电,由于之前挂载过,所以直接可以挂载成功。也不用进行格式化,数据也不会丢失。
参考代码:
因为对flash格式化只需要一次,所以建议进入msh后手动输入命令格式化操作,不太建议在代码中写入格式化的操作。此后如果文件系统挂载出错,需要逐步排查问题。