microchip

Внутрисхемный эмулятор REAL ICE

Внутрисхемная отладка программ.

Повышенные требования к качеству разрабатываемых приборов на основе микроконтроллеров требуют применения профессиональных отладочных средств. Для того чтобы контролировать процесс выполнения программы в микроконтроллере, который установлен в реальном изделии, применяются внутрисхемные эмуляторы.

Первое поколение эмуляторов строилось на основе эмуляционного кристалла для конкретного микроконтроллера. Эмуляцционный кристалл является, по сути, микроконтроллером, работу которого он призван эмулировать, с дополнительными выводами для доступа к шинам данных и адреса микроконтроллера. При отладке устройств с помощью эмулятора программа не загружается в память микроконтроллера, а выполняется из внешнего ОЗУ и ход программы полностью контролируется эмулятором под управлением среды разработки. Для повышения универсальности, эмуляторы, как правило, разрабатываются не под конкретный тип микроконтроллера, а под целый класс устройств и состоят из собственно эмулятора, процессорного модуля (обычно поддерживает какое-либо семейство микроконтроллеров) и адаптера устройств (определяет количество портов ввода-вывода и набор периферийных устройств). В некоторых случаях еще необходим переходник для конкретного типа корпуса отлаживаемого микроконтроллера. Таким образом, эмуляционная платформа состоит из нескольких модулей и для разных семейств необходим определенный набор модулей. Тем не менее, «классические» внутрисхемные эмуляторы обеспечивают разработчика практически всем необходимым инструментарием для качественной отладки программ. К примеру, эмулятор MPLAB ICE 2000 имеет следующие возможности:
- максимальная тактовая частота эмулируемого контроллера 25МГц;
- 65535 точек останова;
- буфер трассировки до 32Кб с сохранением в реальном времени лога адресов выполняемых команд, обращения к регистрам и ОЗУ, а так же состояние логических пробников;
- логические пробники;
- триггеры и точки останова могут быть настроены на единичное событие, множество событий или последовательность событий.
Однако, на все очевидные преимущества внутрисхемного эмулятора по сравнению с программными симуляторами, существуют и некоторые недостатки:
- достаточно высокая цена, т.к. а) приходится изготавливать специализированные эмуляционные кристаллы; б) за счет универсальности эмулятора приходится первоначально переплачивать, зато при необходимости отладки нескольких типов микроконтроллеров необходимо докупить только дополнительные процессорные модули и/или адаптеры;
- эмуляционный кристалл не является точной копией отлаживаемого контроллера, то возможны несоответствия в работе эмулятора и реального контроллера, т.е. необходимо дополнительно проверять работу устройства на «живом» контроллере.
Исходя из недостатков «классического» внутрисхемного эмулятора, следующая эмуляционная платформа строится на основе механизма внутрисхемной отладки, реализованного в каждом микроконтроллере. Т.е. каждый микроконтроллер в своем составе имеет дополнительные программно-аппаратные ресурсы, позволяющие передавать и принимать отладочную информацию в среду разработки. Преимущества такого подхода очевидны – программа отлаживается в том же самом микроконтроллере, который и будет работать в конечном изделии, и исключены ошибки дополнительных эмуляционных кристаллов. С другой стороны, нет возможности реализовать все возможности классического эмулятора, так как это приведет к увеличению стоимости микроконтроллеров.
Компания Microchip Technology Inc. для своих микроконтроллеров выпускает внутрисхемный отладчик ICD-2, который позволяет программировать микроконтроллеры, устанавливать точки останова (количество определяется типом отлаживаемого контроллера), комплексные очки останова: по обращению, чтению или записи определенного значения в какой-либо ячейку памяти; по последовательности выполнения условий.

Возможности внутрисхемного отладчика ICD-2.

Простая точка останова устанавливается в коде программы (правый клик на строчке кода, где нужно установить точку останова, и выбрать Set Breakpoint). Для разных контроллеров можно установить разное число точек останова. Для PIC10, PIC12, PIC16 одна точка останова, для PIC18F и PIC24F – до трех. При установке точки останова, в модуль теневой отладки микроконтроллера записывается адрес инструкции, при достижении которой, должен произойти останов программы. Модуль теневой отладки сравнивает текущей адрес памяти программ с целевым адресом. При совпадении генерируется немаскируемое отладочное прерывание, но ядро микроконтроллера задерживает переход на вектор отладочного прерывания до тех пор, пока текущая инструкция не закончит выполнение. Поэтому, если запущен режим выполнения Run, то программа остановится на следующей инструкции, это так называемый режим «проскальзывания» (у 16-и разрядных контроллеров «проскальзывание» на 2 команды). Установка точки останова на двухсловной инструкции вызовет «проскальзывание» на 2 команды. Остановки не произойдет при установке точки останова на команде перехода, в этом случае добавьте команду nop и установите точку останова на ней.  

Расширенные точки останова.
Новые 8-и разрядные контроллеры PIC18 и 16-и разрядные контроллеры имеют более усовершенствованный модуль отладки, который позволяет использовать расширенные точки останова.

  1. Остановка по значению в ОЗУ позволяет останавливать программу по :
    • обращению к переменной (запись или чтение);
    • записи или чтению определенного значения переменной;
    • записи или чтении определенного значения переменной несколько раз подряд;
  1. Задание последовательного выполнения условий точек останова (Sequenced Breakpoints).

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

Условия выполняются снизу-вверх. Т.е. сначала должно произойти (для данного примера) чтение/запись регистра, потом точка останова по адресу.

 

  1. Точки останова по условию И (ANDED Breakpoints).

Т.е. выполнение условия 1 и 2 в одно и то же время. Поэтому условия могут быть адрес И данные. Примеры использования:

 

  1. Секундомер (Stopwatch) позволяет измерить время между двумя выбранными точками останова. Можно задать чтобы программа не останавливалась при прохождении первой точки останова, а остановилась только при прохождении второй. При этом в окне вы увидите количество тактов программы, которое понадобилось для прохождения программы между первой и второй точками останова.

 

Внутрисхемный отладчик ICD-2 разрабатывался, в первую очередь, для 8-и разрядных микроконтроллеров. Увеличение быстродействия и дальнейшее усовершенствование модуля внутрисхемной отладки в новых 16-и разрядных микроконтроллерах потребовало разработки новой эмуляционной платформы REAL ICE

Дополнительные возможности отладки, реализованные в REAL ICE.

Триггеры – просмотр переменных в реальном времени (Real-time data capture trigger) и внешние триггеры (External Triggers).
Эмулятор REAL ICE имеет логический пробник, который позволяет установить триггеры (до 8-и) и останавливать или сбрасывать программу при изменении состояния логического пробника.
Просмотр переменной позволяет просматривать в окне Watch значения выбранных переменных в реальном времени.
Последняя функция очень удобна при совместной работе с Цифровым Интерфейсом Отображения и Контроля (DMCI), который позволяет отображать данные, полученные в реальном времени с триггера в виде графиков, оперативно изменять значения переменных внутри контроллера.

Программные точки останова.
Существует ограничение на число аппаратных точек останова – максимум 4 для 16-и разрядных контроллеров (для существующих моделей). Программные точки останова позволяют снять это ограничение и использовать неограниченное число точек останова.
Включение возможности установки программных или аппаратных точек останова: Debugger-> Settings… -> Configuration

Метки точек останова устанавливаются в исходном коде программе и для отработки установленных точек останова нужно перекомпилировать проект и запрограммировать микроконтроллер. При использовании программных точек останова нет эффекта проскальзывания, но нельзя совместно использовать программные и аппаратные точки останова.
Совместно с программными точками останова так же можно использовать захват и отображение переменных в реальном времени в окне Watch Window.

Трассировка кода позволяет просмотреть прохождение программы по участкам кода. Для такой возможности необходимо установить в нужных участках кода макрос __TRACE;
Проще всего это сделать путем правого клика мышкой на нужной строке кода и выбрать Insert Line Trace. При этом в код будет вставлен макрос.

После компиляции и запуска программы и останова можем в окне трассировки просмотреть какие участки кода и в какой последовательности выполнялись программой.

Аналогично трассировке кода работает запись лога изменения переменных (Log Selected Value) – в заданной точке программы захватывается значение выбранной переменной для отображения в буфере трассировки – позволяет просмотреть какие участки кода и в какой последовательности выполнялись программой и при этом какое значение в этот момент имела выбранная переменная.

Следует отметить, что со REAL ICE поддерживает стандартный 6-и проводный интерфейс связи точно такой же, как и в ICD-2 (2 вывода напряжения питания Vdd и GND, 2 вывода последовательного протокола CLK и DAT и 1 вывод напряжения программирования Vdd, последний 6-й вывод не используется). Поэтому, если вы применяли ICD-2, то никаких переделок со стороны отлаживаемой схемы не нужно. REAL ICE с “айсидишным” интерфейсом позволяет отлаживаться на скоростях до 15МИПС, а если отлаживаемый контроллер работает на больших скоростях, то потребуется плата скоростного драйвера. 

Возможность обновления программного обеспечения эмулятора REAL ICE позволяет компании Microchip добавлять новые функции в работу эмулятора. Из последних доработок это возможность передачи отладочной информации через интерфейс логического анализатора и по SPI интерфейсу при помощи высокоскоростного драйвера.

 

Отладочные средства / PICkit2 / ICD-3 / REAL ICE / Программное обеспечение

©2007 Гамма-Санкт-Петербург