006fatfs.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. -- local sys = require "sys"
  2. log.info("sys", "from win32")
  3. -- sys.taskInit(function ()
  4. -- sys.wait(1000)
  5. if fatfs ~= nil then
  6. fatfs.debug(1)
  7. fatfs.mount("ram", 64*1024)
  8. fatfs.mkfs("ram")
  9. -- sys.wait(100)
  10. local data, err = fatfs.getfree("ram")
  11. if data then
  12. log.info("fatfs", "ramdisk", json.encode(data))
  13. else
  14. log.info("fatfs", "ramdisk", "err", err)
  15. end
  16. -- fatfs 在vfs中的前缀总是/sdcard
  17. local str = string.char(0, 1, 2, 0, 4, 6, 7, 0xff):rep(1024)
  18. local f = io.open("/sd/abc.txt", "wb")
  19. assert(f ~= nil, "fatfs io error")
  20. if f then
  21. f:write(str)
  22. f:write(string.rep("zzz", 1024))
  23. f:close()
  24. end
  25. log.info("fatfs", "file size", io.fileSize("/sd/abc.txt"))
  26. assert(io.fileSize("/sd/abc.txt") == str:len() + 3*1024)
  27. f = io.open("/sd/abc.txt", "rb")
  28. assert(f ~= nil, "fatfs io error")
  29. if f then
  30. local data = f:read(str:len())
  31. log.info("from fatfs-vfs", data:len())
  32. assert(data == str, "fatfs r/w error")
  33. local offset = f:seek("set", str:len() + 1024)
  34. assert(offset == str:len() + 1024)
  35. log.info("fatfs", "offset now", offset)
  36. log.info("why", f:read(3))
  37. assert(f:read(3) == "zzz")
  38. f:seek("end", 0)
  39. assert(f:read(1024) == nil)
  40. f:seek("set", 0)
  41. assert(f:read(str:len() + 3) == str .. "zzz")
  42. end
  43. local ret, files = io.lsdir("/sd")
  44. assert(files ~= nil, "fatfs lsdir shall work")
  45. log.info("fatfs", "lsdir", json.encode(files))
  46. log.info("bye")
  47. -- sys.wait(1000)
  48. end
  49. os.exit(0)
  50. -- end)
  51. -- sys.run()