Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 position-independent c прерываниями

Чт мар 23, 2017 10:37:41

всем привет, возникла идея сделать, чтобы загрузчик мог перепрошить сам себя, в озу он не влезает, поэтому есть идея копировать его в область пользовательской прошивки и запускать там, в кейле поставил галку PI на сишные файлы, попробовал собрать для разных адресов, действительно не отличается ничего, кроме таблицы векторов в начале и обработчика ресета (он в startup.s), но попытка поставить эту галку для асм приводит к куче ошибок в startup на каждое прерывание

он не может что-то сделать с адресами обработчиков, в мануале кейла есть совет только для переменных и на си,
может есть у кого пример стартапа для PI проекта или как вообще это можно сделать? заранее спасибо ответившим

Re: STM32 position-independent c прерываниями

Пн мар 27, 2017 08:36:31

Вам же компилятор, все абисняет: "region 'ER_RO' cannot have address type relocation" т.е. секция под названием 'ER_RO' которая содержит адреса обработчиков прерываний - не может быть PI.
самый простой путь - добавить ещё одну таблицу прерываний. Обработчики штатной - глянут в эту таблицу и прыгнут по нужному адресу, который вы забьете.
Придется помудрить с линковкой, но все получится.
Да, и вопрос: а почему бы вам не сделать только функции записи рам-функциями? А новый бутлоадер писать в область пользовательской прошивки, далее - рам функциями писать на штатное место? По-мойму это куда проще

Re: STM32 position-independent c прерываниями

Вт мар 28, 2017 07:08:02

пока сделал немного костыльно, но работает, при копировании загрузчика в таблице векторов смещаю адреса ненулевые вручную,
по рам-функциям: и правда идея хорошая, попробую
Ответить