Внутрисхемная отладка
микроконтроллеров Microchip
Илья НИКИФОРОВ
Microchip Technology Inc. постоянно расширяет не только линейку PIC-микроконтроллеров, добавляя им все новые функции, но и не забывает об отладочных средствах. От удобства и возможностей отладки во многом зависят время разработки и успех конечного продукта. Наиболее универсален и практически незаменим на последней стадии разработки является внутрисхемный отладчик.
Внутрисхемная отладка программы, в отличие от программной симуляции, осуществляется в микроконтроллере, установленном непосредственно в разрабатываемое изделие, и программа выполняется с реальной периферией и сигналами, что обеспечивает учет всех особенностей устройства.
Среди внутрисхемных отладчиков/программаторов наиболее популярны программатор/отладчик разработчика PICkit2, внутрисхемный отладчик ICD-2 и внутрисхемный эмулятор REAL ICE. Все они могут работать под бесплатной средой разработки MPLAB IDE.
Внутрисхемный отладчик ICD-2
ICD-2 [1] стал классическим внутрисхемным отладчиком и программатором. Он способен запрограммировать большинство Flash-микроконтроллеров и поддерживает все, ставшие уже привычными, функции для отладки программ: разные режимы работы (в реальном времени и пошагово), расширенные точки останова (по совпадению адреса программного счетчика, по совпадению адреса/ значения чтения/записи в памяти данных, по вхождению в режим Sleep, по срабатыванию сторожевого таймера), комбинационные точки останова (И, ИЛИ, последовательное выполнение расширенных точек останова), возможность просмотра и модификации содержимого управляющих регистров, Flash, RAM и EEPROM, возможность измерения временных интервалов между точками останова и т. д. Более подробно функциональные возможности ICD-2 были описаны в [2].
Программатор/отладчик/ анализатор разработчика PICkit2
В среде MPLAB IDE PICkit2 [3] также является полноценным внутрисхемным отладчиком и программатором. В сравнении с ICD-2,
PICkit2 имеет ряд дополнительных функций, реализуемых в специальном windows-приложении PICkit2:
• удобный пользовательский интерфейс для отладки протокола UART (UART Tool);
• установка и отслеживание состояния портов (Logic Tool, Logic I/O);
• отслеживание формы сигналов разрабатываемого устройства (Logic Tool, Analyzer);
• автономный программатор;
• программирование микросхем памяти EEPROM, Keeloq и CAN-расширителей портов ввода/вывода;
• возможность использования нескольких PICkit2 для отладки одного устройства;
• калибровка питающего напряжения Vdd;
• интерфейс управления с командной строки. UART Tool [3] (рис. 1) позволяет использовать PICkit2 для передачи данных между отлаживаемым микроконтроллером (по выводам RX/TX) и компьютером по UART, что дает возможность быстро и наглядно настроить правильную работу модуля UART, а также отладить используемые протоколы.
UART Tool позволяет осуществлять обмен данными с заданной скоростью от 300 до 38 400 бод. Данные, которые нужно будет выслать на микроконтроллер, могут быть предварительно занесены в текстовые файлы, а принимаемые в ответ — занесены в лог-
файл, что значительно упрощает анализ и отладку работы протокола.
С помощью Logic Tool [4] (рис. 2) можно создавать воздействия и отслеживать состояние сигналов разрабатываемого устройства. Поддерживается два режима: Logic I/O — формирование нужных логических уровней и мониторинг состояния уровней цифровых сигналов; Analyzer — отображение формы до трех цифровых сигналов, с возможностью старта их записи по заданному условию (нарастание/спад фронта сигнала, низкий/высокий уровень), а также по комбинации нескольких условий.
Рис. 2. Отслеживание формы сигналов разрабатываемого устройства, Logic Tool — Analyzer
PICkit 2 Programmer-To-Go [5] позволяет, после записи в память PICkit2 программы «прошивки» микроконтроллера, программировать любой PIC, за исключением PIC32, нажатием одной кнопки, без использования ПК. Для работы в автономном режиме необходимо только питание по USB от компьютера или автономного USB-источника питания.
В оболочке PICkit2 каждому отладчику/программатору PICkit2 можно назначить собственное имя для идентификации [3], что позволяет использовать несколько PICkit2 для отладки одного контроллера. При этом, например, один может быть использован утилитой Logic Tool, второй — UART Tool, третий как отладчик и т. д.
PICkit2 имеет калибровку внутреннего преобразователя напряжения [4], что дает возможность выставить напряжение питания схемы Vdd в пределах от 2,5 до 5 В с точностью 0,1 В. Значение этого напряжения, так же как и идентификационное имя, хранится в энергонезависимой памяти PICkit2 и не требует установки при каждом подключении.
PICkit2 обладает отличным соотношением функциональность/универсальность/цена и является оптимальным решением для относительно несложной разработки.
Следует обратить внимание, что доступны схема и исходный код PICkit2, что позволяет разработчику сделать собственный программатор или освоить работу с USB-устройствами.
Внутрисхемный эмулятор REAL ICE
REAL ICE [6] также поддерживает все функции внутрисхемной отладки, но отличается от ICD-2 и PICkit2 значительно большим быстродействием и имеет функции внутрисхемного эмулятора, такие как:
• трассировка кода и данных, захват уровней на 8-битном порту REAL ICE;
• триггеры (отображение данных в окне отладчика watch в реальном времени, останов по условному внешнему событию);
• программные точки останова;
• интерфейс мониторинга и управления данными (DMCI).
Программная трассировка позволяет просмотреть историю изменения переменной, значения регистра или вывода контроллера в процессе работы устройства. Для этого в коде программы ставятся специальные метки: строка Log(id, x), где id — номер используемого канала, который определяется автоматически, x — переменная, значение которой фиксируется при трассировке. Компилятор автоматически вставляет в код служебные команды, обеспечивающие трассировку. Текущее значение трассируемой переменной будет заноситься в историю каждый раз, когда программа будет проходить через метку. Потом историю можно просмотреть в окне Trace.
Аппаратная трассировка доступна в высокопроизводительных 32-разрядных контроллерах PIC32 и позволяет просмотреть весь ход выполнения программы до текущего состояния. Всего может быть зафиксировано до 22 млн строк. С помощью аппаратной трассировки можно быстро и эффективно отладить код. Например, вкупе с обработчиком особых ситуаций (except handler), к которым относятся прерывание, ошибка адреса, ошибка шины, точка останова, запрещенная команда, ошибка сопроцессора, арифметическое переполнение, деление на 0 и т. д., трассировка позволяет определить ветку программы, выполнение которой привело к ошибке.
Восемь каналов триггеров (рис. 3) можно использовать для останова или сброса микроконтроллера по изменению состояния ло-
гического внешнего сигнала, а также для формирования сигнала нужного уровня на выходе одного из каналов в точке останова.
Аппаратные точки останова стали уже привычным явлением, но, в зависимости от контроллера, одновременно их можно поставить не более шести, чего зачастую недостаточно. На этот случай предусмотрены программные точки останова, в отличие от аппаратных они прописываются в код прошивки микрокон-
троллера, что требует перекомпиляции проекта. Их применение позволяет избавиться от эффекта проскальзывания, свойственного любому внутрисхемному отладчику (фактически микроконтроллер останавливается не в точке останова, а на несколько тактов команды позже, так как требуется завершение работы конвейера выполнения команды, и практически снимает ограничение на количество точек останова).
'И ’« *4*. (те** (че^МГ IN»nw '«К Ы*
|о**<ч ^]а I»' в Qi££ifl|[C!sSU м f А * f _____________► И Г» Ь fr 3 <D |____ Checbum: вх93са
UU HU*. 1-1 jl.v«4nj ксыл Хмбгэ icritwlt чн |
Рис. 4. Интерфейс мониторинга иуправления данными (DMCI)
Интерфейс мониторинга и управления данными (DMCI) позволяет строить графики изменения интересующих переменных программы или регистров в процессе работы устройства, а также принудительно задавать значения этих переменных во время выполнения кода (рис. 4).
Внутрисхемный эмулятор REAL ICE — незаменимое средство для разработки сложнейших устройств и систем. Он совместил в себе универсальность (поддерживает все новые PIC-контроллеры), близость к «железу», так как работа происходит с реальным устройством и фактическими сигналами, а также разумную стоимость внутрисхемного отладчика и целый ряд функций эмулятора. К последним относятся: почти неограниченное количество точек останова (ограничивается только количеством памяти контроллера) без эффекта проскальзывания, отображение значений переменных в реальном времени при исполнении программы, построение графиков изменения значения переменных в процессе работы устройства (DMCI) и, естественно, трассировка. Это открывает большие возможности при разработке и отладке конечного устройства. Если добавить к этому модульную конструкцию (дочерние модули LVDS передатчика и приемника позволяют производить отладку удаленных устройств, например, в климатической камере), автоматическое определение типа контроллера и возможность безопас-
ного горячего подключения к отлаживаемой схеме, то преимущества REAL ICE становятся безоговорочными.
Microchip постоянно представляет новые версии среды разработки MPLAB IDE, причем с каждым апгрейдом расширяется ряд поддерживаемых микросхем, добавляются новые функции. Способность внутрисхемных программаторов/отладчиков/эмуляторов обновлять свое ПО позволяет Microchip и в дальнейшем закладывать в PICkit2 и REAL ICE новые функции. ■
Литература
1. MPLAB® ICD 2 In-Circuit Debugger User.s Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/ 51331C.pdf
2. Сафронов А., Никифоров И. Внутрисхемный отладчик MPLAB-ICD2 // Компоненты и технологии. 2007, № 7.
3. PICkit. 2 Programmer/Debugger User.s Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/ 51553E.pdf
4. PICkit2 Logic Tool User Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/ Logic%20Tool%20User%20Guide.pdf
5. PICkit2 Programmer-To-Go User Guide,
http://ww1.microchip.com/downloads/en/DeviceDoc/
Programmer-To-Go%20User%20Guide.pdf
6. MPLAB REAL ICE In-Circuit Emulator User's Guide, http://ww1.microchip.com/downloads/ en/DeviceDoc/51616B.pdf