В процессе разработки и создания микропроцессорной системы рано или поздно наступает момент, когда она, наконец, воплощена в «железе» и начинает подавать признаки жизни. Однако в большинстве случаев эти признаки оказываются непредсказуемыми, система начинает жить «своей» жизнью. Многие программисты, наверное, согласятся, что каждая новая программа содержит ошибки. Отчасти поэтому новый МК на первых порах ведёт себя как «чёрный» ящик.
Для того чтобы облегчить процесс отладки систем, разработан целый класс инструментальных средств. Их основное назначение – сделать процесс функционирования отлаживаемого МК «прозрачным», то есть легко контролируемым, произвольно управляемым и модифицируемым по воле разработчика. Хороший профессиональный инструментальный комплекс дополнительно может предоставить разработчику множество сервисных услуг, тем самым существенно облегчая его труд, избавляя от рутинных операций.
К числу основных инструментальных средств отладки относятся внутрисхемные эмуляторы, программные симуляторы, платы развития (оценочные платы), мониторы отладки и эмуляторы ПЗУ. Существуют и комбинированные устройства и наборы.
Внутрисхемный эмулятор (ВСЭ) – программно аппаратное средство, способное замещать собой эмулируемый процессор в реальном устройстве. ВСЭ – наиболее мощное и универсальное отладочное средство.
Функционально ВСЭ делятся на стыкуемые с внешней вычислительной машиной (обычно это – IBM-совместимый ПК) и функционирующие автономно. Последние имеют собственные вычислительные ресурсы и средства ввода / вывода, поэтому при равных возможностях стоят значительно дороже первых, а при одинаковой цене существенно уступают им в функциональных и сервисных возможностях.
С отлаживаемой системой ВСЭ обычно соединяют кабелем со специальной эмуляционной головкой. Относительно недавно появились модели ВСЭ, у которых такая головка конструктивно совмещена с основным блоком и вставляется в отлаживаемую систему вместо МК. Если последний невозможно удалить (выводы впаяны в плату), использование ВСЭ допустимо при условии, что этот МК имеет отладочный режим, в котором все его выводы находятся в третьем (высокоимпедансном) состоянии. В этом случае для подключения ВСЭ используют специальный адаптер-клипсу. подсоединяемый непосредственно к выводам эмулируемого МК.
Как минимум, ВСЭ содержит отладчик, узел эмуляции МК, эмуляционную память и подсистему точек останова, В состав более совершенных ВСЭ могут дополнительно входить трассировщик, процессор точек останова, профилировщик (анализатор эффективности программного кода), таймер реального времени, программно-аппаратные средства, позволяющие читать и модифицировать ресурсы эмулируемого процессора «на лету», программно-аппаратные средства, обеспечивающие синхронное управление и необходимые для эмуляции в мультипроцессорных системах, интегрированную среду разработки.
Отладчик является своеобразным мостом между разработчиком и отладочным средством. Хороший отладчик обеспечивает загрузку отлаживаемых программ в память системы, вывод на монитор состояний и содержимого всех регистров и памяти (а при необходимости – и их модификаций), управление процессом эмуляции.
Более мощные отладчики (обычно их называют высокоуровневыми или High-LevelDebuggers) позволяют также:
- вести символьную отладку (благодаря тому, что отладчик, используя специальную информацию, поставляемую компилятором, «знает» адреса всех символьных переменных, массивов и структур). При этом пользователь может оперировать более приемлемыми для человека символьными именами, не утруждая себя запоминанием их адресов,
- контролировать и анализировать не только дизассемблированный текст, но и исходный текст программы, написанной на языке высокого уровня, и даже с собственными комментариями.
Такой отладчик даёт возможность пользователю одновременно контролировать ход выполнения программы и видеть соответствие между исходным текстом, образом программы в машинных кодах и состоянием всех ресурсов эмулируемого микроконтроллера.
Следует отметить, что высокоуровневый отладчик обеспечивает выполнение всех своих функций только в том случае, если используется кросс-компилятор, поставляющий полную и правильную отладочную информацию (не все компиляторы, особенно их пиратские версии, способны на это), и при этом формат её представления «знаком» отладчику.
Эмуляционную память используют в процессе отладки вместо ПЗУ разрабатываемой системы. Более того, она позволяет отлаживать программу в отсутствие реальной системы или её макета. Если необходимо внести изменения в отлаживаемую программу, достаточно загрузить новую или модифицированную программу в память эмулятора, а не заниматься перепрограммированием ПЗУ.
Существуют ВСЭ, которые позволяют пользователю «подставлять» эмуляционную память вместо ПЗУ не только целиком, но и поблочно (в некоторых моделях минимальный размер блока – 1 байт), в порядке, определённом пользователем. Для этого ему достаточно задать распределение памяти данных и памяти программ, в соответствии с которым процессор будет получать доступ и к содержимому ПЗУ в отлаживаемой системе, и к содержимому эмуляционной памяти ВСЭ, Такую память обычно называют памятью с возможностью мэппинга.
Трассировщик представляет собой логический анализатор, работающий синхронно с процессором и фиксирующий поток выполняемых инструкций и состояния выбранных внешних сигналов. Существуют ВСЭ, позволяющие трассировать не только внешние сигналы, но и состояния внутренних ресурсов МК, например, регистров. В таких устройствах используют специальные версии МК (эмуляционные кристаллы).
Процессор точек останова даёт возможность останавливать исполнение программы или производить иные действия (например, запускать или останавливать трассировщик) при выполнении заданных пользователем условий. В отличие от механизма обычных точек останова, процессор позволяет на аппаратном уровне формировать и отслеживать условия практически любой сложности, при этом эмулируемый процесс не выводится из масштаба реального времени. В некоторых моделях ВСЭ процессор точек останова может дополнительно использоваться для динамического управления трассировщиком.
Профилировщик (анализатор эффективности программного кода) позволяет по результатам прогона отлаживаемой программы получить информацию о числе обращений к различным участкам программы и времени, затраченном на их выполнение. Анализ статистической информации, поставляемой профилировщиком, даёт возможность выявлять «мёртвые» или перенапряженные участки программ и в результате оптимизировать структуру отлаживаемой программы.
Интегрированная среда разработки – это совокупность программных средств, поддерживающая все этапы разработки программного обеспечения от написания исходного текста программы до её компиляции и отладки и обеспечивающая простое и быстрое взаимодействие с программным отладчиком-симулятором и программатором.
Наличие в программной оболочке ВСЭ встроенного редактора, менеджера проектов и системы управления существенно облегчает работу разработчика, избавляя его от множества рутинных действий. Для него стирается грань между написанием программы, её редактированием и отладкой. Переход от редактирования исходного текста к отладке и обратно осуществляется «прозрачно» и синхронно с активизацией соответствующих окон. Менеджер проектов по мере необходимости автоматически запускает компиляцию и активизирует соответствующее окно программного интерфейса. Столь же просто можно перейти к отладке проекта с помощью имеющегося отладчика-симулятора или приступить к «прошивке» ПЗУ отлаженной программой,
Некоторые ВСЭ предоставляют пользователям и другие дополнительные возможности. Среди них особенно следует отметить одну, хотя и довольно специфическую, но в ряде случаев имеющую принципиальное значение, возможность построения многоэмуляторных комплексов, необходимых для отладки мультипроцессорных систем. Отличительная особенность такого комплекса – синхронное управление (с одного компьютера) несколькими эмуляторами.
В общем же случае возможности ВСЭ по контролю и управлению функционированием отлаживаемых устройств могут быть ограничены (например, некорректной обработкой прерываний в пошаговом режиме, запретом на использование последовательного порта и т.п.). Также необходимо помнить, что у каждой модели ВСЭ – свой перечень поддерживаемых МК и компиляторов.
Однако для большинства популярных МК разработаны ВСЭ, не имеющие ограничений по использованию ресурсов отлаживаемых кристаллов. Возможности такого ВСЭ проиллюстрируем на примере модели PICE-51 фирмы «Фитон».
PICE-51 – устройство, созданное с применением программируемых логических ИС (ПЛИС). Это позволило резко уменьшить размеры ВСЭ, минимизировать отклонения его электрических и частотных характеристик от характеристик эмулируемого МК и тем самым добиться максимальной точности эмуляции на частотах до 33 МГц при напряжениях питания от 3,3 до 5 В. Перезагружаемая аппаратная структура PICE-51 обеспечивает эмуляцию практически всех МК семейства MCS-51. Программная поддержка работает в среде Windows.
PICE-51 состоит из основной платы, сменного адаптера под конкретную группу МК и сменной эмуляционной головки также под конкретный тип корпуса. На основной плате собраны трассировщик и процессор точек останова, на плате сменного адаптера – эмулирующий процессор под конкретный тип МК. Эмуляционные головки обеспечивают установку прибора в розетки DIP и PLCC на плате пользователя. Питание осуществляется от блока с выходным напряжением +5 В (0,5 А) или от отлаживаемого устройства. Связь с компьютером – по гальванически развязанному каналу RS-232C при скорости 115 кБод.