搜索
bottom↓
回复: 1

问题:mkspiffs制作的镜像文件程序open错误:SPIFFS_ERR_NOT_FOUND

[复制链接]

出0入0汤圆

发表于 2022-1-27 09:32:15 | 显示全部楼层 |阅读模式
问题描述:通过mkspiffs制作文件系统SPIFFS的镜像文件烧录后,程序open错误返回错误码:SPIFFS_ERR_NOT_FOUND

问题排查:
1、文件操作是通过lvgl的文件接口,open、read、write、close都测试正常。
2、镜像文件也确认已经烧录到外部flash,读取后也数据也正常
3、程序内SPIFFS的配置和mkspiffs的配置也确认一致。
4、外部spiflash大小16M,文件系统只用了512K

制作SPIFFS镜像配置如下
  1. $ mkspiffs -c spiffs -b 4096 -p 256 -s 0x80000 mkspiffs.bin
  2. /alibaba_puhuiti_m_12.bin
  3. /alibaba_puhuiti_m_14.bin
  4. /alibaba_puhuiti_m_16.bin
  5. /alibaba_puhuiti_m_24.bin
  6. /alibaba_puhuiti_m_32.bin
  7. /iphone12_1.bin

  8. $ mkspiffs --version
  9. mkspiffs ver. 0.2.3-7-gf248296
  10. Build configuration name: generic
  11. SPIFFS ver. 0.3.7-34-g22694c2
  12. Extra build flags: (none)
  13. SPIFFS configuration:
  14.   SPIFFS_OBJ_NAME_LEN: 32
  15.   SPIFFS_OBJ_META_LEN: 0
  16.   SPIFFS_USE_MAGIC: 0
  17.   SPIFFS_ALIGNED_OBJECT_INDEX_TABLES: 0

复制代码


文件系统的挂载如下
  1. spiffs_config cfg;
  2.         int res;
  3.        
  4.     cfg.phys_size = 1*512*1024; // use all spi flash
  5.     cfg.phys_addr = 0x2000; // start spiffs at start of spi flash
  6.     cfg.phys_erase_block = 4*1024; // according to datasheet
  7.     cfg.log_block_size = 64*1024; // let us not complicate things
  8.     cfg.log_page_size = LOG_PAGE_SIZE; // as we said
  9.    
  10.     cfg.hal_read_f = my_spiffs_read;
  11.     cfg.hal_write_f = my_spiffs_write;
  12.     cfg.hal_erase_f = my_spiffs_erase;
  13.    
  14.                                           
  15.     res = SPIFFS_mount(&fs,
  16.       &cfg,
  17.       spiffs_work_buf,
  18.       spiffs_fds,
  19.       sizeof(spiffs_fds),
  20.       spiffs_cache_buf,
  21.       sizeof(spiffs_cache_buf),
  22.       0);
复制代码


测试程序如下
  1. bool lvgl_fs_test(void)
  2. {
  3.         lv_fs_file_t f;
  4.         lv_fs_res_t res;
  5.         int i;
  6.         uint32_t read_len;
  7.         uint8_t read_buf[256] = {0};
  8.         PRINT_INFO("lvgl fs test\n");

  9.         res = lv_fs_open(&f, "F:/iphone12_1.bin", LV_FS_MODE_RD);
  10.         if(res != LV_FS_RES_OK)
  11.         {
  12.                 PRINT_INFO("lv_fs_open:%d\n",res);       
  13.                 return false;
  14.         }
  15. //        lv_fs_seek(&f, 0L);
  16.         res = lv_fs_read(&f, read_buf, sizeof(read_buf), &read_len);
  17.         if(read_len != sizeof(read_buf))
  18.         {
  19.                 PRINT_INFO("lv fs read error:%d\n",read_len);
  20.                 lv_fs_close(&f);
  21.                 return false;
  22.         }

  23.         lv_fs_close(&f);
  24.         for(i=0; i<sizeof(read_buf)/16;i++)
  25.         {
  26.                 msg_pro_print(read_buf+i*16,16);
  27.                 nrf_delay_ms(20);
  28.         }
  29. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2022-2-10 12:48:43 | 显示全部楼层
已解决,是因为编译器不同内存对齐的方式不同导致的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 09:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表