всем привет, возникла идея сделать, чтобы загрузчик мог перепрошить сам себя, в озу он не влезает, поэтому есть идея копировать его в область пользовательской прошивки и запускать там, в кейле поставил галку PI на сишные файлы, попробовал собрать для разных адресов, действительно не отличается ничего, кроме таблицы векторов в начале и обработчика ресета (он в startup.s), но попытка поставить эту галку для асм приводит к куче ошибок в startup на каждое прерывание СпойлерL6248E: startup_stm32f10x_md_vl.o(RESET) in PI region 'ER_RO' cannot have address type relocation to Reset_Handler in PI region 'ER_RO'. он не может что-то сделать с адресами обработчиков, в мануале кейла есть совет только для переменных и на си, может есть у кого пример стартапа для PI проекта или как вообще это можно сделать? заранее спасибо ответившим
Вам же компилятор, все абисняет: "region 'ER_RO' cannot have address type relocation" т.е. секция под названием 'ER_RO' которая содержит адреса обработчиков прерываний - не может быть PI. самый простой путь - добавить ещё одну таблицу прерываний. Обработчики штатной - глянут в эту таблицу и прыгнут по нужному адресу, который вы забьете. Придется помудрить с линковкой, но все получится. Да, и вопрос: а почему бы вам не сделать только функции записи рам-функциями? А новый бутлоадер писать в область пользовательской прошивки, далее - рам функциями писать на штатное место? По-мойму это куда проще
пока сделал немного костыльно, но работает, при копировании загрузчика в таблице векторов смещаю адреса ненулевые вручную, по рам-функциям: и правда идея хорошая, попробую
Сейчас этот форум просматривают: mab72 и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения