Мониторинг микропроцессорного ядра MicroBlaze

Мониторинг микропроцессорного ядра MicroBlaze с использованием логических анализаторов

Логические анализаторы обеспечивают возможность высокоэффективного анализа цифровых устройств, а также предоставляют гибкую систему условий запуска для проверки работы программного обеспечения. Такого рода измерения позволяют выявить события, приводящие к отказу устройства, оптимизировать программное обеспечение, а также расширяют возможности анализа взаимодействия аппаратных и программных частей.

Сразвитием микропроцессорных технологий и растущей популярностью встроенной кэш-памяти информация, полученная на входах и выходах процессора, не всегда дает полное его описание. Однако новые семейства логических анализаторов учитывают возможности перепрограммирования FPGA и позволяют быстро производить анализ микропроцессорных систем на базе ядра MicroBlaze.

С 1980 года разработчики использовали логические анализаторы для отладки встроенных систем с быстродействующими процессорами. Для этого требовалось создание дополнительной печатной платы и определенных типов соединителей для взаимодействия с измерительным оборудованием. Для 32-разрядных процессоров такое решение включало от 102 до 136 каналов адресной шины, шины данных или состояния. Многие логические анализаторы до сих пор требуют точного указания каналов процессора, слов состояния и информационных сигналов для тестируемых устройств. У каждого процессора существуют соответствующий конфигурационный файл и дизассемблер для работы с определенными топологиями плат. Программный дизассемблер конвертирует полученные данные в мнемоники команд процессора. В процессе отладки системы разработчик может осуществлять дальнейший мониторинг и отслеживание работоспособности процессора.

В конце 1990-х годов 32-разрядные встроенные процессоры стали интегрировать различные технологии и решения, что существенно усложнило процесс логического анализа таких систем. С уменьшением реального количества состояний, доступных для отладки, установка разъемов для подключения логических анализаторов стала непрактичной. Даже если группа разработчиков предусматривала возможность присоединения логических анализаторов для мониторинга, а микропроцессоры имели возможность подключения кэш-памяти, это не гарантировало выявления всех интересующих сигналов в системе. Отключение же кэш-памяти приводит к другой проблеме: мониторинг устройств, работающих на меньших скоростях, может не выявить отклонений, проявляющихся при работе в штатном скоростном режиме. К тому же, конвейеризация и исполнение команд с изменением последовательности (совокупность методов, позволяющих передавать команды в исполнительные блоки в порядке, отличном от предписанного программой) значительно усложнили процесс регистрации сигналов шины логическим анализатором. Не так давно совместная разработка компаний Agilent (www.agilent.com) и Xilinx (www.xilinx.com) в области логического анализа для технологий MicroBlaze позволила решить традиционные проблемы, возникающие при анализе и проверке микропроцессорных систем логическими анализаторами. Решение включает две важные составляющие:

• дизассемблер для систем MicroBlaze;
• подсистема мониторинга на базе ядра MicroBlaze (MicroBlaze Trace Core).

Особенности деассемблирования программного обеспечения для MircoBlaze

Во время разработки отладочной платы специалисты дизассемблируют команды микропроцессора, так как MicroBlaze позволяет выводить сигналы счетчика команд (PC_Ex) и командного цикла (Valid_Inst) на внешние выводы микросхемы. Разводка этих сигналов в рамках заданной топологии позволяет быстро присоединять логический анализатор с помощью различных типов пробников, таких как mictor, samteс или softtouch, либо посредством индивидуальных проволочных выводов. Благодаря возможности перепрограммирования, FPGA с ядром MicroBlaze могут быть сконфигурированы позднее, на этапе разработки микропроцессора. Достаточно заранее зарезервировать требуемое количество выводов, и разработчик получит возможность автономно конфигурировать подсистему мониторинга без каких-либо изменений в топологии печатной платы.

Дизассемблер Agilent восстанавливает исполняемую программу путем захвата адреса каждой исполняемой команды и соотнесения этого адреса с кодом машинной команды в файле OMF (object module format). Дизассемблер также может преобразовывать команды микропроцессора в соответствующие мнемоники системы MicroBlaze (рис. 1).

Программное обеспечение дизассемблера для систем MicroBlaze

Рис. 1. Программное обеспечение дизассемблера для систем MicroBlaze

Все логические анализаторы фирмы Agilent серий 1680/90 и 16800/900 поддерживают программное обеспечение дизассемблера для систем MicroBlaze и предоставляют до 32 каналов для мониторинга. Кроме того, эти анализаторы имеют окно корреляции исходного кода, что позволяет пользователю настраивать процесс измерений как на уровне команд ассемблера, так и на уровне исходного кода языка более высокого уровня.
Так как при отладке микропроцессорных систем обычно наблюдается дефицит внешних выводов, дизассемблер имеет встроенные возможности, которые позволяют уменьшить их количество. Хотя анализатор может отслеживать работу до 32 внешних каналов PC_Ex, на практике количество используемых каналов удается существенно сократить. Это достигается двумя путями. Во-первых, для подавляющего большинства микропроцессоров несколько старших битов адреса можно не отслеживать, так как они являются статическими и интереса не представляют. Таким образом можно получить сокращение в виде одного канала на каждый статический бит адреса счетчика команд. Эта информация задается в зависимости от конкретного применения. Во-вторых, можно не отслеживать несколько младших битов адреса, так как все команды имеют размер, равный четырем байтам (для 32-разрядных процессоров). Таким образом, вышеописанные приемы позволяют осуществлять мониторинг программ объемом 1 Мбайт, используя примерно 18 каналов. В то время как отслеживание состояний отдельных, неинтегрированных процессоров при работе с кэш-памятью не представляется возможным, логический анализатор может осуществлять мониторинг систем MicroBlaze со встроенным кэшем. Это достигается благодаря возможности FPGA выводить наружу сигналы ядра MicroBlaze, недоступные в обычном виде при конвейеризации. Логические анализаторы Agilent имеют окно корреляции исходного кода. С помощью символьных файлов формата ELF логический анализатор может связывать адреса с программами высокого уровня и командами, соответствующими этим адресам. Коды команд процессора хранятся в текстовых блоках ELF-файлов. При движении по списку команд ассемблера подсвечивается соответствующая строка исходного кода в верхнем окне. При построчной отладке программы высокого уровня логический анализатор одновременно показывает соответствующие мнемоники команд в нижнем окне. Щелчок правой кнопкой мыши на строчке исходного кода дает возможность пользователю установить запуск логического анализатора в момент исполнения данного кода.

Подсистема мониторинга на базе ядра MicroBlaze

Подсистема мониторинга на базе ядра MicroBlaze (MicroBlaze Trace Core или MTC) может и не использоваться в системах мониторинга микропроцессоров с применением логических анализаторов. Однако внедрение MTC позволяет сократить время и количество выводов при реализации процедур логического анализа (рис. 2). Подсистема мониторинга на базе ядра MicroBlaze является совместной разработкой компаний Agilen и Xilinx и применяется исключительно в рамках пакета Embedded Developer Kit (EDK). Разработчики могут добавлять ядро MTC в виде законченной схемы в свой собственный проект.

Подсистема мониторинга на базе ядра MicroBlaze

Рис. 2. Подсистема мониторинга на базе ядра MicroBlaze


Настраиваемые параметры ядра включают: возможности сокращения числа выводов, используя мультиплексную передачу с временным разделением каналов Time Division Multiplexing (TDM), различные варианты размещения выводов, а также процедуры стандартного ввода-вывода.

Подсистема мониторинга на базе ядра MicroBlaze сокращает время установки и начальные измерения от нескольких часов до нескольких секунд. Разработчик может подсоединить пробник к разъему, на который выведены сигналы ядра MTC, и через несколько секунд логический анализатор будет готов приступить к измерениям. Кроме того, технология сжатия числа выводов подсистемы MTC позволяет сократить количество каналов для мониторинга MicroBlaze примерно вдвое. Достоинства подсистемы MTC:

1. MTC коммутирует требуемые линии микропроцессора на базе ядра MicroBlaze на выводы микросхемы (предварительный синтез).
2. Подсистема использует мультиплексную передачу данных с временным разделением каналов (TDM), что позволяет сократить количество каналов в два раза. Два различных сигнала MicroBlaze можно объединить в сигнал, в котором нарастающему фронту тактирующего сигнала соответствует информация первого сигнала, а заднему фронту соответствует информация второго сигнала. Встроенный демультиплексор логического анализатора позволяет восстановить сигнал с разделением по двум независимым логическим каналам.
3. Подсистема MTC реализует технологию, позволяющую сократить время начальной установки системы с нескольких часов до нескольких секунд, исключить ошибки, которые могут возникнуть при трассировке печатной платы. Конфигурирование микропроцессора на базе ядра MicroBlaze можно осуществлять и на поздних этапах разработки, т. к. подсистема MTC избавляет от необходимости предопределенной трассировки печатной платы, ориентированной на заданную модель сигналов MicroBlaze ядра для различных типов пробников (mictor, samteс, softtouch). С помощью интерфейса JTAG логический анализатор посылает подсистеме MTC сообщение «автоматической настройки». В ответ подсистема выдает конфигурационную информацию на определенный вывод микросхемы. Логический анализатор отслеживает конфигурационную информацию и определяет, какой вывод MTC к какому каналу анализатора подключен. В результате «общения» с подсистемой MTC логический анализатор может определить, каким образом каждый вход MTC связан с выводом микросхемы. Используя установленные взаимосвязи, прибор определяет, каким образом устанавливается физическое взаимодействие между сигналами микропроцессора и соответствующими каналами логического анализатора. Процедура начальной установки последовательно производится для каждого вывода MTC.
4. Подсистема MTC полностью построена на триггерах и защелках, использующих многоступенчатую конвейеризацию (обычно 4 ступени) в целях уменьшения постороннего воздействия на временные характеристики устройства. Схема подключения ядра MTC к микропроцессору показана на рис. 3. Толстые линии голубого цвета показывают триггеры и соединения в составе MTC, включенные в микропроцессорное устройство.

Схема подключения ядра MTC к микропроцессору

Рис. 3. Схема подключения ядра MTC к микропроцессору

Так как в рассматриваемом устройстве используются дополнительные регистровые блоки помимо выходного триггера, программа трассировки может реализовать синхронизацию исключительно внутри ядра MTC, что, безусловно, уменьшает воздействие на временные параметры самого устройства. Подобные надстройки занимают очень незначительную часть кристалла. Подсистема MTC на базе микросхемы XC2V3000 использует приблизительно около 1% от возможного числа защелок и триггеров.

FPGA позволяют использовать для мониторинга высокопроизводительные и точные процессорные модули.
Дизассемблер Agilent для программируемых систем на базе ядра MicroBlaze предоставляет разработчикам широкие возможности для мониторинга исполняемых программ. Однажды приобретенная подсистема MTC фирмы Agilent, распространяемая в рамках пакета EDK (начиная с версии 8.1), позволяет сократить время начальной настройки измерений и исключить перепроектирование топологии печатной платы.

Джоэл ВУДВОРТ