zephyr: Enable littlefs.

Enables the littlefs (v1 and v2) filesystems in the zephyr port.

Example usage with the internal flash on the reel_board or the
rv32m1_vega_ri5cy board:

import os
from zephyr import FlashArea
bdev = FlashArea(FlashArea.STORAGE, 4096)
os.VfsLfs2.mkfs(bdev)
os.mount(bdev, '/flash')
with open('/flash/hello.txt','w') as f:
    f.write('Hello world')
print(open('/flash/hello.txt').read())

Things get a little trickier with the frdm_k64f due to the micropython
application spilling into the default flash storage partition defined
for this board. The zephyr build system doesn't enforce the flash
partitioning when mcuboot is not enabled (which it is not for
micropython). For now we can demonstrate that the littlefs filesystem
works on frdm_k64f by constructing the FlashArea block device on the
mcuboot scratch partition instead of the storage partition. Do this by
replacing the FlashArea.STORAGE constant above with the value 4.
This commit is contained in:
Maureen Helm 2019-12-30 17:46:17 -06:00 committed by Damien George
parent 86a66960f9
commit 7a5752a748
2 changed files with 12 additions and 0 deletions

View File

@ -18,6 +18,8 @@ MICROPY_HEAP_SIZE = 16384
FROZEN_DIR = scripts
MICROPY_VFS_FAT ?= 1
MICROPY_VFS_LFS1 ?= 0
MICROPY_VFS_LFS2 ?= 1
# Default target
all:

View File

@ -32,6 +32,10 @@
#include "extmod/vfs_fat.h"
#endif
#if MICROPY_VFS_LFS1 || MICROPY_VFS_LFS2
#include "extmod/vfs_lfs.h"
#endif
#if MICROPY_PY_UOS
STATIC const mp_rom_map_elem_t uos_module_globals_table[] = {
@ -54,6 +58,12 @@ STATIC const mp_rom_map_elem_t uos_module_globals_table[] = {
#if MICROPY_VFS_FAT
{ MP_ROM_QSTR(MP_QSTR_VfsFat), MP_ROM_PTR(&mp_fat_vfs_type) },
#endif
#if MICROPY_VFS_LFS1
{ MP_ROM_QSTR(MP_QSTR_VfsLfs1), MP_ROM_PTR(&mp_type_vfs_lfs1) },
#endif
#if MICROPY_VFS_LFS2
{ MP_ROM_QSTR(MP_QSTR_VfsLfs2), MP_ROM_PTR(&mp_type_vfs_lfs2) },
#endif
};
STATIC MP_DEFINE_CONST_DICT(uos_module_globals, uos_module_globals_table);