本帖最后由 xcc521 于 2018-8-3 13:45 编辑
准备搞一个SD可更新固件的程序
首先,直接上FATFS实验,最快速度实现文件的操作
然后学习一下基本的文件操作,我看过基本上都是通过外挂SD的固定位置(根目录或者固定文件夹以及固定文件名)进行打开并更新,这里使用递归实现文件夹扫描自动获取bin文件,所以就是如果卡里面包含多个bin文件时只更新第一个发现的文件
/**
* @brief scan_files 递归扫描FatFs内的文件
* @param path:初始扫描路径
* @retval result:文件系统的返回值
*/
FRESULT scan_files (char* path)
{
FRESULT res; //部分在递归过程被修改的变量,不用全局变量
FILINFO fno;
DIR dir;
int i;
char *fn; // 文件名
//打开目录
res = f_opendir(&dir, path);
if (res == FR_OK)
{
i = strlen(path);
for (;;)
{
//读取目录下的内容,再读会自动读下一个文件
res = f_readdir(&dir, &fno);
//为空时表示所有项目读取完毕,跳出
if (res != FR_OK || fno.fname[0] == 0) break;
fn = fno.fname;
//点表示当前目录,跳过
if (*fn == '.') continue;
//目录,递归读取
if (fno.fattrib & AM_DIR)
{
//合成完整目录名
sprintf(&path
, "/%s", fn);
//递归遍历
res = scan_files(path);
path = 0;
//打开失败,跳出循环
if (res != FR_OK)
break;
}
else
{
printf("
%s/%s", path, fn); //输出文件名
if(strstr(fn,".bin")) //找到更新固件的文件
{
update_en = 1;
printf("
找到可用固件
");
break;
}
}//else
} //for
}
return res;
}
看一下实现效果
//////////////////////////////////////////////////////
还在写,不急...
刚刚更新了一下,没问题了
欢迎指正
一周热门 更多>