Внутрисхемная отладка микроконтроллеров Microchip
Внутрисхемная отладка программы, в отличие от программной симуляции, осуществляется в микроконтроллере, установленном непосредственно в разрабатываемое изделие, и программа выполняется с реальной периферией и сигналами, что обеспечивает учет всех особенностей устройства.
Среди внутрисхемных отладчиков/программаторов наиболее популярны программатор/отладчик разработчика PICkit2, внутрисхемный отладчик ICD2 и внутрисхемный эмулятор REAL ICE. Все они могут работать под бесплатной средой разработки MPLAB IDE.
Внутрисхемный отладчик ICD2
ICD2 [1] стал классическим внутрисхемным отладчиком и программатором. Он способен запрограммировать большинство Flashмикроконтроллеров и поддерживает все, ставшие уже привычными, функции для отладки программ: разные режимы работы (в реальном времени и пошагово), расширенные точки останова (по совпадению адреса программного счетчика, по совпадению адреса/ значения чтения/записи в памяти данных, по вхождению в режим Sleep, по срабатыванию сторожевого таймера), комбинационные точки останова (И, ИЛИ, последовательное выполнение расширенных точек останова), возможность просмотра и модификации содержимого управляющих регистров, Flash, RAM и EEPROM, возможность измерения временных интервалов между точками останова и т. д. Более подробно функциональные возможности ICD2 были описаны в[2].
Программатор/отладчик/анализатор разработчика PICkit2
В среде MPLAB IDE PICkit2 [3] также является полноценным внутрисхемным отладчиком и программатором. В сравнении с ICD2, 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 отображение формы до трех цифровых сигналов, с возможностью старта их записи по заданному условию (нарастание/спад фронта сигнала, низкий/высокий уровень), а также по комбинации нескольких условий.
PICkit 2 ProgrammerToGo [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] также поддерживает все функции внутрисхемной отладки, но отличается от ICD2 и PICkit2 значительно большим быстродействием и имеет функции внутрисхемного эмулятора, такие как:
- трассировка кода и данных, захват уровней на 8битном порту REAL ICE;
- триггеры (отображение данных в окне отладчика watch в реальном времени, останов по условному внешнему событию);
- программные точки останова;
- интерфейс мониторинга и управления данными (DMCI).
Программная трассировка позволяет просмотреть историю изменения переменной, значения регистра или вывода контроллера в процессе работы устройства. Для этого в коде программы ставятся специальные метки: строка Log(id, x)
, где id
номер используемого канала, который определяется автоматически, x
переменная, значение которой фиксируется при трассировке. Компилятор автоматически вставляет в код служебные команды, обеспечивающие трассировку. Текущее значение трассируемой переменной будет заноситься в историю каждый раз, когда программа будет проходить через метку. Потом историю можно просмотреть в окне Trace.
Аппаратная трассировка доступна в высокопроизводительных 32разрядных контроллерах PIC32 и позволяет просмотреть весь ход выполнения программы до текущего состояния. Всего может быть зафиксировано до 22 млн строк. С помощью аппаратной трассировки можно быстро и эффективно отладить код. Например, вкупе с обработчиком особых ситуаций (except handler), к которым относятся прерывание, ошибка адреса, ошибка шины, точка останова, запрещенная команда, ошибка сопроцессора, арифметическое переполнение, деление на 0 и т. д., трассировка позволяет определить ветку программы, выполнение которой привело к ошибке.
Восемь каналов триггеров (рис. 3) можно использовать для останова или сброса микроконтроллера по изменению состояния логического внешнего сигнала, а также для формирования сигнала нужного уровня на выходе одного из каналов в точке останова.
Аппаратные точки останова стали уже привычным явлением, но, в зависимости от контроллера, одновременно их можно поставить не более шести, чего зачастую недостаточно. На этот случай предусмотрены программные точки останова, в отличие от аппаратных они прописываются в код прошивки микроконтроллера, что требует перекомпиляции проекта. Их применение позволяет избавиться от эффекта проскальзывания, свойственного любому внутрисхемному отладчику (фактически микроконтроллер останавливается не в точке останова, а на несколько тактов команды позже, так как требуется завершение работы конвейера выполнения команды, и практически снимает ограничение на количество точек останова).
Интерфейс мониторинга и управления данными (DMCI) позволяет строить графики изменения интересующих переменных программы или регистров в процессе работы устройства, а также принудительно задавать значения этих переменных во время выполнения кода (рис. 4).
Внутрисхемный эмулятор REAL ICE незаменимое средство для разработки сложнейших устройств и систем. Он совместил в себе универсальность (поддерживает все новые PICконтроллеры), близость к «железу», так как работа происходит с реальным устройством и фактическими сигналами, а также разумную стоимость внутрисхемного отладчика и целый ряд функций эмулятора. К последним относятся: почти неограниченное количество точек останова (ограничивается только количеством памяти контроллера) без эффекта проскальзывания, отображение значений переменных в реальном времени при исполнении программы, построение графиков изменения значения переменных в процессе работы устройства (DMCI) и, естественно, трассировка. Это открывает большие возможности при разработке и отладке конечного устройства. Если добавить к этому модульную конструкцию (дочерние модули LVDS передатчика и приемника позволяют производить отладку удаленных устройств, например, в климатической камере), автоматическое определение типа контроллера и возможность безопасного горячего подключения к отлаживаемой схеме, то преимущества REAL ICE становятся безоговорочными.
Microchip постоянно представляет новые версии среды разработки MPLAB IDE, причем с каждым апгрейдом расширяется ряд поддерживаемых микросхем, добавляются новые функции. Способность внутрисхемных программаторов/отладчиков/эмуляторов обновлять свое ПО позволяет Microchip и в дальнейшем закладывать в PICkit2 и REAL ICE новые функции.
Литература
- MPLAB® ICD 2 InCircuit Debugger User.s Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/51331C.pdf
- Сафронов А., Никифоров И. Внутрисхемный отладчик MPLABICD2 // Компоненты и технологии. 2007, № 7.
- PICkit. 2 Programmer/Debugger User.s Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/51553E.pdf
- PICkit2 Logic Tool User Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/Logic%20Tool%20User%20Guide.pdf
- PICkit2 ProgrammerToGo User Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/Programmer-To-Go%20User%20Guide.pdf
- MPLAB REAL ICE InCircuit Emulator User’s Guide, http://ww1.microchip.com/downloads/en/DeviceDoc/51616B.pdf