Интересно, есть ли способ загрузить функцию C с ее данными во время выполнения в текстовый сегмент работающей системы микроконтроллеров. После того, как функция помещается в текстовый сегмент и данные хранятся в сегменте данных, в главном приложении вызывается указатель функции на новую загруженную функцию. Функциональность будет похожа на загрузчик, за исключением загрузки всего двоичного файла перед запуском. Я знаю, что вы можете использовать функции разбрасывания компоновщика компоновщика, чтобы поместить указатель на фиксированный адрес или изменить выравнивание в разделах. Кто-нибудь знает, возможно ли это, и если не почему?Заменить функцию за указателем функции на микроконтроллере во время выполнения
Большое спасибо
Программное обеспечение на жестких дисках делает что-то подобное. Как и в случае с ПК, есть загрузочный диск, который читается в главном коде при запуске, но есть также набор «наложений», группа функций, закодированных для работы по определенному адресу, которые динамически загружаются для неавиационных типов , таких как диагностика. Это понятие относится к 1960-м годам и небольшим компьютерам, таким как IBM 1130, которые используют наложения для библиотечных функций, загружая функции с диска в процессе вызова функции динамической библиотеки. – rcgldr
Для какой цели? Все чипы ARM Cortex и серии 8051 не выполняют программных различий между ОЗУ и FLASH, поэтому вы можете легко создать функцию в ОЗУ во время выполнения и вызвать ее. AVR и PIC не могут выполнить из RAM, поэтому вам придется перезаписать FLASH так же, как это делает загрузчик. – Jon
Спасибо за ваши ответы. Я планирую реализовать эту функцию на контроллере ARM. Как получить таблицы символов из двух исполняемых файлов, которые соответствуют тем, что адреса динамически загруженной функции по-прежнему верны. Единственный способ, который я вижу, - связать динамически загруженную функцию с программой загрузки функций. Но тогда мне приходится загружать только части таблицы символов и текстового сегмента, содержащие только информацию о функции. –