IAR + AVR Studio

06/12/2009 - 23:34
 
Возьмем для эксперимента проект ring.rar. Он простой и в нем задействовано прерывание.
Открываем его в IARе.
Выбираем конфигурацию Debug.
Задаем настройки проекта  Project > Options  пункт Linker вкладка Output.
Снимаем галочку Override default, если она установлена.
Выбираем радио-кнопку Other, а в выпадающем списке Output Format > ubrof  8(forced)



Кликаем Ок, компилируем проект.
Если все прошло без ошибок, ищите в папке проекта > Debug > Exe файл ring1.dbg

Запускаем AVR Studio.
Откроется Project Wizard. Если не открылся – запускаем его вручную Project > Project Wizard.
Кликаем Open и указываем путь к файлу ring1.dbg.
Студия предложит сохранить файл ring1_dbg.aps в папке проекта. Соглашаемся.
Затем откроется окно выбора отладочной платформы и микроконтроллера – выбираем  AVR Simulator и ATMega8535
Жмем Finish.

Итак, проект открылся и уже запущен режим отладки.



   В центре экрана редактор кода. Желтая стрелка указывает на текущую выполняемую строчку программы. Сейчас она в начале функции main. С правой стороны – внутренности чипа – порты, таймеры, АЦП и т.п. Можно просматривать их значения, а также устанавливать по своему усмотрению.  С левой стороны – вкладка Processor. Вторая вкладка в этом окне – Project. Она отображает структуру проекта.

   Не буду вдаваться в подробности отладки в AVR Studio, остановлюсь только на нескольких моментах.

   Пошаговое выполнение программы происходит при нажатии кнопки F11 (Step Into) . Можно выполнять  программу на си, а можно на ассемблере. По умолчанию открыт сишный файл, ассемблерный открывается через меню View > Disassembler или с помощью иконки Toggle Disassembler Window.

    Step Into

    Toggle Disassembler Window

   Кнопка F5 (Run)  запускает выполнение программы в непрерывном режиме. Это имеет смысл, если в программе расставлены breakpoint`ы (точки остановки). Например, мы хотим проверить выполнение кода в прерывании таймера. Как до него добраться? Ставим курсор в начало прерывания и нажимаем F9 (Toggle breakpoint). Слева от курсора появится красный кружок, это и есть breakpoint. Запускаем программу в непрерывном режиме – F5. Программа будет выполняться до тех пор, пока не произойдет прерывание таймера.  

    Run

  Toggle Breakpoint

  Чтобы убрать breakpoint,  нужно поставить рядом с ним курсор и снова нажать F9. Все breakpoint`ы убираются нажатием на иконку Remove all Program Breakpoints.

  Remove all Program Breakpoints

   Можно запускать выполнение программы до курсора. Ставим курсор в нужное место и нажимаем Ctrl + F10 ( Run to Cursor).

  Run to Cursor 

   Переход в начало программы происходит при нажатии Shift + F5 (Reset).

    Reset

   В процессе отладки часто требуется наблюдать, как меняются значения переменных или регистров. Для этих целей в отладчике AVR Studio есть окно Watch. Чтобы его открыть, выберете View > Watch или кликните по иконке Toggle Watch Windows. Окно Watch представляет собой таблицу из 4-ех колонок: Name, Value, Type, Location. Имя, значение, тип и расположение в памяти соответственно.

  Toggle Watch Windows

   Добавить переменную в таблицу можно двумя способами. Кликнуть левой кнопкой мышки в первом столбце и в открывшеся поле ввести имя переменной.  Или выделить нужную переменную в окне редактора кода, навести на нее курсор и, удерживая левую кнопку мышки, перетащить переменную в окно Watch.  

   Также в AVR Studio есть окна для наблюдения за содержимым памяти (Data, EEPROM, I/O, Program, Register). Открывается в меню View > Memory Window или с помощью иконки Toggle Memory Window.

  Toggle Memory Window



   Наблюдение за ОЗУ может дать информацию о степени использования стека. Здесь есть один момент. Компилятор IAR использует 2 стека – RSTACK и CSTACK.
  RSTACK или return address stack – предназначен для сохранения адресов возврата при вызове функций, прерываний. Указателем стека адресов возврата является специальный регистр SP (Stack Pointer).
  CSTACK или data stack - для сохранения авто переменных в функциях, параметров функций. Указателем стека данных является регистровая пара YH:YL.
  Значения регистров SP и Y отображаются в AVR Studio с левой стороны на вкладке Processor.
  Размеры обоих стеков задаются в IARe  - Options > General Options > System.

   И последнее. Если вы попытаетесь изменить код программы из AVR Studio, у вас ничего не получится. Код программы нужно менять в IARe. Вносим изменения, компилируем проект и переключаемся в студию. Она тут же предложит вам обновить открытые файлы.

Comments   

# vasil 2009-12-07 15:42
Спасибо.
# Pashgan 2009-12-07 17:14
Пожалуйста ;-)
# Guest 2010-04-23 17:18
Огромное спасибо!!! а то я весь мозг себе вынул, но не смог сообразить как проект из иара перетащить в студию!
# Guest 2010-05-09 21:13
Где-то в инете прочитал с AVR Studio на IAR это как пересесть в реактивный самолёт!
It is true?
# Pashgan 2010-05-10 12:30
Нет.
# DVF 2010-06-21 11:52
А как сменить частоту процессора во вкладке Processor -> Frequency? У меня для AT90CAN32 AVRStudio показывает 4Мгц. (
# Guest 2010-06-24 11:05
Открываем IAR.
Выбираем конфигурацию Debug.
Задаем настройки проекта Project > Options пункт Debugger вкладка Setup.
В выпадающем списке Driver выбираем,
например, JTAGICE и отлаживаем себе
не здоровье без AVR Studio.
# Guest 2010-06-24 12:10
Описанный в статье способ лишает возможности работать со штатным отладчиком IAR (то есть как лишает, надо менять тип выходного файла и перекомпилирова ть). Мой способ несколько отличается: на этой закладке (Linker->Output ) оставляем все без изменений, а на закладке Linker->Extra Output ставим флажок "Generate extra output file" и в ставших доступными строчках устанавливаем тип и имя файла для AVR Studio. При компиляции генерятся оба файла, и можно свободно отлаживаться в обеих средах.
# Pashgan 2010-06-24 18:48
Да, так тоже можно
# DVF 2010-06-30 13:03
Ну для отладки в AVR Studio понятно, что ставим формат ubrof8 в вкладке Extra Output и формируется файл *.dbg. А для IAR в вкладке Output с каким расширением должен формироваться файл? Чуть подробнее распишите настройки для этой вкладки, пожалуйста.
# Guest 2010-07-08 02:19
Quoting DVF:
Ну для отладки в AVR Studio понятно, что ставим формат ubrof8 в вкладке Extra Output и формируется файл *.dbg. А для IAR в вкладке Output с каким расширением должен формироваться файл? Чуть подробнее распишите настройки для этой вкладки, пожалуйста.


Настройки по умолчанию (как после создания нового проекта c заготовкой main (без совместимости с AVR Studio 4)
# Guest 2010-09-01 20:37
Хорошая статья, но вот графика совсем никакая... На редакторе кода ничерта не видно. Могу порекомендовать ACDSee 3.1, сам пользую для сайта. В отличие от фотожопа пережимает форматы без потери качества и ресайз картинок намного лучше - текст почти всегда хорошо читается. Встроенные компрессоры чудо - сегодня фотку с сотика объёмом в 470кб ужала в 12кб без видимой потери качества... До сих пор не пойму, как... Причём формат не менял - остался тот же jpeg.
Выложил сюда: http://narod.ru/disk/24381438000/ACDSystems.zip.html лицензии не надо. Попробуйте, не пожалеете.
# Guest 2010-09-01 20:39
Если выложите оригинальную картинку редактора, могу продемонстриров ать как она делает ресайз.
# Vector 2011-01-05 22:57
Этот формат (ubrof 8 ) можно использовать и в Proteus.
Вот тут по этому поводу пишут: http://kazus.ru/forums/showthread.php?t=16137
Пробовал, вроде работает.
И большущее спасибо автору этого сайта! (так бы и сидел в CodeVision с его мастером кода, если-бы не прочел Ваши статьи про IAR)
# Pashgan 2011-01-08 09:18
Да пожалуйста.
# Raspro 2011-01-23 16:31
В Proteus'e также работает и "HEX - intel std"
# Vector 2011-01-23 21:06
Работает, только отладка примитивная (только состояния регистров)
# anonymous 2011-09-12 14:14
Работает) А то как увидел симулятор-отлад чик в IARe аж поплохело
# Yura7897 2014-05-20 09:59
"Кликаем Open и указываем путь к файлу ring1.dbg."
В новой Atmel Studio формат файла изменился на .atsln может с этим связано, что через Open она теперь открывает список программных адресов и данные в них. И как теперь отлаживать?
# _Артём_ 2014-05-20 12:05
Quoting Yura7897:
И как теперь отлаживать?

В меню File есть пункт "Open file for debug" (назание примерное - пишу по памяти).
# Yura7897 2014-05-20 14:19
Попробовал. Ругается:
Could not create project associated with the object file that was opened for debugging.
И не создаёт.

У вас недостаточно прав для комментирования.