Перейти к содержанию
    

Отладка программ для AVR

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

 

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

 

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

С другой стороны, как отлаживать с Драконом? Расставляем точки останова и смотрим содержимое переменных? Насколько я представляю, любое изменение точек приводит к необх перепрошивки кристалла... Но наблюдать ресурсы таким образом можно и способом 1.

Как-то с трудом представляю себе преимущества отладчика. Если есть опыт и желание поделиться, милости прошу.

 

И еще попутно вопрос по Студии. Есть ли возможность при старте заставить ее СРАЗУ располагать панели инструментов в одну строку? Сейчас у меня это происходит только при загрузке конкретного DBG файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Налицо проигрыш при отладке, т. к. получается что отлаживаем одно, а окончательно прошиваем другое.

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

 

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

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

 

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

При запуске отладки, программа остановится на входе в main(). Можете ставить точки останова, можете не ставить. Остановить ход выполнения программы и посмотреть состояние переменных/памяти/ регистров, а также добавить/удалить точки останова можно в любой момент не прерывая сеанса отладки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

И еще. Что там за душещипательная история с ошибкой в схеме Дракона? У всех выходит из строя импульсный стабилизатор или большинство работает как есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Иначе, что значит "...в любой момент..."?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

при высокой степени оптимизации...

Но в регистрах всегда все правильно.

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

Неоптимальности встречаются... достаточно часто, но обычно не критичные...

Я так понял, грузим debug вариант прошивки через UBROF8 в Студию.
Да причем она будет автоматически обновлятся в студии после каждой перекомпиляции

и код будет именно таким как в итоговом изделии...

И еще. Что там за душещипательная история с ошибкой в схеме Дракона? У всех выходит из строя импульсный стабилизатор или большинство работает как есть?
Счас подумаю и отпишусь в соответствуещей ветке (если надумаю конечно....)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Не парьтесь насчет этого.

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

 

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

 

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

 

А какой в этом смысл? Останавливать то надо в определенные моменты. Видимо для того и нужны эти пресловутые точки останова. Хотя может быть смысл все же есть например при пошаговой отладке, когда инструкции выполняются раз примерно в секунду...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой в этом смысл? Останавливать то надо в определенные моменты. Видимо для того и нужны эти пресловутые точки останова. Хотя может быть смысл все же есть например при пошаговой отладке, когда инструкции выполняются раз примерно в секунду...

1. Остановили

2. задали точки останова

3. запустили программу дальше.

 

еще раз вернусь к началу:

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

Нет это не так.

Точки останова можно снимать/устанавливать в момент когда проц остановлен не выходя из текущего сеанса отладки. Отстановить проц можно в любой момент нажав break.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

У меня иногда локальные переменные криво видятся. Больше вроде проблем не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собрали бы жтагайс, да на какой м16 испытали - вопросы сами сабой бы отпали. В общем работаете как в симуляторе студии например. Разница только в том, что вам надобно предварительно записать прошивку в кристалл (хотите жтагом, хотите программатором) и в том, что программа исполняется в кристалле. IDE посредством донгла получает из кристалла состояние ячеек памяти, периферии, программного счетчика и т.д. + полностью контролирует его (кристалла) работу. Захотелось вам посмотреть, допустим, как приходит байт в уарт, останавливаете программу, ставите бряк на входе в обработчик, пускаете программу. Как байи пришел, программа останавливается на нужной точке. Можно посмотреть что в соответсвующей пременной, можно подергать ногой, подправляя значение в регистре. В общем через жтаг вы становитесь Всевышним для кристалла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собрали бы жтагайс

 

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

 

можно подергать ногой, подправляя значение в регистре
Я еще пока не догоняю... Чтобы подергать ногой нужно код переписать, как минимум...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я еще пока не догоняю... Чтобы подергать ногой нужно код переписать, как минимум...
Не, не надо,

нужно просто ткнуться в AVRStudio в нужный битик в нужном порту.

При работе JTAG все что видите на экране то и в реальных регистрах проца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я обычно по старинке отлаживаю -- вывожу в ЮАРТ все, что меня интересует, и смотрю это на компе.

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

 

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

 

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...