little_flash.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. --[[
  2. @module little_flash
  3. @summary little_flash测试功能模块
  4. @version 1.0
  5. @date 2025.07.01
  6. @author 孟伟
  7. @usage
  8. 本demo是 Air780EHM + spi_flash. 以 Air780EHM核心板为例, 接线如下:
  9. Air780EHM SPI_FLASH
  10. GND(任意) GND
  11. VDD_EXT VCC
  12. GPIO8/SPI0_CS CS,片选
  13. SPI0_SLK CLK,时钟
  14. SPI0_MOSI DI,主机输出,从机输入
  15. SPI0_MISO DO,主机输入,从机输出
  16. ]]
  17. --使用spi0,cs接在gpio8上
  18. local spi_id,pin_cs = 0,8
  19. function little_flash_func()
  20. sys.wait(1000)
  21. log.info("lf", "SPI", spi_id, "CS PIN", pin_cs)
  22. --以对象的方式初始化spi_flash
  23. spi_flash = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0)
  24. log.info("lf", "spi_flash", spi_flash)
  25. little_flash_device = lf.init(spi_flash) --初始化 little_flash
  26. if little_flash_device then
  27. log.info("lf.init ok",little_flash_device)
  28. else
  29. log.info("lf.init Error")
  30. return
  31. end
  32. if lf.mount then
  33. --挂载 little_flash lfs文件系统
  34. local ret = lf.mount(little_flash_device,"/little_flash")
  35. log.info("lf.mount", ret)
  36. if ret then
  37. log.info("little_flash", "挂载成功")
  38. --获取lfs文件系统信息
  39. log.info("fsstat", fs.fsstat("/little_flash"))
  40. -- 挂载成功后,可以像操作文件一样操作
  41. --以写模式打开文件,并返回文件句柄
  42. local f = io.open("/little_flash/test", "w")
  43. local write_str = os.date()
  44. log.info("/little_flash/test文件写入数据",write_str)
  45. --写入当前时间到文件中
  46. f:write(write_str)
  47. --关闭文件
  48. f:close()
  49. --读取文件内容并打印
  50. local read_str = io.readFile("/little_flash/test")
  51. log.info("little_flash", read_str)
  52. if write_str == read_str then
  53. log.info("写入测试成功,写入字符串与读出字符串一样")
  54. else
  55. log.info("写入测试失败,写入字符串与读出字符串不一样")
  56. end
  57. -- 文件追加
  58. --文件追加测试写入之前先删除一下
  59. os.remove("/little_flash/test2")
  60. --将"LuatOS"字符串写入到test2文件中
  61. io.writeFile("/little_flash/test2", "LuatOS-")
  62. --以追加的方式打开test2文件
  63. local f = io.open("/little_flash/test2", "a+")
  64. local time_str = os.date()
  65. f:write(time_str)
  66. write_str = "LuatOS-"..time_str
  67. log.info("/little_flash/test2文件写入数据",write_str)
  68. --关闭文件
  69. f:close()
  70. read_str = io.readFile("/little_flash/test2")
  71. log.info("little_flash", read_str)
  72. if write_str == read_str then
  73. log.info("追加测试成功,写入字符串与读出字符串一样")
  74. else
  75. log.info("追加测试失败,写入字符串与读出字符串不一样")
  76. end
  77. else
  78. log.info("little_flash", "挂载失败")
  79. end
  80. end
  81. end
  82. --创建并且启动一个task
  83. --运行这个task的主函数little_flash_func
  84. sys.taskInit(little_flash_func)