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())