Кто любит RISC в жизни, заходим, не стесняемся.
Чт мар 23, 2017 10:37:41
всем привет, возникла идея сделать, чтобы загрузчик мог перепрошить сам себя, в озу он не влезает, поэтому есть идея копировать его в область пользовательской прошивки и запускать там, в кейле поставил галку 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 проекта или как вообще это можно сделать? заранее спасибо ответившим
Пн мар 27, 2017 08:36:31
Вам же компилятор, все абисняет: "region 'ER_RO' cannot have address type relocation" т.е. секция под названием 'ER_RO' которая содержит адреса обработчиков прерываний - не может быть PI.
самый простой путь - добавить ещё одну таблицу прерываний. Обработчики штатной - глянут в эту таблицу и прыгнут по нужному адресу, который вы забьете.
Придется помудрить с линковкой, но все получится.
Да, и вопрос: а почему бы вам не сделать только функции записи рам-функциями? А новый бутлоадер писать в область пользовательской прошивки, далее - рам функциями писать на штатное место? По-мойму это куда проще
Вт мар 28, 2017 07:08:02
пока сделал немного костыльно, но работает, при копировании загрузчика в таблице векторов смещаю адреса ненулевые вручную,
по рам-функциям: и правда идея хорошая, попробую
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.