|
问题描述:通过mkspiffs制作文件系统SPIFFS的镜像文件烧录后,程序open错误返回错误码:SPIFFS_ERR_NOT_FOUND
问题排查:
1、文件操作是通过lvgl的文件接口,open、read、write、close都测试正常。
2、镜像文件也确认已经烧录到外部flash,读取后也数据也正常
3、程序内SPIFFS的配置和mkspiffs的配置也确认一致。
4、外部spiflash大小16M,文件系统只用了512K
制作SPIFFS镜像配置如下
- $ mkspiffs -c spiffs -b 4096 -p 256 -s 0x80000 mkspiffs.bin
- /alibaba_puhuiti_m_12.bin
- /alibaba_puhuiti_m_14.bin
- /alibaba_puhuiti_m_16.bin
- /alibaba_puhuiti_m_24.bin
- /alibaba_puhuiti_m_32.bin
- /iphone12_1.bin
- $ mkspiffs --version
- mkspiffs ver. 0.2.3-7-gf248296
- Build configuration name: generic
- SPIFFS ver. 0.3.7-34-g22694c2
- Extra build flags: (none)
- SPIFFS configuration:
- SPIFFS_OBJ_NAME_LEN: 32
- SPIFFS_OBJ_META_LEN: 0
- SPIFFS_USE_MAGIC: 0
- SPIFFS_ALIGNED_OBJECT_INDEX_TABLES: 0
复制代码
文件系统的挂载如下
- spiffs_config cfg;
- int res;
-
- cfg.phys_size = 1*512*1024; // use all spi flash
- cfg.phys_addr = 0x2000; // start spiffs at start of spi flash
- cfg.phys_erase_block = 4*1024; // according to datasheet
- cfg.log_block_size = 64*1024; // let us not complicate things
- cfg.log_page_size = LOG_PAGE_SIZE; // as we said
-
- cfg.hal_read_f = my_spiffs_read;
- cfg.hal_write_f = my_spiffs_write;
- cfg.hal_erase_f = my_spiffs_erase;
-
-
- res = SPIFFS_mount(&fs,
- &cfg,
- spiffs_work_buf,
- spiffs_fds,
- sizeof(spiffs_fds),
- spiffs_cache_buf,
- sizeof(spiffs_cache_buf),
- 0);
复制代码
测试程序如下
- bool lvgl_fs_test(void)
- {
- lv_fs_file_t f;
- lv_fs_res_t res;
- int i;
- uint32_t read_len;
- uint8_t read_buf[256] = {0};
- PRINT_INFO("lvgl fs test\n");
- res = lv_fs_open(&f, "F:/iphone12_1.bin", LV_FS_MODE_RD);
- if(res != LV_FS_RES_OK)
- {
- PRINT_INFO("lv_fs_open:%d\n",res);
- return false;
- }
- // lv_fs_seek(&f, 0L);
- res = lv_fs_read(&f, read_buf, sizeof(read_buf), &read_len);
- if(read_len != sizeof(read_buf))
- {
- PRINT_INFO("lv fs read error:%d\n",read_len);
- lv_fs_close(&f);
- return false;
- }
- lv_fs_close(&f);
- for(i=0; i<sizeof(read_buf)/16;i++)
- {
- msg_pro_print(read_buf+i*16,16);
- nrf_delay_ms(20);
- }
- }
复制代码
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|