Lua共存于裸金属嵌入式c应用中

Lua共存于裸金属嵌入式c应用中,lua,embedded,Lua,Embedded,我正在调查是否有可能使lua与我的实时嵌入式应用程序共存。我想使用lua,这样客户就可以在应用程序中自定义命令。所有的I/O都是由主应用程序完成的,所以lua只需要与主C应用程序通信。据我所知,这不是问题。 我认为主应用程序生成一个事件,然后启动一个自定义lua应用程序 我如何防止它使用所有的cpu时间,例如在一个无休止的循环中。我该如何解决这个问题?(超时错误或其他) 是否有可能减少lualib的代码大小 谢谢, 电动汽车 我如何防止它使用所有的cpu时间,例如在一个无休止的循环中。我该如何解

我正在调查是否有可能使lua与我的实时嵌入式应用程序共存。我想使用lua,这样客户就可以在应用程序中自定义命令。所有的I/O都是由主应用程序完成的,所以lua只需要与主C应用程序通信。据我所知,这不是问题。 我认为主应用程序生成一个事件,然后启动一个自定义lua应用程序

我如何防止它使用所有的cpu时间,例如在一个无休止的循环中。我该如何解决这个问题?(超时错误或其他) 是否有可能减少lualib的代码大小

谢谢, 电动汽车

我如何防止它使用所有的cpu时间,例如在一个无休止的循环中。我该如何解决这个问题?(超时错误或其他)

以尽可能低的线程优先级运行Lua进程,这样,如果用户代码有“忙循环”,它可能会被任何其他线程抢占。如果有其他具有相同优先级的线程,则需要确保在调度程序中启用时间切片(如果可能)

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

 -----------------
| All other tasks |
|      ...        |
|-----------------|
| Lua watchdog    |
|-----------------|
| Lua             |
|-----------------|
| Idle            |
 -----------------
如果Lua看门狗观察到空闲计数器停止增量的时间过长,则Lua进程将被暂停,看门狗必须采取纠正措施—终止Lua进程/线程、恢复资源或发出警告消息

是否有可能减少lualib的代码大小

考虑使用,而不是自己移植桌面Lua,然后考虑在

中描述的技术。