|
М. Еременко
Использование внутрисхемного дебаггера MPLAB-ICD2 для отладки схем с микроконтроллерами PIC18F фирмы Microchip
Давно прошли те времена, когда разработчику микроконтроллерных систем, перед тем как приступить, собственно, к проектированию устройства, приходилось потратить не одну неделю на разработку и изготовление собственных средств отладки. Сейчас уже ни для кого не секрет, что вложение средств в покупку специализированных отладочных комплектов с лихвой окупается качеством и быстротой проектирования электронных устройств, уменьшением количества необходимых специалистов, а главное - скоростью выхода устройства на рынок. Всё это в конечном счёте помогает серьёзно экономить средства.
Сейчас на рынке отладочных средств представлено огромное количество программаторов, дебаггеров-отладчиков, внутрисхемных эмуляторов, программных симуляторов и оценочно-демонстрационных плат отечественного и зарубежного производства. Поэтому в итоге выбор отладочного средства определяется лишь необходимыми функциональными возможностями и толщиной кошелька. Разумеется, чем дороже, тем функциональнее.
Но так ли уж необходимо выкладывать большие деньги за все эти перечисленные средства отладки? Можно ли за небольшие деньги получить одно устройство сразу с несколькими функциями? Оказывается, можно. Это так называемые внутрисхемные дебаггеры. Этот класс устройств выполняет сразу несколько функций: внутрисхемного программатора и внутрисхемного отладчика-эмулятора. О новом представителе устройств этого класса - MPLAB-ICD2 для микроконтроллеров PIC18F мы и расскажем в этой статье.
Что такое дебаггер и чем он отличается от эмулятора?
Внутрисхемный эмулятор - программно-аппаратное средство, способное замещать собой эмулируемый (отлаживаемый) микроконтроллер в разрабатываемой схеме. Это наиболее мощное и универсальное отладочное средство, работающее под управлением PC, упрощает подчас очень трудоёмкий процесс отладки и делает его удобным и наглядным для разработчика.
Этот класс устройств - наиболее мощный и функциональный. Основа эмулятора - это эмуляционный кристалл (или группа кристаллов) от фирмы – изготовителя микроконтроллеров. Эмуляционный кристалл представляет собой тот же самый чип микроконтроллера, для отладки которого он создан, но имеет дополнительные механизмы (а главное, выводы!) для доступа к внутренней памяти, периферийным модулям и служебным регистрам. Добавив к эмуляционному кристаллу интерфейс связи с персональным компьютером, память для хранения отлаживаемой программы, отладочной информации и точек останова, и разумеется, схемы управления, получим внутрисхемный эмулятор. Так же необходимо иметь программное обеспечение для персонального компьютера, под управлением которого внутрисхемный эмулятор и будет работать.
Достоинства эмулятора очевидны - быстрый и лёгкий доступ к “внутренностям” эмулируемого микроконтроллера, высокая скорость обновления отлаживаемой программы (поскольку реально она записывается не в программную память микроконтроллера, а в ОЗУ, которое подменяет память программ). Кроме того, только эмулятор позволяет работать с буфером трассировщика (память нескольких сотен последних реально выполненных микроконтроллером команд) и комплексными точками останова по сочетанию нескольких событий.
Но у эмуляторов также есть ряд недостатков. Во-первых, это большая сложность и высокая цена. Во-вторых, отладка основана на работе эмуляционного кристалла, хотя и близкого по технологии к серийным образцам, но всё же имеющего некоторые отличия. В третьих, для каждого нового семейства (группы) микроконтроллеров нужен новый эмуляционный кристалл, что ведёт к дополнительным материальным затратам. Ну и последнее — эмулятор не может выступать в качестве программатора для серийных изделий.
Внутрисхемный дебаггер так же, как и эмулятор, служит для внутрисхемной отладки микроконтроллеров, но принцип работы у него иной. Отладка осуществляется на штатном серийном микроконтроллере, при этом отлаживаемая программа записывается в штатную FLASH-программную память микроконтроллера. Для того, чтобы функционировал режим внутрисхемной отладки, в серийные образцы микроконтроллеров встраивают специальный механизм - ICD (In-Circuit Debugger). Для отладки этот механизм включается, а для серийных изделий жёстко выключен в конфигурационном слове микроконтроллера.
Принцип работы механизма следующий: во время работы микроконтроллера при достижении точки останова или при пошаговой отладке отрабатывается технологическое немаскируемое прерывание, и управление передаётся подпрограмме отладчика (она незаметно для пользователя дописывается в последние ячейки программной памяти). Эта подпрограмма выполняет функцию передачи через дебаггер в компьютер состояния ячеек памяти микроконтроллера, а также изменяет их состояние и переключает режимы работы по команде с компьютера. В результате, часть ячеек программы и регистров ОЗУ становится недоступной для отлаживаемой программы и резервируется для работы подпрограммы отладчика (табл. 1).
Таблица 1. Зарезервированные области памяти дебаггера MPLAB-IC2
Отлаживаемый микроконтроллер |
Зарезервированные области ОЗУ данных |
Зарезервированные области FLASH-программной памяти |
PIC18F6720/8720 |
0xEF4-0xEFF |
0x1FDC0-0x1FFFF |
PIC18F6620/8620 |
0xEF4-0xEFF |
0xFDC0-0xFFFF |
PIC18F452/252/458/258 |
0x5F4-0x5FF |
0x7DC0-0x7FFF |
PIC18F448/248/442/242 |
0x2F4-0x2FF |
0x3DC0-0x3FFF |
PIC18C601/801 |
0x3F4-0x5FF |
Нет |
Помимо этого, при отладке также становятся недоступными:
- 2 уровня стека (из 31);
- порты ввода/вывода RB6 и RB7 (для программирования микроконтроллера и управлением режимами отладки);
- вывод MCLR/Vpp (используется для программирования);
- режим Low Voltage ICSP Prog-ram-ming принудительно выключается.
Но следует заметить, что ограничения вносятся лишь при включенном режиме отладки. Если же программа очень большая, в этом случае можно порекомендовать отлаживать программу частями, а затем отключить режим отладки и полностью запрограммировать используемый микроконтроллер. При этом снимаются все налагаемые MPLAB-ICD2 ограничения, он работает в режиме обычного программатора.
Таким образом, с помощью MPLAB-ICD2 можно не только написать программу, отладить её на демонстрационной плате или же разрабатываемом устройстве, но и использовать ICD2 в качестве серийного программатора (в том числе, и внутрисхемного). А невысокая стоимость дебаггера делает его весьма привлекательным многофункциональным отладочным средством.
Возможности и варианты поставки
Дебаггер-отладчик MPLAB ICD2 фирмы Microchip работает с новейшими популярными FLASH-микроконтроллерами PIC18FXXXX. Кроме того, как обещают разработчики дебаггера, в ближайшем будущем он также будет поддерживать 16-разрядные контроллеры семейства dsPIC30F, а также популярное семейство PIC16F87X. Отладчик имеет возможность обновления программного обеспечения для поддержки новых появляющихся микроконтроллеров.
Работает MPLAB ICD2 под управлением бесплатной универсальной среды разработчика MPLAB IDE, которая периодически обновляется для поддержки новых микроконтроллеров и переиздаётся на CD-ROM, а также доступна на сайте www.microchip.com. Причём ICD2 работает как со старыми 16-бит версиями MPLAB IDE 5.xx (поддерживается работа только через RS-232), так и с новыми 32-бит версиями MPLAB IDE 6.xx (поддерживается как RS-232, так и USB). Рабочее окно среды MPLAB IDE 6.0 с примером отладки программы показано на рис. 1.
Рисунок 1. 32-бит среда MPLAB IDE 6.0
Среда имеет удобный графический интерфейс, встроенный менеджер проектов и текстовый редактор с поддержкой выделения операторов и директив цветом, встроенный ассемблер и симулятор, поддержу новейших dsPIC. Среда позволяет подключать компиляторы Си как производства Microchip, так и других фирм. MPLAB IDE работает со всеми отладочными средствами Microchip, в том числе и ICD2 дебаггером.
Поддерживается установка точек останова, просмотр и изменение памяти данных и EEPROM. Кроме того, ICD2 можно использовать как внутрисхемный программатор, при этом встроена защита от перегрузок по току и напряжению, есть диагностические светодиоды контроля состояния.
Дебаггер ICD2 поставляется (табл. 2) как в виде отдельного модуля с характерным красно-синем корпусом без источника питания (DV164005), с источником питания (DV164007), а также в составе комплекта с демонстрационной платой PICDEM 2 Plus и образцом FLASH- контроллера PIC18F452 (DV164006, рис. 2). Демонстрационная плата содержит 2ґ16 ЖКИ дисплей, температурный датчик, EEPROM-память, светодиоды, "пищалку", RS232-интерфейс и может быть приобретена отдельно (в этом случае номер для заказа DM163022). Все варианты поставки работают под управлением универсальной интегрированной среды MPLAB-IDE. Отличительными особенностями дебаггера MPLAB ICD2 являются:
- быстрая связь с компьютером через USB или RS-232;
- стильный запоминающийся корпус, похожий на хоккейную шайбу (рис. 2);
- три встроенных светодиода, характеризующих состояние дебаггера;
- встроенная система внутрисхемного программирования отлаживаемого микроконтроллера;
- обновление программного обеспечения;
- задаваемая точка останова;
- работа в пошаговом и режиме реального времени;
- просмотр и модификация содержимого управляющих регистров, FLASH, RAM и EEPROM;
- работа во всём диапазоне частот.
Таблица 2. Варианты поставки MPLAB-ICD2
Номер заказа |
Дебаггер |
USB-кабель |
RS-232 кабель |
Источник питания |
Демо-плата PICDEM 2 Plus (DM163022) |
Набор инструкций и CD-ROM |
DV164005 |
Есть |
Есть |
Нет |
Нет |
Нет |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Есть |
Нет |
Есть |
|
Рисунок 2. Дебаггер MPLAB-ICD2 и демо-плата PICDEM 2 Plus
Рисунок 3. Отладочная плата DEMOGAMMA1
Если дебаггер подключается к компьютеру через USB, то нет необходимости использовать дополнительный источник питания. Разумеется, что для питания отлаживаемой платы он всё-таки необходим. От отлаживаемой схемы дебаггер питаться не может. В случае питания дебаггера от внешнего источника питания (подключение через RS-232 или USB) дебаггер способен выдавать на выход напряжение 5 В, ток 150 мА, что позволяет запитывать маломощные отлаживаемые схемы.
Подготовка к работе и включение MPLAB-ICD2
Подготовка к работе сводится к ин- сталляции программного обеспечения (интегрированной среды MPLAB) на компьютер и инсталляции драйверов USB (если вы собираетесь работать с ICD2 через USB). Кроме того, нужно подключить модуль ICD2 к компьютеру при помощи прилагаемого кабеля, а также источник питания (при работе через RS-232) или к отлаживаемой плате (при работе через USB). Отлаживаемая плата соединяется с ICD2 через входящий в комплект короткий ленточный кабель с пластмассовыми разъёмами, напоминающий телефонный провод. Разумеется, на плате должен стоять ответный 6-контактный телефонный разъём, соединённый с отлаживаемым микроконтроллером. Второй вариант — использовать плату-переходник (header), на которой установлена колодка под PIC18F, телефонный разъём для подключения ICD и штыри-контакты для установки всей конструкции в отлаживаемую плату. В этом случае микроконтроллер устанавливается в отлаживаемое устройство через такой переходник, позволяющий подключить ICD2, не переделывая основную плату устройства. Переходник можно приобрести (номер для заказа AC162051) или изготовить самостоятельно.
В сборе должно получиться что-то похожее на рис. 2. Причём, поскольку использовано подключение через USB, источник питания необходимо подключить к отлаживаемой плате. Остаётся только подать питание и запустить среду MPLAB-IDE на компьютере.
Для того, чтобы начать писать программу, в интегрированной среде MPLAB IDE необходимо создать проект. При этом необходимо выбрать тип микроконтроллера и отладочного средства (в нашем случае, ICD2). После этого будет предпринята попытка установить связь компьютера с ICD2. Если появилось сообщение об ошибке, необходимо зайти в меню свойств ICD2 и проверить правильность выбора порта (COM или USB).
Теперь можно написать простейшую программу (например, мигание светодиодом) и откомпилировать её. Если программа откомпилировалась без ошибок, можно переходить к самому интересному — внутрисхемной отладке. Для этого необходимо загрузить откомпилированную программу в отлаживаемый контроллер, для чего кликнуть по надписи “Program”. Возможно, потребуется на вкладке параметров программирования поменять значения битов конфигурации (WDT, CP и др.). После успешной записи и сверки можно кликнуть по иконке сброса, при этом на исходном тексте программы появится серая полоска указателя текущей команды. Теперь можно запустить пошаговую отладку, выполнение в реальном времени, попробовать изменить содержимое ОЗУ/EEPROM, установить точки останова. Несколько коротких рекомендаций:
- если дебаггер успешно программирует кристалл, но при попытке сброса и пошаговой отладки выдаёт ошибку связи, проверьте соответствие типа генератора в конфигурационном слове (HS, XT, RC и так далее), реально используемом на отлаживаемой плате;
- скорость работы пошаговой отладки можно увеличить, ограничив количество обновляемых регистров ОЗУ при отладке;
- если ваша программа небольшая, есть смысл изменить конечный адрес программной памяти на вкладке опций программирования ICD2. В этом случае каждый раз при изменении программы будет переписываться не вся программная память, а лишь её часть, что уменьшит время программирования микросхемы;
- используйте соединение USB - скорость отладки возрастет;
- не забывайте обновлять "прошивку" ICD2!
Совместимость микроконтроллеров PIC16 и PIC18
Все PICmicro, выпускаемые в одинако- вых корпусах 28 и 40 выводов семейств PIC16F и PIC18F, pin-to-pin совместимы между собой (например, 40-pin — PIC16C64/67/74/77/874/877, PIC18F452/442/458/448 и 28-pin — PIC16C62/63/66/72/73/76/872/873/876, PIC18F252/242/248/258). Различаются они объёмом памяти и количеством встроенных периферийных устройств. Кроме того, семейство PIC18F имеет более совершенную архитектуру и расширенную систему команд. Несмотря на это, PIC18F “понимает” команды PIC16F, и программа может быть легко перенесена с PIC16 на PIC18 в случае нехватки производительности или объёмов памяти. Также возможен обратный процесс — разработка на более мощном и дорогом PIC18F, а затем переход на более дешёвый PIC16 в серийном изделии. Полная совместимость по выводам и частичная по системе команд существенно облегчают задачу перехода. Есть ещё один, самый простой вариант - с самого начала писать программу на языке Си, а затем лишь менять тип контроллера и компилировать программу.
В помощь разработчику: демонстрационно-отладочные платы PICDEM 2 Plus и DEMOGAMMA1
Очень часто основным фактором, влияющим на успех разработки, является скорость выхода изделия на рынок. Поэтому так важно начать разработку программы как можно раньше, ещё до того, как будет разработано и изготовлено “железо” макетного образца. Также в начале проектирования порой бывает неясно, какой вариант реализации того или иного узла предпочтительней, какой интерфейс передачи данных предпочесть и т.п. В этих и других подобных ситуациях на помощь программисту микроконтроллерных систем приходят отладочные платы. Это изделия, содержащие все необходимые компоненты для работы микроконтроллера (цепи питания, сброса, тактового генератора). Кроме того, на плате содержатся периферийные схемы и устройства (ЖКИ-индикатор, светодиоды, клавиатура, часы реального времени, периферийные микросхемы: CAN, RS-232, I2C, SPI и так далее), а также макетное поле, где при необходимости можно спаять свою часть схемы. Другими словами, имея такую плату, программист имеет всё необходимое для начала разработки и внутрисхемной отладки программы. Такие платы могут быть также рекомендованы для обучения программированию микроконтроллерных систем.
Отладочная плата PICDEMФ 2 PLUS (DM163022)
Эта демонстрационная плата фирмы Microchip (рис. 2) имеет ICD-разъём, ЖКИ-индикатор, звуковой излучатель и температурный датчик. PICDEM 2 Plus позволяет разработчику быстро приступить к созданию и отладке программ для 18-, 28- и 40-pin FLASH-микроконтроллеров PICmicro. В комплект входит демонстрационная программа для PIC18F452, демонстрирующая возможности ядра и периферии новых контроллеров PICmicro. Демонстрационная программа также может превратить плату в часы реального времени и комнатный термометр, причём показания часов и температуры выводятся на встроенный ЖКИ-индикатор. Встроенный динамик управляется непосредственно выходом ШИМ-микроконтроллера, что даёт возможность генерации различных звуков и мелодий. На плате есть встроенный RS-232 порт и макетное поле для монтажа собственных схем. В комплекте поставляется второй микроконтроллер PIC16F877, для которого можно разрабатывать и отлаживать программы.
Программное обеспечение, входящее в комплект поставки, позволяет разработчику разобраться в принципах написания программ, детально проанализировать алгоритмы работы, а затем использовать в своих собственных разработках. Кроме того, пользователи внутрисхемного дебаггера — отладчика MPLAB ICD2 имеют возможность “на лету” изменять работу программы по своему желанию.
Демо-плата PICDEM 2 Plus поставляется отдельно (номер для заказа DM163022), или же входит в комплект поставки MPLAB ICD2, в который также входит источник питания и кабели USB и RS232. В последнем варианте номер для заказа — DV164006.
Демонстрационно-отладочная плата DEMOGAMMA1
Демонстрационная плата DEMO-- GAM-MA1 предназначена для быстрого обучения работе с 40-pin микроконтроллерами Microchip семейств PIC16 и PIC18. Плата имеет монтажное поле для распайки макета и быстрой отладки собственного устройства. DEMOGAMMA1 содержит микроконтроллер PIC16F877-20I/P (установлен на панельке) со всей необходимой для работы обвязкой, а также обширный набор периферийных цифровых и аналоговых блоков. Используя периферийные модули по мере необходимости и управляя ими, на базе платы можно получить готовое функциональное изделие (остаётся лишь подключить датчики); или же просто обучаться программированию микроконтроллеров на Ассемблере или Си, а также навыкам использования различных протоколов и интерфейсов (CAN, LIN, RS232, RS485, I2C, SPI и др). Все интерфейсные сигналы выведены на разъёмы. Рекомендуется для использования в учебных лабораториях.
Плата предназначена для совместной работы с внутрисхемным дебаггером-отладчиком-программатором MPLAB ICD (DV164001, DV164002, DV164003) для работы с PIC16F87X и MPLAB ICD2 (DV164005, DV164006, DV164007) для PIC18F4XX. Для подключения отладчика на плате установлен специальный разъём, который также используется для внутрисхемного программирования. Плату DEMOGAMMA1 можно использовать совместно с любым внутрисхемным эмулятором (например, MPLAB ICE2000 производства Micro-chip). Плата работает от внешнего источника питания +7...12 В. Помимо микроконтроллера и разъёма ICD для программирования и отладки, плата содержит интерфейсы и разъёмы CEN-TRONIX, CAN, LIN, RS-232 и RS-485. В качестве индикации используются светодиод, семисегментный индикатор и "пищалка", для ввода — кнопка и переменный резистор. Предусмотрено подключение клавиатуры 4x4 и 2x16 LCD индикатора.
MPLAB-ICD2 удобно использовать для обучения программированию микроконтроллеров Microchip, демонстрации возможностей микропроцессорной техники, быстрого создания макетов приборов, кодеров/декодеров, аппаратных ключей, датчиков, систем сбора, обработки информации и так далее. А объединение в одном недорогом устройстве внутрисхемного отладчика и программатора наверняка понравится тем, кто хочет разобраться в тонкостях программирования микроконтроллеров PICmicro, не затратив большие деньги на средства разработки.
|