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

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

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

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

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

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

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

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

1

Решение

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]