【问题标题】:Lua coexist in baremetal embedded c applicationLua 共存于裸机嵌入式 c 应用程序中
【发布时间】:2018-01-03 19:47:09
【问题描述】:

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

如何防止它使用所有 cpu 时间,例如在无限循环中。我该如何解决? (超时错误什么的) 是否可以减少lualib的代码大小?

谢谢, 电动汽车

【问题讨论】:

    标签: lua embedded


    【解决方案1】:

    如何防止它使用所有 cpu 时间,例如在无限循环中。我该如何解决? (超时错误什么的)

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

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

     -----------------
    | All other tasks |
    |      ...        |
    |-----------------|
    | Lua watchdog    |
    |-----------------|
    | Lua             |
    |-----------------|
    | Idle            |
     -----------------
    

    如果 Lua 看门狗观察到空闲计数器停止增加的时间过长,则 Lua 进程将停止,并且看门狗必须采取纠正措施 - 杀死 Lua 进程/线程、恢复资源或发出警告消息。

    是否可以减少 lualib 的代码大小?

    考虑使用eLua 而不是自己移植Desktop Lua,然后考虑NodeMCU project FAQ 中描述的技术。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多