Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошивка работает только из под отладчика
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Kruger69
Здравствуйте. Нуждаюсь в Ваших советах, многоуважаемый, ALL
Написал программу. Процессор: AT91SAM7X. Отладил её с помощью j-link. Запустил тесты, час удачной работы: не разу не ушло ни в аборт никуда, все как и планировалось. Так вышло что тестирование происходило из под отладчика. Выключаю питание. Включаю. Естевственно плата начинает работу уже без отладчика. И происходит следующее: через 20 секунд происходит сброс, прошивка начинает работать с самого начала: снова происходит инициализация и прочее.
Запускаю ИАР, в настройках отладчика выставляю "Attach to program" (чтобы прошивка не обновлялась а отладчик просто verify существующую и начал работу с ней). В общем запускаю плату из под отладчика и все снова работает: хотя прошивку не менял все осталось прежним. Отключаю отладчик все по-старому.

Помогите понять, просто теоретически из-за чего может случаться такая ситуация??? Это учитывая ещё то что в программе нет сброса ни по собаке, ни пользовательского сброса, такое ощущение что как бы питание пропадает.
aaarrr
По умолчанию WD сработает через 16 секунд, при работе под отладчиком он отключен.
Kruger69
Спасибо, aaarrr, вы пиво пьете? Сколько? smile.gif
Дело решилось всего-лишь строчкой "AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;"
А под отладчиком оно работало потому что в *.mac файле была строчка "Watchdog();" которая отключает его.
Спасибо. А я уже столько фантастических вариантов нафантазировал.
aaarrr
Цитата(Kruger69 @ Jul 31 2009, 21:49) *
Спасибо, aaarrr, вы пиво пьете? Сколько? smile.gif

Не-а, не пью почти smile.gif Но за предложение спасибо.

Цитата(Kruger69 @ Jul 31 2009, 21:49) *
Дело решилось всего-лишь строчкой "AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;"

Не очень понятно, как запрещение прерываний могло повлиять на сброс по WD. Отключается он так, если что:
Код
    *AT91C_WDTC_WDMR = AT91C_WDTC_WDDIS;
head_sk
Помню и сам таким страдал smile.gif)) Было по ярой молодости, когда писал программы ещё не зная толком архитектуры. В свое время именно этот баг заставил меня полностью разобраться во всей архитектуре изучаемого мною микроконтроллера.
Kruger69
Цитата(aaarrr @ Jul 31 2009, 23:06) *
Не очень понятно, как запрещение прерываний могло повлиять на сброс по WD.
Ой, то если честно когда писал пост не ту строчку с листинга программы скопировал. Извиняюсь.

З.Ы. Сам алкоголь не употребляю вообще
aaarrr
Цитата(Kruger69 @ Aug 1 2009, 00:11) *
Ой, то если честно когда писал пост не ту строчку с листинга программы скопировал. Извиняюсь.

Я почему-то так и подумал.

Цитата(Kruger69 @ Aug 1 2009, 00:11) *
З.Ы. Сам алкоголь не употребляю вообще

Это очень правильно smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.