vfs

 1import uos
 2import vfs
 3
 4
 5class RAMBlockDev:
 6    def __init__(self, block_size=512, blocks=64):
 7        self.block_size = block_size
 8        self.blocks = blocks
 9        self.data = bytearray(block_size * blocks)
10
11    def readblocks(self, block_num, buf, offset=0):
12        addr = block_num * self.block_size + offset
13        buf[:] = self.data[addr : addr + len(buf)]
14
15    def writeblocks(self, block_num, buf, offset=0):
16        addr = block_num * self.block_size + offset
17        self.data[addr : addr + len(buf)] = buf
18
19    def ioctl(self, op, arg):
20        if op == 4:  # BP_IOCTL_SEC_COUNT
21            return self.blocks
22        if op == 5:  # BP_IOCTL_SEC_SIZE
23            return self.block_size
24        return 0
25
26
27bdev = RAMBlockDev()
28
29vfs.VfsLfs2.mkfs(bdev)
30ram_vfs = vfs.VfsLfs2(bdev)
31uos.mount(ram_vfs, "/ram")
32
33with open("/ram/hello.txt", "w") as f:
34    f.write("hello from RAM disk!")
35
36with open("/ram/hello.txt", "r") as f:
37    print("Read from RAM:", f.read())