瀏覽代碼

fix:按照要求修改fastlz和little_flash的demo

mw 8 月之前
父節點
當前提交
8a0293990b

+ 45 - 0
module/Air780EHM/demo/fastlz/fastlz_test.lua

@@ -0,0 +1,45 @@
+--[[
+使用Air780EHM演示压缩与解压缩的流程。
+]]
+
+function test_fastlz_func()
+    sys.wait(1000)
+    -- 原始数据
+    local originStr = io.readFile("/luadb/test.txt") or "q309pura;dsnf;asdouyf89q03fonaewofhaeop;fhiqp02398ryhai;ofinap983fyua0weo;ifhj3p908fhaes;iofaw789prhfaeiwop;fhaesp98fadsjklfhasklfsjask;flhadsfk"
+    local maxOut = #originStr
+    log.info("原始数据长度", #originStr)
+
+    -- 以压缩等级1 进行压缩
+    local L1 = fastlz.compress(originStr,1)
+    log.info("压缩等级1:压缩后的数据长度", #L1)
+
+    -- 解压
+    local dstr1 = fastlz.uncompress(L1,maxOut)
+    log.info("压缩等级1:解压后的的数据长度", #dstr1)
+    -- 判断解压后的数据是否与原始数据相同
+    if originStr == dstr1 then
+        log.info("压缩等级1:解压后的数据与原始数据相同")
+    else
+        log.info("压缩等级1:解压后的数据与原始数据不同")
+    end
+
+    sys.wait(1000)
+
+    -- 以压缩等级2 进行压缩
+    local L2 = fastlz.compress(originStr, 2)
+    log.info("压缩等级2:压缩后的数据长度", #L2)
+
+    -- 解压
+    local dstr2 = fastlz.uncompress(L2,maxOut)
+    log.info("压缩等级2:解压后的数据长度", #dstr2)
+
+    -- 判断解压后的数据是否与原始数据相同
+    if originStr == dstr2 then
+        log.info("压缩等级2:解压后的数据与原始数据相同")
+    else
+        log.info("压缩等级2:解压后的数据与原始数据不同")
+    end
+end
+--创建并且启动一个task
+--运行这个task的主函数test_fastlz_func
+sys.taskInit(test_fastlz_func)

+ 25 - 35
module/Air780EHM/demo/fastlz/main.lua

@@ -1,4 +1,8 @@
 --[[
+本demo演示的功能为:
+实现使用Air780EHM来对文本/段落序列、原始像素数据序列或具有大量重复的任何其他数据块的快速压缩与解压缩。
+]]
+--[[
 必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
 PROJECT:项目名,ascii string类型
         可以随便定义,只要不使用,就行
@@ -8,8 +12,7 @@ VERSION:项目版本号,ascii string类型
             因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
         如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
 
-本demo演示的功能为:
-实现使用Air780EHM来对文本/段落序列、原始像素数据序列或具有大量重复的任何其他数据块的快速压缩与解压缩。
+
 ]]
 -- LuaTools需要PROJECT和VERSION这两个信息
 PROJECT = "FastLZ"
@@ -21,46 +24,33 @@ if wdt then
     sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
 end
 
-function test_fastlz()
-    sys.wait(1000)
-    -- 原始数据
-    local originStr = io.readFile("/luadb/test.txt") or "q309pura;dsnf;asdouyf89q03fonaewofhaeop;fhiqp02398ryhai;ofinap983fyua0weo;ifhj3p908fhaes;iofaw789prhfaeiwop;fhaesp98fadsjklfhasklfsjask;flhadsfk"
-    local maxOut = #originStr
-    log.info("原始数据长度", #originStr)
+-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
+-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
+-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
+-- 启动errDump日志存储并且上传功能,600秒上传一次
+-- if errDump then
+--     errDump.config(true, 600)
+-- end
 
-    -- 以压缩等级1 进行压缩
-    local L1 = fastlz.compress(originStr,1)
-    log.info("压缩等级1:压缩后的数据长度", #L1)
 
-    -- 解压
-    local dstr1 = fastlz.uncompress(L1,maxOut)
-    log.info("压缩等级1:解压后的的数据长度", #dstr1)
-    -- 判断解压后的数据是否与原始数据相同
-    if originStr == dstr1 then
-        log.info("压缩等级1:解压后的数据与原始数据相同")
-    else
-        log.info("压缩等级1:解压后的数据与原始数据不同")
-    end
+-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
+-- 可以使用合宙的iot.openluat.com平台进行远程升级
+-- 也可以使用客户自己搭建的平台进行远程升级
+-- 远程升级的详细用法,可以参考fota的demo进行使用
 
-    sys.wait(1000)
 
-    -- 以压缩等级2 进行压缩
-    local L2 = fastlz.compress(originStr, 2)
-    log.info("压缩等级2:压缩后的数据长度", #L2)
+-- 启动一个循环定时器
+-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
+-- 方便分析内存使用是否有异常
+-- sys.timerLoopStart(function()
+--     log.info("mem.lua", rtos.meminfo())
+--     log.info("mem.sys", rtos.meminfo("sys"))
+-- end, 3000)
 
-    -- 解压
-    local dstr2 = fastlz.uncompress(L2,maxOut)
-    log.info("压缩等级2:解压后的数据长度", #dstr2)
 
-    -- 判断解压后的数据是否与原始数据相同
-    if originStr == dstr2 then
-        log.info("压缩等级2:解压后的数据与原始数据相同")
-    else
-        log.info("压缩等级2:解压后的数据与原始数据不同")
-    end
-end
+--加载fastlz测试应用模块
+require "fastlz_test"
 
-sys.taskInit(test_fastlz)
 
 
 -- 用户代码已结束---------------------------------------------

+ 57 - 0
module/Air780EHM/demo/little_flash/little_flash.lua

@@ -0,0 +1,57 @@
+
+--[[
+本demo是 Air780EHM + spi_flash. 以 Air780EHM核心板为例, 接线如下:
+
+Air780EHM            SPI_FLASH
+GND(任意)            GND
+VDD_EXT              VCC
+GPIO8/SPI0_CS        CS,片选
+SPI0_SLK             CLK,时钟
+SPI0_MOSI            DI,主机输出,从机输入
+SPI0_MISO            DO,主机输入,从机输出
+]]
+--使用spi0,cs接在gpio8上
+local spi_id,pin_cs = 0,8
+function little_flash_func()
+    sys.wait(1000)
+    log.info("lf", "SPI", spi_id, "CS PIN", pin_cs)
+    spi_flash = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0) --以对象的方式初始化spi_flash
+    log.info("lf", "spi_flash", spi_flash)
+    little_flash_device = lf.init(spi_flash)   --初始化 little_flash
+    if little_flash_device then
+        log.info("lf.init ok",little_flash_device)
+    else
+        log.info("lf.init Error")
+        return
+    end
+
+    if lf.mount then
+        local ret = lf.mount(little_flash_device,"/little_flash")  --挂载 little_flash lfs文件系统
+        log.info("lf.mount", ret)
+        if ret then
+            log.info("little_flash", "挂载成功")
+            log.info("fsstat", fs.fsstat("/little_flash"))   --获取lfs文件系统信息
+
+            -- 挂载成功后,可以像操作文件一样操作
+            local f = io.open("/little_flash/test", "w")--以写模式打开文件,并返回文件句柄,io接口含义可参考lua5.3手册https://wiki.luatos.com/_static/lua53doc/contents.html
+            f:write(os.date())--写入当前时间到文件中
+            f:close()--关闭文件
+
+            log.info("little_flash", io.readFile("/little_flash/test"))--读取文件内容并打印
+
+            -- 文件追加
+            os.remove("/little_flash/test2")
+            io.writeFile("/little_flash/test2", "LuatOS")
+            local f = io.open("/little_flash/test2", "a+")
+            f:write(" - " .. os.date())
+            f:close()
+
+            log.info("little_flash", io.readFile("/little_flash/test2"))
+        else
+            log.info("little_flash", "挂载失败")
+        end
+    end
+end
+--创建并且启动一个task
+--运行这个task的主函数little_flash_func
+sys.taskInit(little_flash_func)

+ 25 - 52
module/Air780EHM/demo/little_flash/main.lua

@@ -1,3 +1,7 @@
+--[[
+本demo演示的功能为:
+实现使用Air780EHM核心板将spi_flash挂测成lfs文件系统,并演示lfs文件系统中的文件的读写、删除、追加等操作。
+]]
 
 --[[
 必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
@@ -8,13 +12,10 @@ VERSION:项目版本号,ascii string类型
             X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
             因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
         如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
-
-本demo演示的功能为:
-实现使用Air780EHM核心板将spi_flash挂测成lfs文件系统,并演示lfs文件系统中的文件的读写、删除、追加等操作。
 ]]
 PROJECT = "little_flash_demo"
 VERSION = "1.0.0"
-
+-- 在日志中打印项目名和项目版本号
 log.info("main", PROJECT, VERSION)
 
 
@@ -23,61 +24,33 @@ if wdt then
     wdt.init(9000)--初始化watchdog设置为9s
     sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
 end
---[[
-本demo是 Air780EHM + spi_flash. 以 Air780EHM核心板为例, 接线如下:
-
-Air780EHM            SPI_FLASH
-GND(任意)            GND
-VDD_EXT              VCC
-GPIO8/SPI0_CS        CS,片选
-SPI0_SLK             CLK,时钟
-SPI0_MOSI            DI,主机输出,从机输入
-SPI0_MISO            DO,主机输入,从机输出
-]]
-local spi_id,pin_cs = 0,8
-sys.taskInit(function()
-    -- log.info("等5秒")
-    sys.wait(1000)
 
-    log.info("lf", "SPI", spi_id, "CS PIN", pin_cs)
-    spi_flash = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0) --以对象的方式初始化spi_flash
-    log.info("lf", "spi_flash", spi_flash)
-    little_flash_device = lf.init(spi_flash)   --初始化 little_flash
-    if little_flash_device then
-        log.info("lf.init ok",little_flash_device)
-    else
-        log.info("lf.init Error")
-        return
-    end
+-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
+-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
+-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
+-- 启动errDump日志存储并且上传功能,600秒上传一次
+-- if errDump then
+--     errDump.config(true, 600)
+-- end
 
-    if lf.mount then
-        local ret = lf.mount(little_flash_device,"/little_flash")  --挂载 little_flash lfs文件系统
-        log.info("lf.mount", ret)
-        if ret then
-            log.info("little_flash", "挂载成功")
-            log.info("fsstat", fs.fsstat("/little_flash"))   --获取lfs文件系统信息
 
-            -- 挂载成功后,可以像操作文件一样操作
-            local f = io.open("/little_flash/test", "w")
-            f:write(os.date())
-            f:close()
+-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
+-- 可以使用合宙的iot.openluat.com平台进行远程升级
+-- 也可以使用客户自己搭建的平台进行远程升级
+-- 远程升级的详细用法,可以参考fota的demo进行使用
 
-            log.info("little_flash", io.readFile("/little_flash/test"))
 
-            -- 文件追加
-            os.remove("/little_flash/test2")
-            io.writeFile("/little_flash/test2", "LuatOS")
-            local f = io.open("/little_flash/test2", "a+")
-            f:write(" - " .. os.date())
-            f:close()
+-- 启动一个循环定时器
+-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
+-- 方便分析内存使用是否有异常
+-- sys.timerLoopStart(function()
+--     log.info("mem.lua", rtos.meminfo())
+--     log.info("mem.sys", rtos.meminfo("sys"))
+-- end, 3000)
 
-            log.info("little_flash", io.readFile("/little_flash/test2"))
-        else
-            log.info("little_flash", "挂载失败")
-        end
-    end
-end)
 
+--加载little_flash应用模块
+require "little_flash"
 
 -- 用户代码已结束---------------------------------------------
 -- 结尾总是这一句