【发布时间】:2019-10-10 19:03:58
【问题描述】:
我已经在STM32F103中成功搭建了LUA,下面的代码就OK了:
const char lua_test[] = "print(\"Hello Lua!!\")";
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
luaopen_base(L);
luaL_dostring(L, lua_test);
lua_close(L);
字符串正确显示在串口中。 但是当我将打印功能放入外部 SD 卡中的文件并尝试将“dostring”替换为“dofile”时:
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
luaopen_base(L);
if (luaL_dofile(L, "1:/2.txt")!=0) //Run 2.txt in SD card
USART1_Send_String(lua_tostring(L,-1));
lua_close(L);
串口显示错误信息“1:/2.txt:1: unexpected symbol”,函数“luaL_dofile”返回3。 错误消息不包含“近 XXX”之类的任何提示。
我已经覆盖了“_sys_open”和“_sys_read”,并确定文件“1:/2.txt”被正确读取。 我试图将 2.txt 的内容更改为任何内容,包括一个新行和一个空格,但仍然出现同样的错误。
如何解决此问题或如何获取更多错误消息? 请帮助我,任何建议都是值得赞赏的。
PS:我使用的是官方的 lua 5.3.4。它至少需要 7.5KB RAM 和 65K ROM。我在 STM32F103ZET6 的内部 64KB RAM 中分配了 4KB 堆栈和 16K 堆。通过 "luaL_dostring" 运行 lua 代码可以正常工作,但在调用 "luaL_dofile" 时出错。
【问题讨论】:
-
是现有的 Lua(来自 lua.org)还是 Lua 的修改版本?
-
那么,您的设备有 96 KB 的 RAM?
-
@Egor Skriptunoff 我正在使用官方 lua 5.3.4。它至少需要 7.5KB RAM 和 65K ROM。我在 STM32F103ZET6 的内部 64KB RAM 中分配了 4KB 堆栈和 16K 堆。通过 "luaL_dostring" 运行 lua 代码可以正常工作,但在调用 "luaL_dofile" 时出错。