Lua在裸机嵌入式C应用中的协作

我正在研究是否可以让Lua与我的实时嵌入式应用程序共存。 我想使用Lua,以便客户可以在应用程序中创建自定义命令。 所有I/O都是由主应用程序完成的。因此,Lua只需要与主C应用程序通信。据我所知,这不是问题。 我考虑主应用程序生成事件,然后启动自定义lua应用程序。

我如何防止它使用所有cpu时间,例如在无限循环中。 我该怎么解决?(超时错误或其他) 并且可以减少lualib的代码占用吗?

谢谢, EVS

点赞
用户168986
用户168986

如何防止 Lua 进程使用所有 CPU 时间,例如在无限循环中。如何解决这个问题?(超时错误或其他问题)

将 Lua 进程运行在尽可能低的线程优先级上,这样,如果用户代码有“繁忙循环”,它可能会被任何其他线程剥夺 CPU。如果您有相同优先级的其他线程,需要确保调度程序中启用了时间片。

您还可以实现一个 Lua 进程看门狗 - 一个更高优先级的任务,用于监视 Lua 进程的活动,并在其忙等时终止它。这可以通过在空闲任务循环中递增计数器,以及按以下任务优先级安排来实现,而无需以任何方式更改 Lua:

 -----------------
| 所有其他任务 |
|      ...        |
|-----------------|
| Lua 看门狗     |
|-----------------|
| Lua             |
|-----------------|
| 空闲            |
 -----------------

如果 Lua 看门狗观察到 Idle 计数器在过长的时间内停止递增,则 Lua 进程处于停顿状态,看门狗必须采取纠正措施 - 杀死 Lua 进程/线程、恢复资源或发出警告消息。

还有减少 lualib 代码大小的可能吗?

考虑使用 eLua 而不是自己移植桌面版 Lua,然后考虑 NodeMCU 项目 FAQ 中描述的技术,例如减小 RAM 和 SPIFFS 占用空间的技术

2018-01-03 10:53:08