Есть МК с подключенной картой SD. С карты играются звуковые файлы, туда пишутся логи и прочее. Хочу сделать возможность обновления прошивки через файл на карте. Размещать отдельные копии библиотеки для работы с файловой системой в основной программе и бутлоадере не хочется. Возможно ли как-то сделать, чтобы основная программа как-то "знала" по каким адресам в бутлоадере находятся определенные функции? Компилятор - avr-gcc.
Пока вижу 2 варианта:
1. в бутлоадер зашивать сильно усеченную либу для работы с файловой системой, а в основную программу - полноценную. Но как я уже говорил, это нежелательно
2. В бутлоадер зашить полноценную либу, а основную программу с этой либой не линковать. Сделать набор указателей на функции в секции .noinit. Бутлоадер при старте инициализирует эти переменные, и при переходе в основную программу уже имеем готовые указатели. Проблема - не знаю, как сделать, чтобы и в основной программе, и в бутлоадере эти переменные были по одному адресу.
Есть у кого-нибудь мысли по этому поводу?