【问题标题】:Can someone provide an overview of how to embed Lua?有人可以提供有关如何嵌入 Lua 的概述吗?
【发布时间】:2019-01-17 15:57:27
【问题描述】:

我正在开发一种设备,该设备在操作消耗品时必须支持不同的配方。插入消耗品,扫描二维码,然后根据代码应用配方。

我正在使用 Cortex-M4F 和 FPGA 来控制一些电机,该代码是用 C++ 编写的,并且在 FreeRTOS 上运行。我最想要 Lua 做的事情是处理 if/then/else 逻辑和循环等。我还需要扩展它以支持我的电机,我认为使用 C API 不会很困难(尽管我'从来没有为 Lua 做过这个)。但如果有的话,我不需要大部分库。

eLua 似乎不太合适。如果我了解该项目,它是关于为板创建二进制图像,然后在其上运行用 Lua 编写的应用程序。我只希望一个任务能够加载和运行脚本。

我可能只为 Lua 买得起 100-200 kB 的闪存,我认为这已经足够了。 RAM 为 256 kB。

如果有人这样做了,我想听听进展如何。

【问题讨论】:

  • 不久前用 luajit 做过这个。这些是在线食谱。

标签: lua


【解决方案1】:

我尝试了类似的方法,但在只有 64 kB RAM 的裸机上,这足以运行 VM。一般来说,我会说你拥有的 RAM 越多越好(不少于 64 KB)。为了节省 RAM,我使 GC 更具侵略性,并将数字的默认表示减少到 32 位 (#define LUA_32BITS)。如有必要,您还可以交换用于内存分配的函数(malloc 等)。 闪光灯应该足够了。 我建议使用 Lua 5.3(紧急 GC,内置二元运算符,...)。

通常source code 应该毫无问题地构建。我唯一需要更改的部分是 IO 操作 (stdio.h) 和来自 time.h 的函数,但这取决于您的平台如何处理它。

祝你好运。

【讨论】:

  • 谢谢。我将 5.3.5 构建为 C 库没有问题。我只需要定义我选择定义为无符号 32 位值的 l_signalT。我在我的 C++ 主文件中包含了“lua.hpp”,并添加了一些我从某处发布的一些简单代码,但由于空指针而崩溃。我会将这些细节作为另一个问题发布。进程堆栈和堆似乎没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2010-09-21
  • 2014-06-04
相关资源
最近更新 更多