LittleFS возвращает LFS_ERR_CORRUPT и LFS_ERR_NOSPC, когда я пытаюсь его смонтировать - PullRequest
0 голосов
/ 30 сентября 2019

Я портирую LittleFS в проект, над которым я работаю, и когда я пытаюсь его смонтировать, он возвращает -84 (повреждено). Сразу после этого я форматирую файловую систему и пытаюсь перемонтировать ее, а затем она возвращает -28 (на устройстве не осталось места).

Вот код, который я пытаюсь реализовать:

/* variables used by the filesystem */

const U8 lfs_read_buf[256];
const U8 lfs_prog_buf[256];
const U8 lfs_lookahead_buf[16];

lfs_t lfs;

/* configuration of the filesystem is provided by this struct */

const struct lfs_config cfg = {
  // block device operations
  .read  = FLASHEx_block_read,
  .prog  = FLASHEx_block_write,
  .erase = FLASHEx_block_erase,
  .sync  = FLASHEx_block_sync,

  // block device configuration
  .read_size       = 256,
  .prog_size       = 256,
  .block_size      = 4096,
  .block_count     = 3072, // The block count is actually 4096, but I lowered it to test. (Failed.)
  .cache_size      = 256,
  .lookahead_size  = 256,
  .block_cycles    = 200,

  .read_buffer      = (void*)lfs_read_buf,
  .prog_buffer      = (void*)lfs_prog_buf,
  .lookahead_buffer = (void*)lfs_lookahead_buf,

};

 // mount the filesystem
  int err = lfs_mount(&lfs, &cfg); // Returns LFS_ERR_CORRUPT (-84, "Corrupted")

  // reformat to try to re-mount the filesystem
  if (err) {
    err = lfs_format(&lfs, &cfg); // Returns -28 (no space left on device).
    err = lfs_mount(&lfs, &cfg);  // Returns -28 (no space left on device).
  }

Используемый мной модуль внешней флэш-памяти Winbond W25Q128JV .

Моя реализация основана на этом веб-посте и LittleFSпример документации.

Может ли кто-нибудь пролить свет на то, чтобы заставить его работать?

Спасибо.

...