C++ динамическое внедрение кода во встроенную систему

Я ищу решение следующей проблемы:

  • разработан программный модуль C++, который работает на встроенном устройстве (нет возможности использовать файловую функцию "dlopen" для загрузки общих библиотек), а во время работы модуля он должен расширяться динамическим программным кодом
  • динамический код записывается (реализация функций интерфейса) и кросс-компилируется (gcc) в системе ПК перед отправкой через систему шин в ранее описанный программный модуль, работающий на встроенном устройстве.
  • программный модуль на встроенном устройстве должен хранить полученный динамический программный код в памяти и должен иметь возможность вызывать в нем функции

Как мне решить эту проблему?

Мой первый подход заключается в следующем:

  • Кросс-компиляция и связывание динамического кода в виде общей библиотеки (файл ELF) на стороне ПК
  • (после передачи) файл ELF доступен на встроенном устройстве в памяти
  • Перемещение файла ELF -> здесь я сейчас абсолютно не представляю, как это можно сделать! Существуют ли бесплатные библиотеки для выполнения таких задач?

Я не знаю, может ли мой файловый подход ELF работать? Если так, как я должен выполнить перемещение библиотеки?

Есть ли лучший / другой подход к решению моей проблемы?

1 ответ

VxWorks может сделать именно это. Вместо общих библиотек как таковых, объектные модули могут быть частично связаны перемещаемым объектом (опция -r в GNU ld), а затем загружены во время выполнения к цели, где завершена ссылка, разрешая ссылки на существующий код на цели.

Другие вопросы по тегам