Нашел вчера гитхаб с этим файлом:
Lua based interactive firmware for ESP8266, ESP8285 and ESP32 - nodemcu/nodemcu-firmware
github.com
Меня в заблуждение ввело название luac.cross без расширения. Это обычный экзешник exe, который компилирует скрипт lua под nodemcu (кросс-компилятор, что и следует из названия).
Разобрался как работает, может кому надо, сэкономят время:
1. Пишем модуль lua. Тут самое сложное, как я понял, модуль нужно писать в формате модулей загружаемых через require, т.е. они возвращают таблицу, которая содержит функции и т.п. тут я не разбираюсь, никогда надобности не было. В общем случае в тело модуля можно вписать весь вызываемый код, параметры передавать через глобальные переменные.
2. Кладем этот модуль в папку с luac.cross.exe и выполняем в каталоге luac.cross.exe -o lfs.img -f m.lua, где lfs.img - имя результирующего образа; m.lua - написанный модуль, можно задавать по маске *.lua - в образ будут включены все файлы lua из каталога.
3. Полученный образ загружаем в контроллер.
4. Выполняем в контроллере один раз после загрузки модуля node.LFS.reload("lfs.img") контроллер перезагружается.
5. Получаем модуль как функцию k=node.LFS.get("m") где k - переменная, в которую будет помещена ссылка на модуль, в ней он будет записан как функция, m - имя модуля (файла) lua которое было передано компилятору.
6. Вызываем этот модуль-функцию по мере необходимости k()
Содержимое моего модуля m:
C-like:
function func2()
print("From func2.")
end
function func3()
print("From func3.")
end
print("From module.")
При вызове k() выдает "From module." Вызывать функции из него я пока не умею
