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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
zvukovik
Встал на лапы
Сообщения: 140
Зарегистрирован: Вт авг 03, 2010 15:21:20
Откуда: Екатеринбург

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

Сообщение zvukovik »

всем привет, возникла идея сделать, чтобы загрузчик мог перепрошить сам себя, в озу он не влезает, поэтому есть идея копировать его в область пользовательской прошивки и запускать там, в кейле поставил галку 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 проекта или как вообще это можно сделать? заранее спасибо ответившим
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

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

Сообщение Shapa »

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

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

Сообщение zvukovik »

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

Вернуться в «ARM»