Образы ПЗУ, скрипты GNU ld, хотят разбить программы на app + lib - PullRequest
0 голосов
/ 16 февраля 2019

Не уверен, что это вообще выполнимо, но здесь идет речь ...

Я работаю на арене встроенных систем, используя процессоры Cortex-M3 с, например, 1 МБ флэш-памяти, например, 64 КБ оперативной памяти, и периферийные устройства(Uarts, i2c шины) встроен в MCU.Я использую GNU arm-none-eabi-gcc toolchain.Я знаком со скриптами ld и с тем, как ResetHandler должен загружать разделы .data из ROM в RAM при перезагрузке.По сути, «ОС» не существует, мы отвечаем за сброс.

Если у меня есть приложение А, оно будет состоять из моей логики, плюс обращения к библиотеке, взаимодействующей с аппаратным обеспечением (в нашем случае этоназываемый emlib, мы используем микроконтроллеры EnergyMicro) плюс вызовы библиотеки C.Приложение B имело бы свою логику, но значительная часть A и B. общие.

Можно ли каким-то образом извлечь из файла .bin для A ту часть, которая называется 'I / O + C lib' ипрошить это на целевую плату, само собой?Тогда A и B могут быть по отдельности размещены в разных местах ПЗУ, и какой-либо вид загрузчика может выбирать между ними ??Я предполагаю, что это проблема набора: сначала загрузите пересечение A и B, а затем загрузите части A и B, которые НЕ перекрываются (дополняет?).

Это было бы настоящей победой для меня, так какНашей целью является обновление кода «на месте», т.е. после развертывания системы.Мы работаем в морской отрасли, и у нас есть только спутниковая связь Iridium.Если A 200K, из которых 80K - это lib, а B - 210K, ОЧЕНЬ хорошо было бы послать 130K для B, а не все.Я ценю, что «lib», сожженный для прошивки на заводе-изготовителе, должен будет включать ВСЕ подпрограммы, которые когда-либо могла использовать любая программа P, но я могу жить с этим.

Любые гуру GNU ld, которые былитам, что сделал? '

Ура

...