Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

AVR JTAG ICE - первые впечатления (поубивал бы)

0 views
Skip to first unread message

Askold Volkov

unread,
Jul 5, 2002, 5:33:55 AM7/5/02
to
Всем привет!

Вот и сбылась мечта идиота. Уговорил я начальника на приобретение JTAG ICE и
вот он приехал. Ну что ж, начинаем эксперименты. Первым делом скачиваем с
сайта Atmel наисвежайший AvrStudio4 (надо заметить, что до сих пор я
обходился IAR C Spy-ем и с AvrStudio дела не имел). Запускаем... нет -
говорит - у тебя никакого JTAG ICE. Ну мы так просто не сдаемся и после 5-го
выключения/включения питания и 10-го нажатия на кнопку "Retry" JTAG ICE
наконец обнаруживается и тут же сообщает, что имеет устаревшую версию
программы и что если я сейчас нажму на кнопку "ОК" эта версия будет
обновлена, а если нажму на "Cancel", то они корректной работы обещать не
могут. Делать нечего - жмем "OK" и попадаем прямиком в AvrProg в котором уже
выбран файл для зашивки "AVRstudio\JTAGICE\JtagIce.hex". Кто там говорил,
что прошивка проца в JTAG ICE защищена и самому его изготовить
невозможно???. Ну ладно, перепрограммируем, перезапускаем по инструкции
студию и получаем что? Правильно - "ваш JTAG ICE имеет устаревшую версию" и
т.д.. Разумеется надо было еще выключить притание, но в инструкции об этом
ни слова. Ну ладно, с 3-й попытки ICE завелся и даже обнаружил мою мегу128,
но сообщил, что хоть она и есть но по JTAG общаться не хочет то ли потому,
что fuse JTAGEN не запрограммирована то ли потому, что в ней JTAG программно
отключен, а потому попробуйте-ка дернуть у нее RESET. Легко сказать - кнопки
такой у меня не предусмотрено, а выключение питания заодно выключает и ICE,
питающийся от той же схемы. Ну ладно, дергаю питание и, о чудо, все
находится! Дальше, естественно, все зависло. Ан нет, не все! У JTAG ICE
лампочка мигает. Оказывается это пошла грузиться моя программа во flash (а
кто ее просил?) и пока она не загрузится студия будет висеть и на внешние
раздражители не реагировать. Так... что-то куда-то загрузилось, только,
похоже, не то или не туда... Какая интересная диагностика: "JTAG ICE _run()
Message from IDR: -84". Главное все понятно :) Ага! Кварц вообще не генерит,
похоже fuses неправильно зашиты. А через JTAG перешить слабо? Читаем доку -
оказывается, для этого надо вызвать Tools/STK500 - кто бы мог подумать?
Вызываем: нет - говорит - подходящей платы. Читаем доку внимательнее -
оказывается сначала надо завершить сеанс отладки, чтобы освободить ICE,
тогда STK500 его найдет. Точно - нашла. Меняю fuses. Заработало! Снова
запускаю отладку. "%"?;%?;% мать - опрять пошел процесс прошивки flash. Это
надолго ли ее хватит, если при каждом запуске отладчика она перешиваться
будет?

Ну наконец-то. Вот она моя программа. А нахрена ж она на startup встала, а
не на сишный main? Ну ладно, main я и сам найду, слава богу сишные исходники
она видит. Так, тыкаем мышкой в первую строчку main, говорим RunToCursor
и... хрен вам. Отладчик делает один шаг и останавливается. Пытаюсь еще
несколько раз, пытаясь ставить курсор в разные места и в конце концов
попадаю куда нужно, но как это получилось и почему не получалось до того
остается загадкой. Ну что ж, походим по шагам..... _enable_interrupt();
"?;"%"? мать - ну нахрена ж в пошаговом режиме на прерывания-то реагировать?
А где у нас кнопочка "выполнять до конца функции"? Нету? Замечательно.
Доходим до конца прерывания, вот сейчас вернемся в основную программу...
Хрен вам, опять в прерывание. Ну правильно, внешние-то прерывания ждать не
будут, откуда им знать, что проц стоит. А как бы нам их заблокировать на
время? А никак.

Ну ладно, пусть маленько поработает. Break! Ц?%"?% - "Недостаточно памяти"!
(У меня Win2000, 256Mb). Все, висим, на этот раз окончательно. Прибиваем
студию, запускаем снова - ну вы поняли, пошел процесс прошивки flash. А
посмотрим ка на нашу EEPROM - ?;%?;%?; - одни FF. А вель у меня в программе
полно инициализированных __eeprom переменных и галку "Preserve eeprom" я не
ставил. Ну и где? Попробуем Run-Break еще раз - "Недостаточно памяти"...

А теперь вопрос к любителям AvrStudio4 - какие из этих глюков свойственны
студии изначально, а какие являются порождением JTAG ICE?

--
Аскольд Волков, Новосибирск. http://www.inp.nsk.su/~volkov/

Ilja Talantcev

unread,
Jul 5, 2002, 10:19:43 AM7/5/02
to
Hello Askold!

05 Июл 02 13:33, Askold Volkov написал к All:

AV> А теперь вопрос к любителям AvrStudio4 - какие из этих глюков
AV> свойственны студии изначально, а какие являются порождением JTAG ICE?

У меня тоже впечатления не радостные. Особенные хлопоты доставили даже не
первые знакомства, человек - не кошка, ко всему привыкает, а неожиданные ошибки
в самых интересных местах. Hапример, я бился три дня, чтобы запустить TWI.
Оказалось, что xml файл для ATmega128 был составлен с ошибкой, соответственно
отображался под названием TWSR не регистр с адресом 0x71, а вообще какой-то
левый с адресом 0x67. Заглянул в Datasheet для ATmeg-и - там тоже опечатка,
вместо 0x71 написано 0x671. Попробуй угадай, что имели ввиду авторы. Спасли
заголовочные файлы от IAR - там было написано 0x71. Вот такая эпопея. Бывают,
кстати, ошибки при работе на высоких частотах и в коммуникации мк с эмулятором.
При частоте 4 mHz(кварц на плате 16 mHz) иногда программа выполнялась с
ошибками. Эмулятор отключаю - ошибок нет. Хотя, если наша продукция
исключительно под атмел заточена, поводов для печали больших нет - сколько
труда бы составило подпаять несколько десятков малюсеньких проводов для того,
чтобы что-то сделать без внутрисхемного отладчика. Уж лучше поработать
бета-тестером:).

Ilja

0 new messages