|
LPC и т .п. отладка IAR, В очередной раз воевал с ветряными мельницами |
|
|
|
Sep 10 2006, 11:44
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Имею плату от Olimex на LPC2148. Пытался запустить тестовый пример. С ходу не работал. После некторого времени возни и поиска ответов на извечные вопросы "кто виноват" и "что делать" виноватого нашел. Оказалось, что после рестарта таймеру 1 оказывается разрешен счет, разрешено прерывание. Хотя по ходу программы этого не делается. Зато по ходу программы разрешалось прерывание в VIC. И как следстивие - получалось периодическое падение системы. Разбираюсь дальше. Оказывается программа, зашитая во флэш виновата. То есть она запускается, начианает работать, включает нужную ей периферию, потом по jtag грузится мой новый софт и запускается, но полноценного ресета не происходит, то есть моя новая программа работает с периферией, которая настроена той, что во флэш. Переключаюсь на бутлоадер, делаю ресет, загружаю софт, все ок, таймер выключен. Вспоминаю, что это уже было раньше, тоже натыкался на такое поведение, но забыл за давностью и снова прошелся по таким же граблям. Что делать? Можно ли как-то так настроить систему, чтобы после загрузки и рестарта по jtag кристалл принимал значения по сбросу для всех регистров? А то по этим граблям надоело ходить.
--------------------
Пасу котов...
|
|
|
|
|
 |
Ответов
|
Sep 10 2006, 12:06
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Andy Mozzhevilov @ Sep 10 2006, 14:44)  Можно ли как-то так настроить систему, чтобы после загрузки и рестарта по jtag кристалл принимал значения по сбросу для всех регистров? Скриптами (закладочка RDI->Init) через J-Tag после загрузки установить периферию в желаемое состояние. А вообще: - потереть Flash. - Не отлаживаться в RAM - все равно она скоро кончится :-)
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 10 2006, 12:26
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(zltigo @ Sep 10 2006, 18:06)  Цитата(Andy Mozzhevilov @ Sep 10 2006, 14:44)  Можно ли как-то так настроить систему, чтобы после загрузки и рестарта по jtag кристалл принимал значения по сбросу для всех регистров?
Скриптами (закладочка RDI->Init) через J-Tag после загрузки установить периферию в желаемое состояние. Думал об этом, но у кажного чипа своя периферия. Можно конечно, прописать. Потом, это происходит в нужный момент, то есть после этого уже связь jtag не обрывается? Как я понял, в процессе загрузки кристалл все же несколько раз из флэша рестартует, на разных этапах. Цитата А вообще: - потереть Flash. - Не отлаживаться в RAM - все равно она скоро кончится :-) В RAM удобно начинать заводить чип. Когда код еще не очень большой и лезет туда, а загрузка проходит значительно быстрее.
--------------------
Пасу котов...
|
|
|
|
|
Sep 10 2006, 20:30
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Andy Mozzhevilov @ Sep 10 2006, 15:26)  Потом, это происходит в нужный момент, то есть после этого уже связь jtag не обрывается? Как я понял, в процессе загрузки кристалл все же несколько раз из флэша рестартует, на разных этапах. Полноцнный ресет (дерганьем ногой) ИАР делает только один раз - при старте отладчика. Ето прописано мелкими буквами в хелпе. После этого кнопка "ресет" сбрасывает только ядро. Скрипты можно дописать в ExecUserReset, тогда они будут делать инициализацию при нажатии на иконку "ресет". Маленькая проблема в том, что не всю периферию можно проинитить в исходное состояние даже скриптами :-(
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|