SD卡固件更新程序

2019-07-21 03:44发布

本帖最后由 xcc521 于 2018-8-3 13:45 编辑

准备搞一个SD可更新固件的程序
首先,直接上FATFS实验,最快速度实现文件的操作
捕获1.PNG

然后学习一下基本的文件操作,我看过基本上都是通过外挂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;
}


看一下实现效果
捕获2.PNG
//////////////////////////////////////////////////////
捕获3.PNG



还在写,不急...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。