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

 
 
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

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

 


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


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