Это зависит совсем немного от вашего инструмента цепи. Вот возможный подход с высоким разрешением.
Скомпилируйте вашу библиотеку в исполняемое изображение, установив свой компоновщик, чтобы использовать определенную часть пространства вашей флэш-памяти. Вероятно, вам понадобится функция подделки/заглушки для компоновщика, чтобы быть счастливой.
После того, как это будет сделано, найдите все адреса символов, используемых библиотекой, и проинструктируйте свой компоновщик относительно этих мест символа при создании вашей обычной программы и не укажите, чтобы процесс ссылки использовал объекты промежуточной библиотеки, когда сшивание. Также проинструктируйте компоновщика разместить код в секции флеш-памяти, которая может быть обновлена.
У вас будет изображение для библиотеки и возможность создавать новые версии основного образа программы, используя в библиотеке.
Возможно, это может быть сценарий, если ваш выходной формат компоновщика является незастроенным эльфом (перед преобразованием в двоичный файл для записи на флеш), и если ваш компоновщик может принять простой текстовый файл для инструкций (оба являются истинными, если вы используют gnu toolchains). Я бы порекомендовал его сценарий для вашего здравомыслия, если в библиотеке не было мало видимых в нем функций и переменных.
Я должен согласиться с некоторыми из комментаторов; если передача библиотеки очень сложная, вам нужно просто создать простой образ, включающий библиотеку, и нажать на все это. Вы могли бы сказать, что библиотека не изменится сейчас, но неизбежно произойдет что-то, что потребует изменения в библиотечном коде, и если вы измените библиотеку и не сможете сохранить символы точно в одном месте, все ваши образы приложений не будут способный работать с новой библиотекой. Это рецепт кошмара при работе с обновлениями совместимого программного обеспечения (прошивки).
Я предполагаю, что это связано с тем, что компилятор знает, где найти ссылки (места памяти) функций библиотеки, которые приложение будет вызывать. Считаете ли вы, что это правильное направление? – Arash
Почему, по вашему мнению, полное изображение слишком велико, чтобы выпустить его каждый раз? Это стандартная практика для MCU, которые выполняют из флеш-памяти, чтобы содержать небольшой загрузчик, который обновляет и выбирает один или несколько возможных изображений приложений, но то, что вы описываете, НЕ является особенно распространенным, кроме случаев, когда речь идет о проприетарной прошивке «blobs» от поставщиков чипов. –
Просто проверил вашу историю сообщений .... Это все еще для инструмента TMS470 w/IAR? Если это так, вы можете указать это в своем вопросе. Любое решение вашего исходного вопроса будет очень зависимым от инструментальной цепочки (и, возможно, архитектуры). –