реклама на сайте
подробности

 
 
> собственный загрузчик для STM32
mronetwo
сообщение May 24 2012, 10:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-03-12
Пользователь №: 71 103



Собственно, мешается это долбанное значение для стек поинтера. Если разместить загрузчик в начале то придется его целиком стирать для того чтобы переписать это значение вместе с вектором ресета, а это опасно. Если размещать в конце памяти - тратиться 128К под сам загрузчик и еще 128К под константы которые тоже всячески могут переписываться. Это тоже никуда не годится. Если писать загрузчик во второй сектор, константы в третий - непонятно каким образом должен выглядеть скрипт для линкера для загружаемой программы (IAR).

Я уже башку сломал, и не только себе, в попытках придумать как правильно. Кто реализовывал уже - поделитесь идеями пжалста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение May 24 2012, 15:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(mronetwo @ May 24 2012, 17:23) *
каким образом должен выглядеть скрипт для линкера для загружаемой программы (IAR).

Насчёт размещения загрузчика в начале флеш-памяти и способа передачи управления согласен с предыдущими ораторами. sm.gif

Теперь чтобы собрать программу для работы с загрузчиком достаточно в IAR поправить файл .icf, заменить ему только две строчки:
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
тут вместо 0x08000000 нужно указать адрес откуда начинается приложение.

В самой программе, если она аккуратно написана, ничего не меняется, только перекомпилировать с другим .icf
Единственное, что нужно проконтролировать - это правильность инициализации контроллера прерываний.
В примерах в функции NVIC_SetVectorTable() обычно тупо пишут константу, а лучше взять адрес начала секции .intvec с помощью __section_begin(".intvec").


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
mronetwo
сообщение May 25 2012, 04:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 30-03-12
Пользователь №: 71 103



Спасибо всем! Я уже все реализовал. С загрузчиком в начале флеш, разумеется. Просто не догадался что стек как-то можно налету переинициализировать - знаний по данному ядру пока не очень много и в это как раз и уперся.

Остался пока не нужный но все же интригующий вопрос: как в скрипте "обойти" некоторую часть ROM, чтоб программа думала что у меня два банка памяти, например, с 0 по 1FFFF и с 2FFFF по FFFFF ?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016