ДИНАМИЧЕСКИЕ ИНСТРУМЕНТАЛЬНЫЕ КОМПОНЕНТЫ

advertisement
ДИНАМИЧЕСКИЕ ИНСТРУМЕНТАЛЬНЫЕ КОМПОНЕНТЫ
Н.П. Постников
В статье предлагается архитектура инструментальных компонент встроенных систем, обеспечивающая
возможность динамического распределения функций инструментального комплекса между целевой
встроенной системой и инструментальной машиной. Специфика представленного подхода к организации
инструментальных компонент заключается в том, что они рассматриваются как независимые множества
данных и методов их обработки. В статье очерчивается класс встроенных систем, для которых возможно
применение динамических инструментальных компонент. Рассматриваемая реализация инструментария
была апробирована при разработке приборного контроллера на базе коммуникационного
микропроцессора фирмы AMD Am186CC [1].
Введение
Повышение сложности проектов, использование новых технологий, большие
объемы памяти, высокопроизводительные интерфейсы, распределенная структура,
использование сложных программных компонент усиливают требования к
инструментарию встроенных систем [2]. Сложившаяся в настоящее время ситуация
требует учета инструментальных аспектов на этапе архитектурного проектирования
встроенной системы, а собственно разработка инструментальных компонент может
оказаться нетривиальной задачей. Разнообразие инструментальных требований и их
специфика ставят перед разработчиком, на первый взгляд, взаимоисключающие задачи,
например, обеспечение развитой функциональности и минимизация используемых
ресурсов, полный доступ к ресурсам системы и обеспечение безопасности
функционирования системы.
Ниже предлагается способ организации инструментальных компонент и
взаимодействия
с
инструментальной
машиной,
позволяющий
создавать
масштабируемые инструментальные комплексы поддержки отладки современных
встроенных систем.
Описание проблемы
Задачи инструментального комплекса. Основной задачей инструментального
комплекса является предоставление разработчику системы (на этапе проектирования)
или обслуживающему персоналу (на этапе эксплуатации) возможности решения
инструментальных задач, среди которых:
• отладка системного и прикладного программного обеспечения целевой встроенной
системы;
• обновление программной компоненты встроенной системы;
• верификация и тестирование блоков и узлов;
• пассивный или активный мониторинг состояния системы;
• сбор и обработка отладочной информации с последующим ее анализом.
Сам инструментальный комплекс следует рассматривать как комплекс
программно-аппаратных средств, предназначенный для решения поставленных выше
задач. В настоящее время все большую популярность завоевывают инструментальные
средства на базе механизмов BDM и JTAG [3, 4]. Такие средства обеспечивают доступ
в целевую систему на уровне регистров / инструкций, что может быть использовано
для построения мощных интерактивных отладчиков (в традиционном понимании), но
неприменимо для обработки значительных объемов данных или проведения
автономного мониторинга целевой системы.
Наиболее распространенной архитектурой инструментального комплекса на
данном этапе развития встроенных систем является распределенная архитектура с
выделенной инструментальной машиной / консолью и специализированным каналом
связи. Варианты реализации в этом случае отличаются только распределением
83
инструментальных функций между целевой встроенной системой (резидентные
инструментальные
компоненты)
и
инструментальной
машиной
(внешние
инструментальные компоненты). Несомненно, описанная реализация имеет свои
преимущества – унификация инструментальной машины, потенциально малая
ресурсоемкость резидентных инструментальных компонент и др. Однако эта
реализация имеет значительный недостаток – наличие выделенного (физического или
логического) независимого инструментального канала передачи данных между целевой
системой и инструментальной машиной, связывающего резидентные и внешние
инструментальные компоненты. Большое количество функций и различный характер
передаваемых данных делают задачу выбора инструментального протокола непростой.
Кроме того, перенос инструментального канала на новый физический интерфейс может
привести к полному реинжинирингу существующей инструментальной машины и
протокола обмена.
Ядро инструментального комплекса. В рамках выбранной парадигмы
инструментального комплекса (резидентные и внешние компоненты, связанные
выделенным интерфейсом) предлагается способ организации инструментальных
компонент для определенного класса встроенных систем, позволяющий упростить
разработку резидентного инструментария и повысить эффективность повторного
использования инструментального комплекса. Как было сказано выше,
инструментальный комплекс (ИК) представляет собой множество инструментальных
задач, выполняющих обработку данных определенного типа. При этом очевидно, что в
конкретной целевой системе в конкретный момент времени активированы далеко не
все заложенные в нее инструментальные возможности.
Каждая из инструментальных задач является достаточно крупной, и ее можно
представить как набор более мелких инструментальных функций. Одни из них могут
быть выполнены только на борту целевой системы, другие – только на
инструментальной машине. Часть же инструментальных функций жестко не привязана
ни к целевой, ни к инструментальной системе. Жесткая “привязанность” той или иной
функции определяется в основном природой обрабатываемых ею данных,
ресурсоемкостью производимых при этом вычислений и требованиями к ресурсам
памяти. Исходя из сказанного выше, в качестве важной составляющей ИК можно
выделить собственно обрабатываемые данные. Одни данные должны располагаться в
целевой системе, другие на инструментальной машине. ИК в конечном итоге решает
определенную инструментальную задачу, функционально распределенную между
целевой системой и инструментальной машиной. При этом состав и распределение
элементов множеств между инструментальной машиной и целевой системой являются
непостоянными и зависят от таких факторов, как, например, доступные ресурсы
целевой и инструментальной машин, решаемая задача, производительность
инструментального канала связи. Критерием оценки качества (оптимальности)
конкретного разделения функций между внешними и резидентными компонентами
могут служить скорость работы, загрузка инструментального канала, минимизация
использованных ресурсов целевой системы и т.д. Конкретные способы расчета
оптимальных распределений выходят за рамки данной статьи.
Для создания ИК предлагаемой архитектуры необходимо решить следующие
задачи:
• удобное и гибкое распределение инструментальных функций между
инструментальной и целевой машинами;
• манипулирование отладочными данными инструментальной и целевой машин;
• активизация инструментальных функций;
• обмен “инструментальными” данными между целевой и инструментальной
машинами.
84
На рис. 1 представлена обобщенная структура ИК. В минимальной конфигурации
ИК состоит только из распределенного ядра, скрывающего в себе конкретный
инструментальный интерфейс. Сокрытие реализации инструментального канала в ядре
ИК является важным моментом, т.к. остальные (собственно инструментальные)
функции комплекса становятся независимыми от канала связи. Наращивание
функциональности ИК происходит благодаря возможности ядра создавать резидентные
компоненты и обрабатываемые ими данные. Динамическое создание резидентных
инструментальных функций (в узком смысле – инструментальных агентов, target agents
[5]) и данных позволяет значительно сэкономить ресурсы целевой системы и повысить
безопасность ее функционирования.
Инструментальная машина
внешние
компоненты
Целевая система
Ядро инструментального
комплекса
Инструментальный
канал
резидентные
компоненты
резидентные
данные
Рис 1. Структура инструментального комплекса
Видно, что часть ядра ИК функционирует в целевой системе, и это предъявляет
определенные требования к целевой системе для успешной реализации ядра ИК. На
этапе архитектурного проектирования встроенной системы достаточно обеспечить
реализуемость функций ядра ИК, чтобы впоследствии решать различные
инструментальные задачи.
Перечень функций ядра ИК
Регистрация
резидентных
инструментальных
компонент.
Функция
предназначена для динамического изменения состава резидентных компонент ИК.
Резидентная функция может быть зарегистрирована как со стороны инструментальной
машины, так и со стороны целевой системы. При регистрации функции необходимо
указать список ее формальных параметров.
Регистрация резидентных данных. Инструментальная машина, регистрируя
данные, указывает их тип. В дальнейшем инструментальная машина имеет
возможность обрабатывать данные с помощью резидентных функций. При
необходимости инструментальная машина может удалить зарегистрированные данные,
тем самым освободить ресурсы памяти целевой системы.
Определение фактических параметров резидентных функций. В общем
случае для решения инструментальной задачи необходимо обеспечить сложное
взаимодействие между инструментальной машиной, резидентными функциями и
резидентными данными (см. рис. 2). Ядро ИК предоставляет возможности
динамического изменения фактических параметров резидентных функций, назначения
нескольким функциям одних и тех же данных, создания нескольких экземпляров одной
функции с разными наборами фактических параметров (полезно при одновременном
решении нескольких инструментальных задач). Ядро ИК осуществляет контроль типов
параметров резидентных функций.
Обмен резидентными данными. Инструментальная машина в любой момент
имеет полный доступ к зарегистрированным резидентным данным.
85
Формальные
функции
A
B
Задача 1
Задача 2
A0
x0
Формальные
параметры
A1
y0
x1
x
B0
y1
y
Рис. 2. Взаимодействие резидентных данных и функций
Для создания работоспособного ядра ИК к целевой системе предъявляются
следующие требования.
1. Обеспечение выделенного (физического или логического) инструментального
канала.
2. Предоставление возможностей управления памятью данных. Для обеспечения
гибкой функциональности ИК необходимо существование механизма управления
ресурсами памяти целевой системы. В случае отсутствия такого механизма в
целевой системе его можно реализовать внутри ядра ИК, но при этом ресурсы
целевой системы будут использоваться неэффективно.
3. Предоставление возможностей управления памятью кода. При отсутствии таких
средств становится невозможно обеспечить динамику резидентной компоненты (в
том смысле, что инструментальный код всегда будет присутствовать в целевой
системе), но функциональность ИК по-прежнему может быть обеспечена, за счет
статических резидентных компонент.
4. Механизм запуска инструментальных функций. По требованию ядра ИК целевая
система должна обеспечить выполнение указанной инструментальной функции с
тем или иным приоритетом относительно целевой задачи.
Значительным преимуществом предлагаемой архитектуры ИК является
обеспечение доступа к различным структурам данных целевой системы (структуры
RTOS, данные системного менеджера памяти и т.д.). Представленная технология
позволяет реализовать механизм “инструментальных мостов”. Суть механизма
заключается в том, что для интересующих сугубо целевых функций создаются
простейшие функции-wrapper’ы, которые “импортируют” системную функцию в ИК,
тем самым превращая ее в резидентную инструментальную. Такие инструментальные
мосты могут быть с легкостью динамически “наведены” практически в любую точку
целевой системы и уничтожены после выполнения инструментальной задачи.
Реализация
Представленная архитектура ядра ИК была реализована при разработке
приборного контроллера на базе микропроцессора Am186CC (коммуникационный
процессор фирмы AMD на базе x86 ядра) [6].
В качестве инструментального канала использовался интерфейс USB [7], который
обеспечил высокую скорость передачи данных (до 600кБайт/c) и простоту организации
выделенного логического канала. Операционная среда целевой системы поддерживала
управление памятью, поэтому распределение ресурсов целевой системы удалось
обеспечить оптимальным образом. Имелась возможность одновременного
асинхронного запуска нескольких инструментальных функций с приоритетом фоновой
86
задачи целевой системы. Т.о. целевая система удовлетворяла всем требованиям для
реализации ядра ИК в полном объеме.
Заключение
Представленная в статье архитектура инструментальных средств позволяет
создавать мощные инструментальные комплексы. Простота использования, гибкость и
относительная нетребовательность к ресурсам целевой системы позволяют применять
этот подход для обеспечения инструментальной поддержки широкого класса систем.
Предлагаемая архитектура позволяет учесть большинство инструментальных
требований на этапе архитектурного проектирования и формально оценить
оптимальность распределения инструментальных функций между инструментальной
машиной и целевой системой.
Апробация описанной архитектуры ядра ИК показала его высокую
универсальность и эффективность при разработке достаточно сложных встроенных
систем.
Литература
1. MEC5091 – многофункциональный контроллер для встроенных применений. http://
lmt.cs.ifmo.ru/mec5091.html.
2. Постников
Н.П.
Вложенная
отладка
распределенных
систем.
http://embedded.ifmo.ru/up/uprs.htm.
3. The Nexus 5001 Forum™ Standard for a Global Embedded Processor Debug Interface.
http://www.ieee-isto.org/Nexus5001/standard2.html
4. Craig
A.
Haller,
Macraigor
System
Inc.
The
ZEN
of
BDM.
http://www.macraigor.com/zenofbdm.pdf
5. Glossary of Terms for Embedded Technology and Related Issues.
http://www.windriver.com/press/html/glossary.html
6. AMD.
Am186CC/CH/CU
User's
Manual.
http://www.amd.com/epd/processors/2.16bitcont/3.am186cxfa/a21914/21914.pdf
7. USB 2.0 Specification. http://www.usb.org/developers/data/usb_20.zip
87
Download