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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Отладка программ для AVR, как это лучше делать?
ivainc1789
сообщение Nov 4 2007, 13:38
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Появилась возможность приобрести AVR Dragon и STK500, но есть некоторые сомнения. Конечно, хорошо иметь параллельный программатор, но давайте пока про это забудем и рассмотрим только работу AVR Dragon и только в качестве отладчика по JTAG и dWIRE. Есть следующие возможности:

1. Использовать для отладки внутр EEPROM. Достаточно иметь тестовый пин и буфер в EEPROM например на 50 ячеек. Я пользуюсь этим методом и вообщем-то он кажется удобным. Отлаживается всегда реально прошитая программа, результаты с большей надежностью достоверны, т. к. для отладки используются ресурсы самого MCU.

2. Использовать для отладки AVR Dragon. Опыта естественно пока нет как и самого Дракона. Все проекты я делаю в IAR EWAVR. На выходе получаем файл "пожатой/оптимизированной" прошивки. Однако Студия не может работать с таким файлом и, возможно, остается только использовать debug firmware. Налицо проигрыш при отладке, т. к. получается что отлаживаем одно, а окончательно прошиваем другое. Поправьте, если я не прав.
С другой стороны, как отлаживать с Драконом? Расставляем точки останова и смотрим содержимое переменных? Насколько я представляю, любое изменение точек приводит к необх перепрошивки кристалла... Но наблюдать ресурсы таким образом можно и способом 1.
Как-то с трудом представляю себе преимущества отладчика. Если есть опыт и желание поделиться, милости прошу.

И еще попутно вопрос по Студии. Есть ли возможность при старте заставить ее СРАЗУ располагать панели инструментов в одну строку? Сейчас у меня это происходит только при загрузке конкретного DBG файла.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 4 2007, 13:52
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(ivainc1789 @ Nov 4 2007, 21:38) *
Все проекты я делаю в IAR EWAVR. На выходе получаем файл "пожатой/оптимизированной" прошивки. Однако Студия не может работать с таким файлом
Или я не до конца понимаю, о чем Вы говорите или Вы не знаете, о чем говорите smile.gif . Я, иногда, отлаживаю "пожатый/оптимизированный" код в AVRStudio. Для этого достаточно в ИАР в меню Project->Options... зайти на вкладку C/C++ Compiler->Output и поставить галку в Generate debug information... И все прекрасно отлаживается.


--------------------
Go to the top of the page
 
+Quote Post
vesago
сообщение Nov 4 2007, 13:56
Сообщение #3


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Расстановка точек и перепрошивка кристалла - разные вещи. Вообще в начале сеанса отладки можно грузить образ в кристалл, а можно поставить галку и код не будет грузиться - будет цепляться к старому. Если есть различия, выдаст предупреждения. В общем - смело берите дракона и приобщайтесь к благом который он дает, в том числе и параллельное программирование. Из яра транслируйте в студию через уброф8 и к ней цепляйте дракона.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 4 2007, 14:34
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ivainc1789 @ Nov 4 2007, 16:38) *
Налицо проигрыш при отладке, т. к. получается что отлаживаем одно, а окончательно прошиваем другое.

И отладочный вариант, и соптимизированный должны работать одинаково.

Цитата
Поправьте, если я не прав.

Да и драгону все равно какой код заливать.

Цитата
С другой стороны, как отлаживать с Драконом?

При запуске отладки, программа остановится на входе в main(). Можете ставить точки останова, можете не ставить. Остановить ход выполнения программы и посмотреть состояние переменных/памяти/ регистров, а также добавить/удалить точки останова можно в любой момент не прерывая сеанса отладки.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Nov 4 2007, 16:31
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(prottoss @ Nov 4 2007, 16:52) *
Или я не до конца понимаю, о чем Вы говорите или Вы не знаете, о чем говорите smile.gif . Я, иногда, отлаживаю "пожатый/оптимизированный" код в AVRStudio. Для этого достаточно в ИАР в меню Project->Options... зайти на вкладку C/C++ Compiler->Output и поставить галку в Generate debug information... И все прекрасно отлаживается.


Студия не поддерживает уровень оптимизации выше LOW. Об этом четко написано в документации.

Цитата
И отладочный вариант, и соптимизированный должны работать одинаково.


При условии что в оптимизаторе нет ошибок... А кто за это поручится... )

Цитата
Остановить ход выполнения программы и посмотреть состояние переменных/памяти/ регистров можно в любой момент не прерывая сеанса отладки.


Я так понял, грузим debug вариант прошивки через UBROF8 в Студию. Запускаем на выполнение. По-моему, единственная возможность остановить программу (чтобы взглянуть на переменные и регистры) - предварительно поставить точку останова, так? Иначе, что значит "...в любой момент..."?

Цитата
Расстановка точек и перепрошивка кристалла - разные вещи. Вообще в начале сеанса отладки можно грузить образ в кристалл, а можно поставить галку и код не будет грузиться - будет цепляться к старому.


Так сколько нужно ждать после установки/переустановки одной точки? Полная перешивка Меги16 на программаторе AvrUSB500 занимает 6 сек.

И еще. Что там за душещипательная история с ошибкой в схеме Дракона? У всех выходит из строя импульсный стабилизатор или большинство работает как есть?
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 4 2007, 16:38
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ivainc1789 @ Nov 4 2007, 19:31) *
Иначе, что значит "...в любой момент..."?

Ровно то и значит, в любой момент нажимаем кнопку Break (CTRL-F5) и проц останавливается.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 4 2007, 16:53
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(ivainc1789 @ Nov 5 2007, 00:31) *
Студия не поддерживает уровень оптимизации выше LOW. Об этом четко написано в документации.
Можете указать точно? Я в данный момент отлаживаю проект в IAR 4.10b, Release, Project->Options->C/C++ Compiler->Optimizations = Hight(Maximum optimizations), Speed

При этом AVRStudio прекрасно видит все переменные и показывает мне С-шный текст и скачет по операторам правильно smile.gif


--------------------
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 4 2007, 17:34
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ivainc1789 @ Nov 4 2007, 19:31) *
Студия не поддерживает уровень оптимизации выше LOW. Об этом четко написано в документации.
Не парьтесь насчет этого.
Единственная проблемма в AVRStudio это неправильный показ локальных переменных
при высокой степени оптимизации...
Но в регистрах всегда все правильно.
Цитата
При условии что в оптимизаторе нет ошибок... А кто за это поручится... )
Нету в оптимизаторах ошибок...., обычно нету
Неоптимальности встречаются... достаточно часто, но обычно не критичные...
Цитата
Я так понял, грузим debug вариант прошивки через UBROF8 в Студию.
Да причем она будет автоматически обновлятся в студии после каждой перекомпиляции
и код будет именно таким как в итоговом изделии...
Цитата
И еще. Что там за душещипательная история с ошибкой в схеме Дракона? У всех выходит из строя импульсный стабилизатор или большинство работает как есть?
Счас подумаю и отпишусь в соответствуещей ветке (если надумаю конечно....)
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Nov 4 2007, 19:37
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата
При этом AVRStudio прекрасно видит все переменные и показывает мне С-шный текст и скачет по операторам правильно smile.gif

Не парьтесь насчет этого.
Единственная проблемма в AVRStudio это неправильный показ локальных переменных


Ну, удивили... Может и мне попробовать? Просто несколько лет назад я поимел ситуацию, когда при высокой оптимизации Студия работала некорректно. Подробностей щас не упомню...

Цитата
Ровно то и значит, в любой момент нажимаем кнопку Break (CTRL-F5) и проц останавливается.


А какой в этом смысл? Останавливать то надо в определенные моменты. Видимо для того и нужны эти пресловутые точки останова. Хотя может быть смысл все же есть например при пошаговой отладке, когда инструкции выполняются раз примерно в секунду...
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 5 2007, 00:50
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ivainc1789 @ Nov 4 2007, 22:37) *
А какой в этом смысл? Останавливать то надо в определенные моменты. Видимо для того и нужны эти пресловутые точки останова. Хотя может быть смысл все же есть например при пошаговой отладке, когда инструкции выполняются раз примерно в секунду...

1. Остановили
2. задали точки останова
3. запустили программу дальше.

еще раз вернусь к началу:
Цитата
Расставляем точки останова и смотрим содержимое переменных? Насколько я представляю, любое изменение точек приводит к необх перепрошивки кристалла...

Нет это не так.
Точки останова можно снимать/устанавливать в момент когда проц остановлен не выходя из текущего сеанса отладки. Отстановить проц можно в любой момент нажав break.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Nov 5 2007, 07:17
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(ivainc1789 @ Nov 4 2007, 22:37) *
Ну, удивили... Может и мне попробовать? Просто несколько лет назад я поимел ситуацию, когда при высокой оптимизации Студия работала некорректно. Подробностей щас не упомню...


У меня иногда локальные переменные криво видятся. Больше вроде проблем не было.
Go to the top of the page
 
+Quote Post
vesago
сообщение Nov 5 2007, 08:53
Сообщение #12


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Собрали бы жтагайс, да на какой м16 испытали - вопросы сами сабой бы отпали. В общем работаете как в симуляторе студии например. Разница только в том, что вам надобно предварительно записать прошивку в кристалл (хотите жтагом, хотите программатором) и в том, что программа исполняется в кристалле. IDE посредством донгла получает из кристалла состояние ячеек памяти, периферии, программного счетчика и т.д. + полностью контролирует его (кристалла) работу. Захотелось вам посмотреть, допустим, как приходит байт в уарт, останавливаете программу, ставите бряк на входе в обработчик, пускаете программу. Как байи пришел, программа останавливается на нужной точке. Можно посмотреть что в соответсвующей пременной, можно подергать ногой, подправляя значение в регистре. В общем через жтаг вы становитесь Всевышним для кристалла.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Nov 5 2007, 19:07
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(vesago @ Nov 5 2007, 11:53) *
Собрали бы жтагайс


У меня большее хождение имеют "мелкие" чипы, поэтому более актуально dWIRE. Наверно это более медленный протокол по сравнению с JTAG? Сильно ли это заметно при отладке?

Цитата
можно подергать ногой, подправляя значение в регистре
Я еще пока не догоняю... Чтобы подергать ногой нужно код переписать, как минимум...
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 5 2007, 19:45
Сообщение #14


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ivainc1789 @ Nov 5 2007, 22:07) *
Я еще пока не догоняю... Чтобы подергать ногой нужно код переписать, как минимум...
Не, не надо,
нужно просто ткнуться в AVRStudio в нужный битик в нужном порту.
При работе JTAG все что видите на экране то и в реальных регистрах проца.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Nov 12 2007, 23:17
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Я обычно по старинке отлаживаю -- вывожу в ЮАРТ все, что меня интересует, и смотрю это на компе.
Отладочную инфу кладу в небольшой буфер, несколько десятков байт, откуда ее ЮАРТ вынимает и передает в комп. Поскольку ЮАРТ работает по прерываниям, то процесс передачи инфы практически не требует времени, т.е почти никак не сказывается на работе софта.

Понятно, что для того, что бы получить вывод отладочной инфы нужно написать соответствующий кусок проги. Дак ведь и это тоже не проблема! Этот кусок уже написан. Написан один раз и реально кочует с одного контроллера на другой с минимальными переделками. В процессе отладки, в нужной точке программы, я просто вызываю функцию debug() с аргуметом того, что хотелось бы увидеть. Понятно что каждый раз приходится переносить debug() в новое место. Но ведь время прошивки во флэшь новой версии занимает секунды. Ресурс флеши, конечно, вырабатывается... но, господа! Поделите стоимость микроконтроллера на гарантированное количество циклов стирания/записи, и вы поймете, что разговор-то ни о чем!

Это была преамбула. А амбула -- вот она. Ну есть у меня этот Драгон, ну и что с того? Лежит он сейчас на столе, и лапки к верху. (Не потому, что он издох. Хотя и это было, как многих. Там мелкосхему нужно выпаять, да проводок вместо нее запаять -- вот и весь ремонт!) Я сейчас занимаюсь одним проектом на меге256-ой. А драгон, оказывается, не умеет работать с такими кристаллами: ни запрограммировать, ни отдебажить.

Но самое-то печальное, я кажись понял, почему он стоит так дешево! С одной стороны его использование ограничено 32 КБайтами флеша в АВРах, а с другой -- самими-же микроконтроллерами, т.е. не все АВРки поддерживают ЖИТАГ. Иначе говоря, разнообразие поддерживаемых Драгоном типов не очень большое.

Вот и получается, что таньку2313 я дебажу по ЮАРТУ, мегу8 -- опять по ЮАРТУ, и мегу256... уже говорил. А других типов АВР я как-то в последнее время не использовал. Не доводилось. Т.е. как-то он (драгон) у меня не попер. Но может только у меня sad.gif А может это временное явление. Не знаю, не знаю. По крайней мере, я честно сказал какая тенденция у меня наблюдается.

А за идею сохранять отладочную инфу в ЕЕПРОМе -- спасибо. Как это я сам не догадался!? smile.gif Идея лежала вообще на поверхности. Сохранил, а потом программатором обратно считал... хм smile.gif


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
vesago
сообщение Nov 13 2007, 07:09
Сообщение #16


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Имхо отладка посредством уарта и светодиода сродни черчению на кульмане. В общем-то и жтаг и гонка отладочной инфы всего лишь инструменты. Применение их - дело вкуса и привычки. Все равно и там и там нужно анализировать ситуацию. А 256 мегу (может 2561?) дракон не задебажит - мк2 нужен.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Nov 13 2007, 15:36
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Ох не люблю я такого типа дискуссии...

[qoute]Имхо отладка посредством уарта и светодиода сродни черчению на кульмане.[/quote]

Ключевое слово -- ИМХО. Сравнение неудачное. Я не считаю, что ЛЭД -- это спродни кульману. Зачем мне вообще кульман, а тем более CAD-программа, если мне достаточно нарисовать пару транзисторов, чтоб коллеге объяснить принцип работы схемы. Зачем мне нужен ЖИТАГ, если пишу прогу для тайни?

Я еще раз скажу, если бы я писал прогу для мегу16, то наверное я бы все-таки взял Драгон, но поскольку пишу для мега2561... А до нее были Тайни2313, мега8 и другие, которые либо не имеют ЖИТАГа, либо имеют, но в то время у меня драгона не было. Впрочем, чего это я начал оправдываться?

Задним умом мы все крепкие smile.gif Так и я, когда покупал Драгон, знал про ограничение в 32К. Потом это успешно забыл. И вот недавно вновь совершил "открытие", когда мне принесли плату с мега2561.

Только что съездил, взял взаймы МК2. smile.gif


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
vesago
сообщение Nov 13 2007, 16:00
Сообщение #18


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Дракона я тоже прикупил летом под акцию атмела. Но так и не довелось попользовать. Хватает возможностей m128. Там я применяю самопальный айс. На ней и для более мелких отлаживаю.
Go to the top of the page
 
+Quote Post
Waso
сообщение Feb 19 2008, 08:58
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



Имеется STK500, пишу в IAR. Надо прошить. AVRstudio говорит что hex, сгенеренный IAR-ом имеет неверную контрольную сумму. Уже много разных хексов перепробовал - они одни и теже получаются и ошибка не уходит. Программа простейшая - ledchase, идущий с яром.

Неужели все транслируют в студию через ubrof8 а не напрямую hex??

И еще непонятна ситуация с отладчиками для авр. Я вот по первости игрался с AlgorithmBuilder-ом и был шчасслефф. Он умеет контролировать регистры проца (аля Жытаг), дописывая свой отладочный код и используя всего одну ногу, одну из тех что и для прошивки.
И вот пришла пора писать серьезные проекты - пересел на ИАР и незнаю как быть с отладкой, ибо настоящий JTAG держат не все AVR-ы...
Go to the top of the page
 
+Quote Post
OLEG_BOS
сообщение Feb 19 2008, 09:23
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639



Цитата(Waso @ Feb 19 2008, 12:58) *
.. AVRstudio говорит что hex, сгенеренный IAR-ом имеет неверную контрольную сумму.

Уже обсуждалось здесь smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 19 2008, 15:38
Сообщение #21


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Waso @ Feb 19 2008, 10:58) *
Имеется STK500, пишу в IAR. Надо прошить. AVRstudio говорит что hex, сгенеренный IAR-ом имеет неверную контрольную сумму. Уже много разных хексов перепробовал - они одни и теже получаются и ошибка не уходит. Программа простейшая - ledchase, идущий с яром.


Project->Options->Linker->Format->Other:
Output format: "intel-standard"
Format variant: "End only with :00000001FF"
Go to the top of the page
 
+Quote Post
Waso
сообщение Feb 20 2008, 02:27
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



О! Уже два варианта! biggrin.gif

Второй - в ветке OLEG_BOS:
Цитата("Schtirlitz")
Ставим в настройках линкера IAR -
Intel-extended, Format Variant: 32bit linear without entry point
после этого AVRстудия начинает проглатывать HEX файл из IARa.

Спасибо!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:05
Рейтинг@Mail.ru


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