Просмотр исходного кода

delete:删除Air8000 的AirSPINAND_1000的demo

马亚丹 6 месяцев назад
Родитель
Сommit
a3b0603899

+ 0 - 201
module/Air8000/demo/accessory_board/AIRSPINAND_1000/AIRSPINAND_1000.lua

@@ -1,201 +0,0 @@
---[[
-@module  LITTLE_FLASh_NAND
-@summary LITTLE_FLASh_NAND测试功能模块
-@version 1.0
-@date    2025.9.05
-@author  马亚丹
-@usage
-本demo演示的功能为:使用Air8000核心板通过SPI库实现对 NAND Flash的操作,演示读数据写数据、删除数据等操作。
-以 Air8000核心板为例, 接线如下:
-Air8000       AirSPINAND_1000配件版
-GND(任意)          GND
-VDD_EXT            VCC
-GPIO12/SPI1_CS     CS,片选
-SPI1_SLK           CLK,时钟
-SPI1_MOSI          DI,主机输出,从机输入
-SPI1_MISO          DO,主机输入,从机输出
---使用SPI1,硬件SPI CS接在gpio12上
-
-运行核心逻辑:
-1.以对象的方式配置参数,初始化启用SPI,返回SPI对象
-2.用SPI对象初始化flash设备,返回flash设备对象
-3.用lf库挂载flash设备对象为文件系统
-4.读取文件系统的信息,以确认内存情况
-5.操作文件读写,并验证写入一致性,追加文件等。
-
-]]
-
--- SPI配置参数
-local SPI_ID = 1        -- SPI总线ID,根据实际情况修改
-local CS_PIN = 12       -- CS引脚,根据实际情况修改
-local CPHA = 0          -- 时钟相位
-local CPOL = 0          -- 时钟极性
-local data_Width = 8    -- 数据宽度(位)
-local bandrate = 2*1000*1000 -- 波特率(Hz),初始化为2MHz
-
-
--- 1. 以对象方式设置并启用 SPI,返回设备对象
-local function spiDev_init_func()
-    log.info("lf_fs", "SPI_ID", SPI_ID, "CS_PIN", CS_PIN)
-
-    --以对象的方式初始化spi,高位在前,主模式,全双工模式
-    local spi_device = spi.deviceSetup(SPI_ID, CS_PIN, CPHA, CPOL, data_Width, bandrate, spi.MSB, 1, 0)
-
-    log.info("硬件spi", "初始化,波特率:", spi_device, bandrate)
-    if not spi_device then
-        log.error("SPI初始化", "失败")
-        return nil
-    end
-    log.info("SPI初始化", "成功,波特率:20MHz")
-    return spi_device
-end
-
-
--- 2. 初始化Flash设备,返回设备对象
-local function init_flash_device(spi_device)
-    log.info("Flash初始化", "开始")
-    local flash_device = lf.init(spi_device)
-    if not flash_device then
-        log.error("Flash初始化", "失败")
-        return nil
-    end
-    log.info("Flash初始化", "成功,设备:", flash_device)
-    return flash_device
-end
-
--- 3. 挂载文件系统
-local function mount_filesystem(flash_device, mount_point)
-    log.info("文件系统", "开始挂载:", mount_point)
-
-    -- 检查是否支持挂载功能
-    if not lf.mount then
-        log.error("文件系统", "lf模块不支持挂载功能")
-        return false
-    end
-
-    -- 尝试挂载
-    local mount_ok = lf.mount(flash_device, mount_point)
-    if not mount_ok then
-        log.warn("文件系统lf", "挂载失败,尝试重新挂载...")
-        mount_ok = lf.mount(flash_device, mount_point)
-        if not mount_ok then
-            log.error("文件系统", "仍挂载失败")
-            return false
-        end
-    end
-
-    log.info("文件系统", "挂载成功:", mount_point)
-    return true
-end
-
--- 4. 打印文件系统信息
-local function print_filesystem_info(mount_point)
-    log.info("文件系统信息", "开始查询:", mount_point)
-
-    -- 获取文件系统详细信息,总块数/已用块数等
-    local ok, total_blocks, used_blocks, block_size, fs_type = fs.fsstat(mount_point)
-    if ok then
-        log.info("  总block数:", total_blocks)
-        log.info("  已用block数:", used_blocks)
-        log.info("  block大小:", block_size, "字节")
-        log.info("  文件系统类型:", fs_type)
-    else
-        log.warn("  无法获取详细信息")
-    end
-end
-
--- 5. 执行文件操作测试
-local function test_file_operations(mount_point)
-    log.info("文件操作测试", "开始")
-
-    -- 测试写入文件
-    local test_file = mount_point .. "/test.txt"
-    local f, err = io.open(test_file, "w")
-    if not f then
-        log.error("  写入失败", test_file, "错误:", err)
-        return false
-    end
-    local write_data = "当前时间: " .. os.date()
-    f:write(write_data)
-    f:close()
-    log.info("  写入成功", test_file, "内容:", write_data)
-
-    -- 测试读取文件
-    local read_data, read_err = io.readFile(test_file)
-    if not read_data then
-        log.error("  读取失败", test_file, "错误:", read_err)
-        return false
-    end
-    log.info("  读取成功", test_file, "内容:", read_data)
-
-    -- 验证内容一致性
-    if read_data ~= write_data then
-        log.warn("  内容不一致", "写入:", write_data, "读取:", read_data)
-    end
-
-    -- 测试文件追加
-    local append_file = mount_point .. "/append.txt"
-    os.remove(append_file) -- 清除旧文件
-    io.writeFile(append_file, "LuatOS 测试") -- 初始写入
-
-    local f_append, append_err = io.open(append_file, "a+")
-    if not f_append then
-        log.error("  追加失败", append_file, "错误:", append_err)
-        return false
-    end
-    local append_data = " - 追加时间: " .. os.date()
-    f_append:write(append_data)
-    -- 执行完操作后,一定要关掉文件
-    f_append:close()
-
-    local final_data = io.readFile(append_file)
-    log.info("  追加后内容:", final_data)
-
-    log.info("文件操作测试", "完成")
-
-    return true
-end
-
--- 7. 关闭SPI设备,成功返回0
-local function spi_close_func()    
-    log.info("关闭spi", spi_device:close())
-end
-
--- 主任务函数:按流程调用各功能函数
-local function spinand_test_func()
-    --1.判断SPI初始化
-    spi_device = spiDev_init_func()
-    if not spi_device then
-        log.error("主流程", "SPI初始化失败,终止")
-        return
-    end
-
-    -- 流程2:初始化Flash设备
-    local flash_device = init_flash_device(spi_device)
-    if not flash_device then
-        log.error("主流程", "Flash初始化失败,终止")
-        spi_close_func()
-        return
-    end
-
-    -- 流程3:挂载文件系统
-    local mount_point = "/little_flash"
-    if not mount_filesystem(flash_device, mount_point) then
-        log.error("主流程", "文件系统挂载失败,终止")
-        spi_close_func()
-        return
-    end
-
-    -- 流程4:打印文件系统信息
-    print_filesystem_info(mount_point)
-
-    -- 流程5:执行文件操作测试
-    if not test_file_operations(mount_point) then
-        log.warn("主流程", "文件操作测试部分失败")
-    end
-
-     -- 6.关闭SPI设备
-    spi_close_func()
-end
-
-sys.taskInit(spinand_test_func)

+ 0 - 85
module/Air8000/demo/accessory_board/AIRSPINAND_1000/main.lua

@@ -1,85 +0,0 @@
---[[
-@module  main
-@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑 
-@version 001.000.000
-@date    2025.9.05
-@author  马亚丹
-@usage
-本demo演示的功能为:使用Air8000核心板实现对 NAND Flash的操作,演示读数据写数据、删除数据等操作。
-以 Air8000核心板为例, 接线如下:
-Air8000       AirSPINAND_1000配件版
-GND(任意)          GND
-VDD_EXT            VCC
-GPIO12/SPI1_CS     CS,片选
-SPI1_SLK           CLK,时钟
-SPI1_MOSI          DI,主机输出,从机输入
-SPI1_MISO          DO,主机输入,从机输出
---使用SPI1,硬件SPI CS接在gpio12上
-直接require "AirSPINAND_1000" 加载AirSPINAND_1000功能模块,烧录运行即可。
-详细逻辑请看AirSPINAND_1000.lua 文件
-
-]]
-
---[[
-必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
-PROJECT:项目名,ascii string类型
-        可以随便定义,只要不使用,就行
-VERSION:项目版本号,ascii string类型
-        如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
-            X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
-            因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
-        如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
-]]
-PROJECT = "Air8000_SPI_lf_NAND"
-VERSION = "001.000.000"
-
-
--- 在日志中打印项目名和项目版本号
-log.info("main", PROJECT, VERSION)
-
-
--- 如果内核固件支持wdt看门狗功能,此处对看门狗进行初始化和定时喂狗处理
--- 如果脚本程序死循环卡死,就会无法及时喂狗,最终会自动重启
-if wdt then
-    --配置喂狗超时时间为9秒钟
-    wdt.init(9000)
-    --启动一个循环定时器,每隔3秒钟喂一次狗
-    sys.timerLoopStart(wdt.feed, 3000)
-end
-
-
--- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
--- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
--- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
--- 启动errDump日志存储并且上传功能,600秒上传一次
--- if errDump then
---     errDump.config(true, 600)
--- end
-
-
--- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
--- 可以使用合宙的iot.openluat.com平台进行远程升级
--- 也可以使用客户自己搭建的平台进行远程升级
--- 远程升级的详细用法,可以参考fota的demo进行使用
-
-
--- 启动一个循环定时器
--- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
--- 方便分析内存使用是否有异常
--- sys.timerLoopStart(function()
---     log.info("mem.lua", rtos.meminfo())
---     log.info("mem.sys", rtos.meminfo("sys"))
--- end, 3000)
-
-
-
--- 加载AirSPINAND_1000功能模块
-require "AirSPINAND_1000"
-
-
-
-
--- 用户代码已结束---------------------------------------------
--- 结尾总是这一句
-sys.run()
--- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行

+ 0 - 109
module/Air8000/demo/accessory_board/AIRSPINAND_1000/readme.md

@@ -1,109 +0,0 @@
-## 功能模块介绍:
-
-1. main.lua:主程序入口
-
-2. AirSPINAND_1000:通过littleFS文件系统,对flash模块以文件系统的方式进行读写数据操作,详细逻辑请看AirSPINAND_1000.lua 文件
-
-## 演示功能概述:
-
-### AirSPINAND_1000:
-
-1.以对象的方式配置参数,初始化启用 SPI,返回 SPI 对象
-
-2.用 SPI 对象初始化 flash 设备,返回 flash 设备对象
-
-3.用 lf 库挂载 flash 设备对象为文件系统
-
-4.读取文件系统的信息,以确认内存情况
-
-5.操作文件读写,并验证写入一致性,追加文件等。
-
-## 演示硬件环境:
-
-![](https://docs.openluat.com/accessory/AirSPINORFLASH_1000/image/spi1.jpg)
-
-![](https://docs.openluat.com/accessory/AIRSPINAND_1000/image/nand.jpg)
-
-1. 合宙 Air8000 核心板一块
-
-2. 合宙 AirSPINAND_1000 一块
-
-3. TYPE-C USB 数据线一根 ,Air8000 核心板和数据线的硬件接线方式为:
-- Air8000 核心板通过 TYPE-C USB 口供电;(外部供电/USB 供电 拨动开关 拨到 USB 供电一端)
-
-- TYPE-C USB 数据线直接插到开发板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;
-4. 杜邦线 6 根
-
-    Air8000 核心板与 AirSPINAND_1000 按以下方式接线:
-
-<table>
-<tr>
-<td>Air8000核心板<br/></td><td>AirSPINAND_1000配件版<br/></td></tr>
-<tr>
-<td>GND(任意)          <br/></td><td>GND<br/></td></tr>
-<tr>
-<td>VDD_EXT<br/></td><td>VCC<br/></td></tr>
-<tr>
-<td>GPIO12/<br/>SPI1_CS<br/></td><td>CS<br/></td></tr>
-<tr>
-<td>SPI1_SLK<br/></td><td>SCK<br/></td></tr>
-<tr>
-<td>SPI1_MOSI<br/></td><td>MOSI<br/></td></tr>
-<tr>
-<td>SPI1_MISO<br/></td><td>MISO<br/></td></tr>
-</table>
-
-## 演示软件环境:
-
-1. Luatools 下载调试工具
-
-2. 固件版本:LuatOS-SoC_V2014_Air8000_1,固件地址,如有最新固件请用最新 [https://docs.openluat.com/air8000/luatos/firmware/](https://docs.openluat.com/air8000/luatos/firmware/)
-
-3. pc 系统 win11(win10 及以上)
-
-## 演示核心步骤:
-
-1. 搭建好硬件环境
-
-2. main.lua 中加载AirSPINAND_1000功能模块,
-
-3. Luatools 烧录内核固件和AirSPINAND_1000 脚本代码
-
-4. 烧录成功后,代码会自动运行,查看打印日志,如果正常运行,会打印相关信息,spi 初始化,数据读写,文件操作等。
-
-5. AirSPINAND_1000.lua 如下 log 显示:
-
-```bash
-[2025-09-18 14:50:09.757][000000000.358] I/user.main Air8000_SPI_lf_NAND 001.000.000
-[2025-09-18 14:50:09.763][000000000.368] I/user.lf_fs SPI_ID 1 CS_PIN 12
-[2025-09-18 14:50:09.771][000000000.368] SPI_HWInit 552:spi1 speed 2000000,1994805,154
-[2025-09-18 14:50:09.777][000000000.369] I/user.硬件spi 初始化,波特率: SPI*: 0C7F5B90 2000000
-[2025-09-18 14:50:09.788][000000000.369] I/user.SPI初始化 成功,波特率:20MHz
-[2025-09-18 14:50:09.794][000000000.369] I/user.Flash初始化 开始
-[2025-09-18 14:50:09.807][000000000.370] I/little_flash Welcome to use little flash V0.0.1 .
-[2025-09-18 14:50:09.815][000000000.370] I/little_flash Github Repositories https://github.com/Dozingfiretruck/little_flash .
-[2025-09-18 14:50:09.822][000000000.370] I/little_flash Gitee Repositories https://gitee.com/Dozingfiretruck/little_flash .
-[2025-09-18 14:50:09.831][000000000.371] I/little_flash SFDP header not found.
-[2025-09-18 14:50:09.838][000000000.371] I/little_flash JEDEC ID: manufacturer_id:0xEF device_id:0xAA21 
-[2025-09-18 14:50:09.847][000000000.371] I/little_flash little flash fonud flash W25N01GVZEIG
-[2025-09-18 14:50:09.853][000000000.421] I/user.Flash初始化 成功,设备: userdata: 0C0F9D7C
-[2025-09-18 14:50:09.864][000000000.421] I/user.文件系统 开始挂载: /little_flash
-[2025-09-18 14:50:10.078][000000000.816] D/little_flash lfs_mount 0
-[2025-09-18 14:50:10.086][000000000.816] D/little_flash vfs mount /little_flash ret 0
-[2025-09-18 14:50:10.095][000000000.817] I/user.文件系统 挂载成功: /little_flash
-[2025-09-18 14:50:10.102][000000000.817] I/user.文件系统信息 开始查询: /little_flash
-[2025-09-18 14:50:10.119][000000001.127] I/user.  总block数: 1024
-[2025-09-18 14:50:10.131][000000001.128] I/user.  已用block数: 2
-[2025-09-18 14:50:10.143][000000001.128] I/user.  block大小: 131072 字节
-[2025-09-18 14:50:10.150][000000001.128] I/user.  文件系统类型: lfs
-[2025-09-18 14:50:10.165][000000001.128] I/user.文件操作测试 开始
-[2025-09-18 14:50:10.173][000000001.310] I/user.  写入成功 /little_flash/test.txt 内容: 当前时间: Sun Jan  0 08:00:01 1900
-[2025-09-18 14:50:10.182][000000001.482] I/user.  读取成功 /little_flash/test.txt 内容: 当前时间: Sun Jan  0 08:00:01 1900
-[2025-09-18 14:50:11.057][000000002.366] I/user.  追加后内容: LuatOS 测试 - 追加时间: Sun Jan  0 08:00:02 1900
-[2025-09-18 14:50:11.063][000000002.367] I/user.文件操作测试 完成
-[2025-09-18 14:50:11.068][000000002.367] I/user.关闭spi true
-
-
-```
-
-#