Может кто-нибудь дать обзор, как встраивать Lua? - PullRequest
0 голосов
/ 17 января 2019

Я работаю над устройством, которое должно поддерживать разные рецепты при работе с расходным материалом. Один вставляет расходный материал, сканируется QR-код и, в зависимости от кода, применяется рецепт.

Я использую Cortex-M4F и FPGA для управления некоторыми двигателями, и этот код написан на C ++ и работает на FreeRTOS. Я больше всего хочу, чтобы Lua выполнял такие вещи, как обработка логики if / then / else, циклы и т. Д. Мне также необходимо расширить его для поддержки моих двигателей, что, я не думаю, будет затруднительно при использовании C API (хотя я Я никогда не делал этого для Луа). Но больше всего мне не понадобится ни одна из библиотек.

Элуа не кажется правильным. Если я понимаю этот проект, речь идет о создании бинарного образа для платы и последующем запуске приложения, написанного на Lua. Я просто хочу, чтобы одна задача могла загружать и запускать скрипт.

Вероятно, я могу позволить себе 100-200 кБ флэш-памяти только для Lua, что мне кажется достаточно. Объем оперативной памяти составляет 256 КБ.

Если кто-то сделал это, я хотел бы услышать, как все прошло.

1 Ответ

0 голосов
/ 17 января 2019

Я пробовал нечто подобное, но на голом железе с оперативной памятью всего 64 КБ, чего достаточно для запуска ВМ.В целом, я бы сказал, что чем больше у вас оперативной памяти, тем лучше (не менее 64 КБ).Чтобы сэкономить оперативную память, я сделал GC более агрессивным и сократил стандартное представление чисел до 32 бит (#define LUA_32BITS).При необходимости вы также можете обменять функции для выделения памяти (malloc и т. Д.).Вспышки должно хватить.Я бы рекомендовал использовать Lua 5.3 (Emergency GC, встроенные бинарные операторы, ...).

Обычно исходный код должен собираться без проблем.Единственными частями, которые мне пришлось изменить, были операции ввода-вывода (stdio.h) и функции с time.h, но это зависит от того, как ваша платформа справится с этим.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...