Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC и т .п. отладка IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Andy Mozzhevilov
Имею плату от Olimex на LPC2148.
Пытался запустить тестовый пример. С ходу не работал. После некторого времени возни и
поиска ответов на извечные вопросы "кто виноват" и "что делать" виноватого нашел.
Оказалось, что после рестарта таймеру 1 оказывается разрешен счет, разрешено прерывание.
Хотя по ходу программы этого не делается. Зато по ходу программы разрешалось прерывание в VIC.
И как следстивие - получалось периодическое падение системы.
Разбираюсь дальше. Оказывается программа, зашитая во флэш виновата. То есть она запускается,
начианает работать, включает нужную ей периферию, потом по jtag грузится мой новый софт и
запускается, но полноценного ресета не происходит, то есть моя новая программа работает с
периферией, которая настроена той, что во флэш. Переключаюсь на бутлоадер, делаю ресет,
загружаю софт, все ок, таймер выключен.
Вспоминаю, что это уже было раньше, тоже натыкался на такое поведение, но забыл за давностью
и снова прошелся по таким же граблям.
Что делать? Можно ли как-то так настроить систему, чтобы после загрузки и рестарта по jtag кристалл
принимал значения по сбросу для всех регистров? А то по этим граблям надоело ходить.
zltigo
Цитата(Andy Mozzhevilov @ Sep 10 2006, 14:44) *
Можно ли как-то так настроить систему, чтобы после загрузки и рестарта по jtag кристалл
принимал значения по сбросу для всех регистров?

Скриптами (закладочка RDI->Init) через J-Tag после загрузки установить периферию в желаемое состояние. А вообще:
- потереть Flash.
- Не отлаживаться в RAM - все равно она скоро кончится :-)
Andy Mozzhevilov
Цитата(zltigo @ Sep 10 2006, 18:06) *
Цитата(Andy Mozzhevilov @ Sep 10 2006, 14:44) *

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

Скриптами (закладочка RDI->Init) через J-Tag после загрузки установить периферию в желаемое состояние.


Думал об этом, но у кажного чипа своя периферия. Можно конечно, прописать.
Потом, это происходит в нужный момент, то есть после этого уже связь jtag не обрывается?
Как я понял, в процессе загрузки кристалл все же несколько раз из флэша рестартует, на
разных этапах.

Цитата
А вообще:
- потереть Flash.
- Не отлаживаться в RAM - все равно она скоро кончится :-)


В RAM удобно начинать заводить чип. Когда код еще не очень большой и лезет туда, а загрузка
проходит значительно быстрее.
zltigo
Цитата(Andy Mozzhevilov @ Sep 10 2006, 15:26) *
Потом, это происходит в нужный момент, то есть после этого уже связь jtag не обрывается?

Все нормально.
Сергей Борщ
Цитата(Andy Mozzhevilov @ Sep 10 2006, 15:26) *
Потом, это происходит в нужный момент, то есть после этого уже связь jtag не обрывается?
Как я понял, в процессе загрузки кристалл все же несколько раз из флэша рестартует, на
разных этапах.
Полноцнный ресет (дерганьем ногой) ИАР делает только один раз - при старте отладчика. Ето прописано мелкими буквами в хелпе. После этого кнопка "ресет" сбрасывает только ядро. Скрипты можно дописать в ExecUserReset, тогда они будут делать инициализацию при нажатии на иконку "ресет". Маленькая проблема в том, что не всю периферию можно проинитить в исходное состояние даже скриптами :-(
zltigo
Короче - при отладке из RAM cтереть Flash и не маяться с проблемами созданными на ровном месте и главное с размышлениями на тему "есть ли из-за этого проблемы".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.