поделить прошивку на две части, стабильный загрузчик и модули, загружаемые по беспроводке в RAM/Flash -- сама зарузка в апнотах описана, а как линковать код чтобы работали вызрвы в "ядро", и каллбэки?
Может есть вариант грузить в формате elf, используя его заголовки и адресные метки?
Бродит вариант вынести в загрузчик ядро ртос, драйвера ввода/вывода, и грузить пакеты пользовательского кода как динамические задачи ртос
У rt thread есть dlmodule можно посмотреть, думаю это то что нужно так ещё и из коробки
Делать ядро и драйвера необновляемыми - ну такоэ. Там то конфиг чуть поменять, то ошибочка в драйвере какую поправить регулярно надо. Пока оно стабильным станет - семь раз поседеешь. Я бы не стал
https://nuttx.apache.org/docs/latest/components/binfmt.html
Какая производительность нужна? Можно скриптовой компилируемый pawn заюзать.
Pawn покомпактнее должен быть. Даже видел плк, в которых он применяется.
или MicroPython, или PicoC или ...
Если цель просто поделить на ДВЕ части — просто слинковать сразу по известному адресу, чтобы не релокейтить, а для вызовов делать таблицу функций по извечтному адресу в первой части, и ходить через нее.
Тоже думали про такой подход, но на практике не реализовывали. Единственное, что при этом приходит в голову, это ограничение на размер областей, чтобы каждая из них не превысила отведенный ей кусок, а в противном случае обновлять всё сразу, чтобы не упустить этот момент.
Ну это линкер-скриптами решается
Мы применяем в изделиях. Не плк, но что-то близкое. Норм язык (хоть и есть к нему некоторые возражения), и главное код компактны и нетребовательный к ресурсам. API легко поддерживать. Я доволен
С удалённым дебагом?
Обсуждают сегодня