Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2dca888
commit f81f850
Showing
6 changed files
with
398 additions
and
206 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/* | ||
@module little_flash | ||
@summary LITTLE FLASH 软件包 | ||
@version 1.0 | ||
@date 2024.05.11 | ||
@demo little_flash | ||
@tag LUAT_USE_LITTLE_FLASH | ||
*/ | ||
|
||
#include "luat_base.h" | ||
#include "luat_spi.h" | ||
#include "luat_mem.h" | ||
|
||
#define LUAT_LOG_TAG "little_flash" | ||
#include "luat_log.h" | ||
#include "little_flash.h" | ||
|
||
static little_flash_t lf_flash = {0}; | ||
|
||
/* | ||
初始化 little_flash | ||
@api lf.init(spi_device) | ||
@int userdata spi_device | ||
@return userdata 成功返回一个数据结构,否则返回nil | ||
@usage | ||
--spi_device | ||
local spi_device = spi.deviceSetup(0,17,0,0,8,2000000,spi.MSB,1,0) | ||
log.info("lf.init",lf.init(spi_device)) | ||
*/ | ||
static int luat_little_flash_init(lua_State *L){ | ||
static luat_spi_device_t* little_flash_spi_device = NULL; | ||
if (lua_type(L, 1) == LUA_TUSERDATA){ | ||
little_flash_spi_device = (luat_spi_device_t*)lua_touserdata(L, 1); | ||
lf_flash.spi.user_data = little_flash_spi_device; | ||
} | ||
little_flash_init(); | ||
int re = little_flash_device_init(&lf_flash); | ||
lua_pushlightuserdata(L, &lf_flash); | ||
return 1; | ||
} | ||
|
||
#ifdef LUAT_USE_FS_VFS | ||
#include "luat_fs.h" | ||
#include "lfs.h" | ||
extern lfs_t* flash_lfs_lf(little_flash_t* flash, size_t offset, size_t maxsize); | ||
|
||
/* | ||
挂载 little_flash lfs文件系统 | ||
@api lf.mount(flash, mount_point, offset, maxsize) | ||
@userdata flash Flash 设备对象 lf.init()返回的数据结构 | ||
@string mount_point 挂载目录名 | ||
@int 起始偏移量,默认0 | ||
@int 总大小, 默认是整个flash | ||
@return bool 成功返回true | ||
@usage | ||
log.info("lf.mount",lf.mount(little_flash_device,"/little_flash")) | ||
*/ | ||
static int luat_little_flash_mount(lua_State *L) { | ||
const little_flash_t *flash = lua_touserdata(L, 1); | ||
const char* mount_point = luaL_checkstring(L, 2); | ||
size_t offset = luaL_optinteger(L, 3, 0); | ||
size_t maxsize = luaL_optinteger(L, 4, 0); | ||
lfs_t* lfs = flash_lfs_lf(flash, offset, maxsize); | ||
if (lfs) { | ||
luat_fs_conf_t conf = { | ||
.busname = (char*)lfs, | ||
.type = "lfs2", | ||
.filesystem = "lfs2", | ||
.mount_point = mount_point, | ||
}; | ||
int ret = luat_fs_mount(&conf); | ||
LLOGD("vfs mount %s ret %d", mount_point, ret); | ||
lua_pushboolean(L, 1); | ||
} | ||
else { | ||
lua_pushboolean(L, 0); | ||
} | ||
return 1; | ||
} | ||
#endif | ||
|
||
#include "rotable2.h" | ||
static const rotable_Reg_t reg_little_flash[] = | ||
{ | ||
{ "init", ROREG_FUNC(luat_little_flash_init)}, | ||
#ifdef LUAT_USE_FS_VFS | ||
{ "mount", ROREG_FUNC(luat_little_flash_mount)}, | ||
#endif | ||
{ NULL, ROREG_INT(0)} | ||
}; | ||
|
||
LUAMOD_API int luaopen_little_flash( lua_State *L ) { | ||
luat_newlib2(L, reg_little_flash); | ||
return 1; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
|
||
-- LuaTools需要PROJECT和VERSION这两个信息 | ||
PROJECT = "little_flash demo" | ||
VERSION = "1.0.0" | ||
|
||
log.info("main", PROJECT, VERSION) | ||
|
||
sys = require("sys") | ||
|
||
--添加硬狗防止程序卡死 | ||
if wdt then | ||
wdt.init(9000)--初始化watchdog设置为9s | ||
sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗 | ||
end | ||
|
||
-- spi_id,pin_cs | ||
local function little_flash_spi_pin() | ||
local rtos_bsp = rtos.bsp() | ||
if rtos_bsp == "AIR101" then | ||
return 0,pin.PB04 | ||
elseif rtos_bsp == "AIR103" then | ||
return 0,pin.PB04 | ||
elseif rtos_bsp == "AIR105" then | ||
return 5,pin.PC14 | ||
elseif rtos_bsp == "ESP32C3" then | ||
return 2,7 | ||
elseif rtos_bsp == "ESP32S3" then | ||
return 2,14 | ||
elseif rtos_bsp == "EC618" then | ||
return 0,8 | ||
elseif rtos_bsp == "EC718P" then | ||
return 0,8 | ||
else | ||
log.info("main", "bsp not support") | ||
return | ||
end | ||
end | ||
|
||
sys.taskInit(function() | ||
-- log.info("等5秒") | ||
sys.wait(1000) | ||
local spi_id,pin_cs = little_flash_spi_pin() | ||
if not spi_id then | ||
while 1 do | ||
sys.wait(1000) | ||
log.info("main", "bsp not support yet") | ||
end | ||
end | ||
|
||
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) | ||
log.info("lf", "spi_flash", spi_flash) | ||
little_flash_device = lf.init(spi_flash) | ||
if little_flash_device then | ||
log.info("lf.init ok") | ||
else | ||
log.info("lf.init Error") | ||
return | ||
end | ||
|
||
if lf.mount then | ||
local ret = lf.mount(little_flash_device,"/little_flash") | ||
log.info("lf.mount", ret) | ||
if ret then | ||
log.info("little_flash", "挂载成功") | ||
log.info("fsstat", fs.fsstat("/little_flash")) | ||
|
||
-- 挂载成功后,可以像操作文件一样操作 | ||
local f = io.open("/little_flash/test", "w") | ||
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) | ||
|
||
|
||
-- 用户代码已结束--------------------------------------------- | ||
-- 结尾总是这一句 | ||
sys.run() | ||
-- sys.run()之后后面不要加任何语句!!!!! |
Oops, something went wrong.