Микропроцессоры 2 лекция (1084889), страница 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, и впаиваемой непосредственно в отлаживаемую плату головки того типа корпуса, который используется в устройстве.