захотелось сделать собственный boolloader с шифрованием.
план действий такой: загрузчик есть обычная программа Си, всю секцию .text которой я размещаю во FLASH-области загрузчика AVR. но тут возникает проблема: прерывания я не использую, и получается, что вся таблица векторов напрасно занимает память. ничего проще, чем сместить адрес секции .text так, чтобы на начало области загрузчика пришлось как раз начало собственно кода инициализации программы, мне в голову не пришло.
конечно, можно все делать руками: вычислять размер таблицы векторов, вычислять новый адрес для начала загрузчика и т.п.... но хочется как-то это упростить. посему вопрос: есть ли возможность каким-либо способом передать компоновщику адрес секции, взяв его из результата работы препроцессора? т.е. я определяю макрос START_BOOT_ADDR в тексте программы, его значение вычисляется компилятором и... и как-то попадает в опцию -Wl,--section-start=.text=START_BOOT_ADDR... это возможно? или есть более кошерный способ достичь желаемого?
Да, вот еще что: в конце кода компилятор добавляет совершенно ненужные команды cli и rjmp $ - нет ли способа от них избавиться?