Лек1 (1084885), страница 3
Текст из файла (страница 3)
Тем не менее, наличие законченного набора готовых программно-аппаратных средств, позволяющих без потери времени приступить к отладке прикладной системы, во многих случаях является решающим фактором.
1.10. Дебаггер-отладчик
Как указывалось ранее, создание простых эмуляторов ПЗУ и интеллектуальных эмуляторов ПЗУ, содержащих кроме памяти внешнюю вспомогательную программу монитор, возможно только с микроконтроллерами, имеющими средства для подключения внешней памяти программ. Для микроконтроллеров, не имеющих аппаратных средств расширения памяти программ, к которым относятся, например, микроконтроллеры семейства PIC нижнего и среднего уровня, отладка производится с помощью дебаггеров-отладчиков.
Дебаггер-отладчик выполняет функции эмулятора ПЗУ и монитора, т.е. функции интеллектуального эмулятора ПЗУ. Дебаггер-отладчик работает под управлением интегрированной отладочной среды. Он включается между персональным компьютером и демонстрационно-отладочной платой. Разработчик имеет возможность проверить работу микроконтроллера, установленного на плате, выполняя программу по шагам, в режиме анимации или пакетном режиме. Дебаггер-отладчик позволяет наблюдать за состоянием переменных, управляющих регистров и временем выполнения программы на экране монитора компьютера.
Отладка осуществляется на штатном серийном микроконтроллере, при этом отлаживаемая программа записывается в штатную FLASH – программную память микроконтроллера. Для того чтобы функционировал режим внутрисхемной отладки, в серийные образцы микроконтроллеров встраивают специальный механизм ICD (In-Circuit Debugger). При отладке этот механизм включается, а при функционировании прикладной программы в рабочем режиме автоматически выключается. Включение/ выключение механизм ICD инициализируется при записи конфигурационного слова в микроконтроллер.
По существу механизм ICD можно считать как некоторый вариант отладочного монитора, записанного непосредственно в микроконтроллер на этапе изготовления схемы.
Принцип работы механизма ICD следующий. Во время работы микроконтроллера при достижении точки останова или при пошаговой отладке вырабатывается немаскируемое прерывание, и управление передается подпрограмме отладчика (она незаметно для пользователя дописывается в последние ячейки памяти). Эта подпрограмма обеспечивает передачу в компьютер состояние ячеек памяти микроконтроллера, а также изменение их состояния и переключение режимов отладки по команде с компьютера. В результате часть ячеек памяти программ становится недоступной для отлаживаемой программы и резервируется для работы подпрограммы отладчика. Помимо этого при отладке недоступны:
-
Один или два уровня стека.
-
Два внешних вывода, через которые производится взаимодействие между персональным компьютером и микроконтроллером, установленном на плате.
-
Некоторая область памяти программ микроконтроллера.
Следует заметить, что эти ограничения вносятся лишь при включенном режиме отладки.
Если же программа очень большая и объём памяти программ критичен, в этом случае можно порекомендовать отлаживать программу частями, а затем отключить режим отладки и полностью запрограммировать используемый микроконтроллер. При этом снимаются все налагаемые отладчиком ограничения, он работает в режиме обычного программатора.
Обычно дебаггер-отладчик поддерживает режим программатора для микроконтроллеров с электрически стираемой памятью программ (FLASH) и может производить программирование непосредственно на плате.
Как правило, отладчик позволяет осуществлять следующие операции:
-
Загрузку отлаживаемой программы в память системы.
-
Вывод на монитор состояния и содержимого всех регистров и памяти.
-
Модификацию содержимого памяти и регистров.
-
Вести символьную отладку, благодаря тому, что отладчик “знает” адреса всех символьных переменных, массивов и структур (за счет использования специальной информации, поставляемой компилятором). При этом пользователь может оперировать более приемлемыми для человека символьными именами, не утруждая себя запоминанием их адресов.
-
Контролировать и анализировать дисассемблированный текст. Такой отладчик позволяет пользователю одновременно контролировать ход выполнения программы и видеть соответствие между исходным текстом, образом программы в машинных кодах, и состоянием всех ресурсов эмулируемого микроконтроллера.
В заключение следует отметить, что дебаггер-отладчик может быть реализован только для микроконтроллеров, имеющих встроенный специальный механизм ICD (In-Circuit Debugger).
В частности все микроконтроллеры семейства PICMICRO (PIC) фирмы Microchip Technology Incorporated оборудованы специальным узлом ICD (In-Circuit Debugger) на основе, которого можно реализовать функции дебаггера-отладчика.
1.11. Внутрисхемные эмуляторы
Внутрисхемный эмулятор программно- аппаратное средство, способное замещать собой эмулируемый процессор в реальной схеме в процессе отладки. Как минимум, внутрисхемный эмулятор содержит следующие функциональные блоки:
-
Узел эмуляции микроконтроллера (эмуляционный кристалл);
-
Эмуляционная память;
-
Отладчик;
-
Подсистема точек останова.
Более продвинутые модели могут содержать дополнительно:
-
Процессор точек останова;
-
Трассировщик;
-
Профилировщик (анализатор эффективности программного кода);
-
Таймер реального времени;
-
Программно-аппаратные средства, обеспечивающие возможность чтения и модификации ресурсов эмулируемого процессора “на лету”, т.е. в процессе выполнения программы пользователя в реальном времени;
-
Программно-аппаратные средства, обеспечивающие синхронное управление, необходимое для эмуляции в мультипроцессорных системах;
Основа внутрисхемного эмулятора является узел эмуляции микроконтроллера, т.е. эмуляционный кристалл (или группа кристаллов) от фирмы изготовителя микроконтроллеров. Эмуляционный кристалл содержит чип микроконтроллера, для отладки которого он создан, и ряд дополнительных микросхем (а главное, выводы!) для доступа к внутренней памяти, внутренним периферийным модулям и служебным регистрам. Добавив к эмуляционному кристаллу эмуляционную память для хранения отлаживаемой программы и интерфейсные схемы для связи c персональным компьютером, получим внутрисхемный эмулятор.
Эмуляционная память дает возможность использовать ее в процессе отладки вместо ПЗУ отлаживаемой системы, и более того, отлаживать программу без использования реальной системы или ее макета. При необходимости внесения изменений в отлаживаемую программу достаточно загрузить новую или модифицированную программу в память эмулятора, вместо того чтобы заниматься перепрограммированием ПЗУ.
Существуют модели эмуляторов, которые позволяют пользователю “подставлять” вместо ПЗУ эмуляционную память не только целиком, но и поблочно (в некоторых моделях минимальный размер блока может достигать одного байта), в порядке, определенном пользователем.
Трассировщик представляет собой логический анализатор, работающий синхронно с процессором и фиксирующий поток выполняемых инструкций и состояния выбранных внешних сигналов. Существуют модели внутрисхемных эмуляторов, которые позволяют трассировать не только внешние сигналы, но и состояния внутренних ресурсов микроконтроллера, например, регистров.
Процессор точек останова позволяет останавливать выполнение программы при выполнении заданных пользователем условий. Процессор точек останова позволяет формировать и отслеживать условия практически любой степени сложности, и при этом эмулируемый процесс выполняется в режиме реального времени.
Профилировщик (иначе анализатор эффективности программного кода) позволяет получить по результатам прогона отлаживаемой программы следующую информацию:
-
Количество обращений к различным участкам программы;
-
Время, затраченное на выполнение различных участков.
Анализ статистической информации, поставляемой профилировщиком, позволяет выявлять “мертвые” или перенапряженные участки программ и оптимизировать структуру отлаживаемой программы.
Внутрисхемные эмуляторы делятся на стыкуемые с внешней компьютером и функционирующие автономно. Автономные внутрисхемные эмуляторы имеют индивидуальные вычислительные ресурсы, средства ввода-вывода и индикации, не требуют для своей нормальной работы стыковки с какими-либо внешними вычислительными средствами, но за это пользователю приходится расплачиваться либо существенно более высокой ценой, либо снижением функциональных и сервисных возможностей по сравнению с моделями, стыкуемыми с компьютером.
На рис. 1.3 показан общий вид системы отладки с использованием внутрисхемного эмулятора, подключённого к персональному компьютеру. Внутрисхемный эмулятор, составляющий «сердце» этой системы отладки, фактически представляет собой специальное устройство, которое выполняет все функции микроконтроллера и заменяет его на плате приложения в процессе отладки.
Обычно стыковка внутрисхемного эмулятора с отлаживаемой системой производится при помощи эмуляционного кабеля со специальной эмуляционной головкой. Эмуляционная головка вставляется вместо микроконтроллера в отлаживаемую систему. Если микроконтроллер невозможно удалить из отлаживаемой системы, то использование эмулятора возможно, только если этот микроконтроллер имеет отладочный режим, при котором все его выводы находятся в третьем состоянии. В этом случае для подключения эмулятора используют специальный адаптер-клипсу, который подключается непосредственно к выводам эмулируемого микроконтроллера.
Рис. 1.3.Общий вид системы отладки с использованием внутрисхемного эмулятора
Для подключения внутрисхемного эмулятора к компьютеру используется параллельный или последовательный интерфейс. Через него в эмулятор загружается программа микроконтроллера и осуществляется управление ее выполнением с помощью специальной компьютерной программы.
Эмулятор обеспечивает работу приложения в реальном времени, поскольку способен функционировать на частоте микроконтроллера.
В качестве примера рассмотрим технические характеристики внутрисхемного эмулятора MPLAB ICE 2000, используемого при отладке микропроцессорных систем на базе микроконтроллеров семейства PICMICRO (PIC):
-
Работа под управлением универсальной интегрированной среды разработки MPLAB IDE.
-
Эмуляция при снижении напряжения питания отлаживаемой схемы вплоть до 2,0В.
-
Поддержка эмуляции на всем диапазоне тактовых частот (до 25–40 МГц) как от внешнего, так и от внутреннего тактового генератора.
-
Возможность программной установки тактовой частоты для внутреннего генератора от 32 кГц до 25–40 МГц.
-
Поддержка эмуляции всех корпусов PICmicro, включая DIP, SOIC, SSOP и MQFP/TQFP.
-
Подключение к параллельному (LPT) порту PC.
-
Небольшие габаритные размеры и малый вес.
-
Модульный дизайн, позволяющий разработчику приобретать только те блоки эмулятора, которые понадобятся ему для работы, экономя средства.
Конструктивно MPLAВ ICE 2000 состоит из центрального блока (Emulator Pod), соединяющегося с параллельным (LPT) портом компьютера, адаптера питания, модуля эмуляционного кристалла (Processor Module) с присоединённым к нему кабелем, эмуляционной головки (Device Adapter) под конкретный тип кристалла, и подключаемый к ней адаптера корпуса (Transition Socket), служащий для соединения эмулятора непосредственно с отлаживаемым устройством. По умолчанию подразумевается, что тип корпуса применяемого в отлаживаемом устройстве микроконтроллера — это DIP. Но последнее время практически во всех новых разработках применяют такие корпуса, как SOIC, SSOP и другие, монтируемые на поверхность печатной платы, с большим количеством выводов и малым шагом. Если типом корпуса применяемого микроконтроллера не является DIP, необходимо подключать MPLAB ICE 2000 к отлаживаемому устройству через адаптер корпуса (Transition Socket). Он специально разработан таким образом, чтобы обеспечить совместимость электрических сигналов микроконтроллеров с корпусами различных типов и состоит из двух частей: адаптера панели DIP, который соединяется с MPLAB ICE 2000, и впаиваемой непосредственно в отлаживаемую плату головки того типа корпуса, который используется в устройстве.
Эмулятор - дорогостоящее устройство, поэтому вряд ли имеет смысл покупать его для проведения единичных или эпизодических разработок.
Достоинства эмулятора очевидны - быстрый и легкий доступ к «внутренностям» эмулируемого микроконтроллера, высокая скорость обновления отлаживаемой программы (поскольку реально она записывается не в программную память микроконтроллера, а в ОЗУ, которое подменяет память программ).
Но у эмуляторов также есть ряд недостатков. Во-первых, это большая сложность и высокая цена. Во-вторых, отладка основана на работе эмуляционного кристалла, хотя и близкого по технологии к серийным образцам, но все же имеющего некоторые отличия. В-третьих, для каждого нового семейства (группы) микроконтроллеров нужен новый эмуляционный кристалл, что ведет к дополнительным материальным затратам. Ну и последнее, как правило, внутрисхемный эмулятор подключается через переходное устройство, которое должно предварительно припаяно на месте размещения микроконтроллера.
Рис.1.4.Структура внутрикристального эмулятора
1.12. Внутрикристальные эмуляторы
1.12.1. Структурная схема
Дороговизна и сложность применения внутрисхемных эмуляторов заставили искать новые средства отладки, обеспечивающие возможность проверки работоспособности разрабатываемой микропроцессорной системы в комплексе с подключенными к микроконтроллеру различных внешних периферийных устройств. на начальных этапах проектирования. Одним из вариантов такого подхода является создание на кристалле специального функционального узла, способного осуществить проверку функционирования микропроцессорной системы в различных режимах. Такие функциональные узлы получили название внутрикристальных эмуляторов. Префикс «внутри» в данном случае указывает на место размещение эмулятора, в то время как, тот же префикс в термине внутрисхемный эмулятор отражает функциональное назначение, хотя сам эмулятор находится вне кристалла микроконтроллера.
Проблеме построения внутрикристального эмулятора посвящён стандарт IEEE 1149, определяющий структуру и принцип функционирования внутрикристального эмулятора.