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

 
 
> Загрузчик str9, как обойти недоделку str9
OsipovD
сообщение Dec 11 2007, 17:54
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 29-10-07
Пользователь №: 31 848



Здравствуйте, проблема в следующем:

Хочу иметь загрузчик контроллера str9. Чтобы при включении питания сначала исполнялся код загрузчика (расположен в маленькой флеш контроллера bank1) , если не происходит определённого события ( к примеру нажатие кнопки на отладочной плате), стартует основная программа ( из флеш bank0), если событие происходит, то можно загрузить по СОМ-порту новую основную программа.

Есть пример от ST IAP dtriver. Но в этом примере по нажатию кнопки ресет на плате, ресета не происходит. Связано это с тем, что не все регистры принимают свои reset value при resete, в частности FMI. Т.е по ресету контроллер хочет на нулевой адрес, но флеш с которой он грузится с нулевого адреса не начинается ( мы сделали remap перед jump(ом) на основную программу) и ему не остаётся ничего кроме как зависнуть...

А ресет в основной программе очень нужен. Не удавалось ли кому-нибудь перебороть эту проблему каким-нибудь способом? Буду признателен за любую помощь
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Dec 12 2007, 15:07
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Просто ремап не надо делать и все отдично работает.
Именно так делаю в дивайсах на STR91x.
Область векторов совместно используют и загрузчик и программа.
Этаж область то все равно одинаковая, зачем из-за нее делать ремапинг?

Цитата(OsipovD @ Dec 11 2007, 22:24) *
Здравствуйте, проблема в следующем:

Хочу иметь загрузчик контроллера str9. Чтобы при включении питания сначала исполнялся код загрузчика (расположен в маленькой флеш контроллера bank1) , если не происходит определённого события ( к примеру нажатие кнопки на отладочной плате), стартует основная программа ( из флеш bank0), если событие происходит, то можно загрузить по СОМ-порту новую основную программа.

Есть пример от ST IAP dtriver. Но в этом примере по нажатию кнопки ресет на плате, ресета не происходит. Связано это с тем, что не все регистры принимают свои reset value при resete, в частности FMI. Т.е по ресету контроллер хочет на нулевой адрес, но флеш с которой он грузится с нулевого адреса не начинается ( мы сделали remap перед jump(ом) на основную программу) и ему не остаётся ничего кроме как зависнуть...

А ресет в основной программе очень нужен. Не удавалось ли кому-нибудь перебороть эту проблему каким-нибудь способом? Буду признателен за любую помощь
Go to the top of the page
 
+Quote Post
Bosicc
сообщение Dec 26 2007, 13:23
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 5-03-06
Из: Украина, Киев
Пользователь №: 14 970



Цитата(AlexandrY @ Dec 12 2007, 17:07) *
Просто ремап не надо делать и все отдично работает.
Именно так делаю в дивайсах на STR91x.
Область векторов совместно используют и загрузчик и программа.
Этаж область то все равно одинаковая, зачем из-за нее делать ремапинг?


Можно поподробней рассказать про совместное использование области под вектора? Меня интересует вектора заданы в загрузчике и как в главной программе?

Просто у меня возникла проблема. Когда я полностью загрузил главную программу в Банк 0 и хочу сделать ДЖАМП на нею, у меня программа слетает. Я так понимаю, есть пару причин:
1. Не срабатывает Ремап ( FMI->CR сбрасывается в значение 0х8 ( взято отсюда ) )
2. Не правильно вызываю функцию jump();

Если Вам будет не сложно, могли бы вы более подробно описать процесс переключения между банками. И если есть тестовый примерчик под Кейл, поделитесь пожалуйста smile.gif

Буду очень благодарен за советы.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:27
Рейтинг@Mail.ru


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