Алексей Рыбаков, Алексей Жданов

 

Можно без всякого преувеличения утверждать, что главными темами публикаций зарубежной прессы в области ПО для встраиваемых приложений были и остаются, во-первых, возможности использования Windows NT/CE во встраиваемых приложениях, в том числе реального времени, и, во-вторых, взрывообразный рост предложений в области CompactPCI-технологий. Всесторонне обсуждается процесс стандартизации различных “сопутствующих” расширений CompactPCI: для цифровой телефонии, “горячей” замены, а также средства организации тыльного ввода-вывода, ПО для поддержки SCADA-систем и систем создания виртуальных приборов.

Темы действительно интересные. Если говорить в общем, то речь идет о все ускоряющемся массовом внедрении современных офисных, настольных PCI-решений в сферу промышленных, встраиваемых и коммуникационных технологий. Фирмы - производители базовых промышленных компонентов, “завязшие” исключительно в простейших и явно умирающих технологиях, скажем, основанных на ISA-шине, начинают либо энергично перестраивать свой бизнес, либо, загоняя болезнь внутрь, “кормить” пользователей спекулятивной, довольно грубо сколоченной маркетинговой шелухой типа: “Промышленные PCI-решения менее помехоустойчивы, чем ISA+”, “На ISA можно без проблем поддерживать нормальный сервис в среде Windows NT/CE+” и т. д. и т. п.

Сверхзадача компаний, продлевающих агонию морально и технически устаревших, все менее конкурентоспособных “чистых” ISA-продуктов на фоне провальной стратегии долговременной технической политики, - выиграть время. Готовы спорить, что не более чем через два года (на самом деле - много раньше) подобные “ISA-компании” и их дистрибьюторы поклянутся в любви современным промышленным PCI, в частности CompactPCI-решениям. Мы с любопытством понаблюдаем, как артистично они это будут делать! Эта ситуация гарантирует всем читателям PC Week/RE интересное времяпровождение+ Особенно “весело” будет тем, кто привык слепо доверять сказкам бабушки Глафиры о преимуществах ISA-свечки перед PCI-электричеством.

Не успели высохнуть от типографской краски страницы отечественных компьютерных изданий, где сообщалось о требовании Intel и Microsoft исключить ISA-расширения из архитектуры новейших персональных компьютеров с отказом их сертификации на совместимость с ПО компании Microsoft, как подобные компьютеры уже появились на нашем рынке. Впечатляющий прогресс+

Масса других аспектов этого прогресса требует осмысления и оценки. Нас действительно ждут нескучные времена+    

Поговорим о Windows NT

Стремление использовать наиболее популярное настольное ПО на всех уровнях иерархии систем промышленного управления от корпоративной системы до промышленного контроллера - желание легко объяснимое и понятное. Учитывая действительно уникальный интеллектуальный потенциал отечественных софтверных специалистов, рассмотрим, оставляя за скобками вопросы типа “Что такое MS Windows NT/CE?”, некоторые конкретные продукты-лидеры, позволяющие использовать NT во встраиваемых приложениях.

Выбор необходимых компонентов Windows NT для планируемой встраиваемой системы

Несложный анализ показывает, что наиболее полный сервис для применения NT во встраиваемых приложениях, в том числе в приложениях реального времени, особенно на платформах настольных PCI-компьютеров, CompactPCI и VME, сегодня предоставляют, пожалуй, две компании: LP Elektronik и VenturCom.

Решения LP Elektronik, весьма красивые и остроумные, заключаются в совместном одновременном использовании Windows NT и стандартной операционной системы жесткого реального времени VxWorks на одном центральном процессоре. В основном они предназначены для создания мощных высокопроизводительных систем реального времени повышенной сложности и надежности.

VenturCom предлагает более простые решения, не ориентированные исключительно на приложения реального времени.

Двигаясь от простого к сложному, сначала давайте познакомимся с продуктами VenturCom. На них уже обратили самое серьезное внимание ряд крупных компаний - производителей аппаратуры и ПО: Microsoft, Motorola, PEP Modular Computers, VMIC, Inova Computers и многие другие.

Решения VenturCom привлекают своей полнотой: кроме собственно подсистемы реального времени для Windows NT предлагается Component Integrator (CI) - инструмент для создания и конфигурирования встроенных бездисковых Windows NT-систем, которые могут работать без дисплея и клавиатуры. Сочетание этого продукта с расширениями реального времени (RTX) позволяет создать компактную встроенную Windows NT-систему с возможностью обработки событий в реальном масштабе времени. Если же требование реального времени не является принципиальным, то для создания встроенных бездисковых целевых комплексов можно использовать только CI.    

Инструментарий для создания встроенной Windows NT

Даже если требования к ПО встроенной системы не предполагают ее повышенной надежности и высокой степени предсказуемости и, казалось бы, позволяют использовать Windows NT саму по себе, остаются другие требования, характерные для встроенных систем, которые нельзя реализовать стандартными средствами NT. Речь идет о возможности сконфигурировать систему, оставив в ней только необходимые компоненты, о создании образа системы, загружаемого из сети, с CD-ROM или флэш-диска, о существенном сокращении времени загрузки системы. Все это само собой разумеется, если применяются специализированные операционные системы реального времени, но является экзотикой для NT. И этот факт - серьезное препятствие для использования NT во встроенных системах, которое преодолевается с помощью Component Integrator.

Структурно Component Integrator представляет собой комплект программных продуктов фирмы VenturCom. Он помогает адаптировать Windows NT для работы во встроенных приложениях при таких специфических требованиях, как компактность системы и нестандартность аппаратных конфигураций. Пакет содержит логически законченный набор возможностей, предназначенный для создания целевой Windows NT, включая интеграцию системных компонентов с компонентами приложений, конфигурирование и построение целевой системы.

CI осуществляет декомпозицию Windows NT в иерархию компонентов, предоставляя пользователю возможность их индивидуального выбора. При этом целевая система может быть создана практически в любой конфигурации - от минимальной, поддерживающей работу единственного приложения, до полной NT Workstation или NT Server.

Пакет включает в себя следующие инструменты (см. схему 1):

- язык определения компонентов (Component Kit Definition Language - KDF);

- построитель компонентов (Component Creator - CC);

- дизайнер системы (System Designer - SD);

- построитель целевой системы (Target Build Engine - TBE);

- набор компонентов для встроенной системы (Embedded Component Kit - ECK);

- расширения реального времени (RTX).    

Функциональные возможности Component Integrator

- Интеграция. Component Integrator поставляется с полным набором компонентов Windows NT Workstation, который может быть дополнен расширением для Windows NT Server. Кроме того, в комплект поставки включены расширения Windows NT реального времени и набор для создания компактных встроенных систем (Embedded Component Kit). Из этих базовых компонентных наборов и строится целевая система. Новые возможности можно добавлять с помощью KDF и CC. В частности, в целевую систему легко можно добавлять такие дополнительные компоненты, как драйверы устройств третьих фирм, собственные приложения и готовые коммерческие приложения (COTS - Commercial-Off-The-Shelf). Процедура интеграции представляет собой включение необходимых для целевой системы программных компонентов в репозиторий и описание этих компонентов в базе знаний.

- Конфигурирование. Конфигурирование системы производится с помощью дизайнера (CI/SD), который по сути является интерактивной графической средой, предназначенной для создания целевой конфигурации Windows NT. Применяя CI/SD, пользователь может определить наборы необходимых конфигураций. Этот инструмент содержит интерфейс для создания, редактирования, конфигурирования и построения целевых систем.

Для каждой конфигурации CI/SD создает полную рабочую модель регистров NT и файловой системы. С помощью CI/SD можно полностью смоделировать конфигурацию целевой системы. При конфигурировании применяется панель управления CI/SD или операция редактирования регистров и прямых файловых манипуляций.

- Построение. Составной частью Component Integrator является TBE, который служит для построения загружаемых образов целевых систем. Он выполняет следующие функции:

- форматирование накопителей и создание целевой системы в соответствии с конфигурационными установками;

- размещение в целевой файловой системе файлов из репозитория;

- создание регистров для целевой Windows NT на основе модели регистров CI/SD.

В качестве источника компонентов при построении целевой системы репозиторий позволяет использовать дистрибутивные CD-ROM Windows NT, дистрибутивы третьих фирм и OEM-производителей, пользовательские наборы и т. д.

Построенную целевую систему можно автоматически обновлять с помощью NT Service Pack.

Для создания промышленной серии копий целевой системы TBE содержит средства автоматического присвоения серийных номеров.    

Embedded Component Kit

Пакет ECK, являясь отдельным продуктом, входит и в состав Component Integrator. Его включение в CI логически завершает список инструментов для создания целевой Windows NT, предоставляя набор специфических драйверов и компонентов, без которых трудно обойтись при создании компактной встроенной NT-конфигурации. Рассмотрим состав ЕСК.

Выбор параметров конкретных компонентов встроенной Windows NT

- Нуль-драйвер VGA. Позволяет загружать и инициализировать Windows NT при использовании аппаратных конфигураций без видеоадаптера и клавиатуры. Компоненты Windows NT, взаимодействующие c видеоадаптером, и подсистемы GDI/DDI будут нормально работать при отсутствии этого оборудования.

- Минимальная система. Содержит минимальный набор исполнительных модулей, динамических библиотек (DLL), драйверов, регистровой информации и пользовательский профиль (выводится) с полными правами доступа. Этот набор позволяет построить целевую Windows NT, работающую при минимальной аппаратной конфигурации. Так, в конфигурации без подключения к сети минимальные требования к аппаратуре очень скромны: 8 Мб ОЗУ, 10 Мб дискового пространства (флэш-диск). В конфигурации с сетью - 16 Мб ОЗУ и 20 Мб на флэш-диске.

- Поддержка флэш-дисков. Позволяет создавать минимальную систему для загрузки и запуска из флэш-памяти, объем которой не превышает 10 Мб. Очень существенная деталь! Особенно если вспомнить, что современный промышленный сетевой CompactPCI-контроллер Inova Computers для конфигурации процессор 586/133 МГц, 32 Мб SDRAM, FastEthernet, EIDE/FDD, шина USB, FireWire IEEE1394 и 10 Мб на флэш-диске стоит менее 2 тыс. долларов при гарантии 5 лет.

- Запрещение файла подкачки. Позволяет запрещать пользование файлом подкачки, увеличивая тем самым степень предсказуемости системы.

- Поддержка ПЗУ. Позволяет Windows NT загружаться и работать на накопителях, доступ к которым разрешен только на чтение, таких, как флэш-диск или CD-ROM.    

Расширения реального времени

Расширения реального времени (RTX) фирмы VenturCom стерли для Windows NT границу, разделяющую коммерческие ОС общего назначения и ОС реального времени. Эти средства добавляют к Windows NT специфическую функциональность.

Окно экспорта компонентов Windows NT из конфигурации в конфигурацию

Во-первых, появляются процессы реального времени, управляемые собственным планировщиком, который работает по всем правилам планировщиков реального времени, используя алгоритм вытеснения по приоритетам. Кроме того, эти процессы получают преимущество перед стандартными процессами Win32, вытесняя их. Процессы реального времени имеют совсем иную, чем в стандартных процессах Windows NT, степень надежности и специфическую функциональность.

Во-вторых, появляется возможность организовать взаимодействие процессов реального времени со стандартными процессами Win32.

Кроме того, процессы реального времени имеют свой собственный программный интерфейс (RTAPI) с развитым набором средств, характерных для API ОС реального времени.

При этом одно и то же приложение может использовать как стандартные функции Win32, так и специфические функции RTAPI, что позволяет выделять критические участки кода приложений Windows NT и контролировать время и надежность их выполнения.

Важно, что становится возможным контроль работоспособности и времени реакции системы. “Зависания” стандартных приложений Windows NT или крах системы не приводят к “зависанию” приложений реального времени. Кроме того, появляются такие возможности, как работа с быстрыми часами и таймерами высокого разрешения и прямой доступ к памяти и физическим устройствам.

В RTX включены следующие компоненты (см. схему 2):

- уровень аппаратных абстракций реального времени (Real-Time HAL);

- подсистема реального времени (Real-Time Subsystem - RTSS);

- программный интерфейс расширений реального времени (Real-Time Appilication Programming Interface - RTAPI);

- уровень аппаратных абстракций реального времени.

HAL реального времени подменяет стандартный HAL Windows NT. При этом VenturCom использует доступность исходных текстов (при подписании соответствующего соглашения с фирмой Microsoft), а также то, что HAL является программным компонентом самого низкого уровня при взаимодействии драйверов ядра с аппаратурой. Ведь именно на этом уровне происходит первоначальная обработка прерываний от таймера.

Используя возможности доступа к аппаратуре на низком уровне и перехвата почти всех аппаратных прерываний, VenturCom выстраивает на базе Real-Time HAL здание подсистемы реального времени Windows NT.

Важной особенностью этой реализации является то, что Real-Time HAL полностью совместим со стандартным HAL, более того, в том случае, если подсистема реального времени не используется, времена исполнения их кодов совпадают.

- Real-Time HAL включены следующие средства.

- Работа с прерываниями. Перехватывая аппаратные прерывания, он различает те прерывания, которые относятся к обработчикам реального времени и обработчикам Windows NT. Прерывания для обработки драйверами Windows NT отправляются по стандартной цепочке. При этом Real-Time HAL следит за тем, чтобы они не маскировались драйверами Windows NT более чем на 5 мкс, не позволяя тем самым пропустить критическое событие.

- Быстрые часы и таймерные службы. Необходимым атрибутом систем реального времени является возможность контроля события в течение очень короткого временно/го интервала. В то время как пользователь стандартной Windows NT этого лишен, Real-Time HAL предоставляет такую возможность.

Так, при измерении коротких интервалов времени он позволяет работать с генератором прерываний высокого разрешения (до 1 мкс), который синхронизован с системным таймером. Системный таймер, в свою очередь, может работать с периодом 100 мкс или быстрее, обеспечивая работу как стандартных таймерных служб, так и дополнительных, входящих в состав подсистемы реального времени.

- Поддержка подсистемы реального времени. Кроме того, Real-Time HAL содержит поддержку функционирования всей подсистемы реального времени. Так, на основе прерываний от таймера строится диспетчер процессов реального времени, Real-Time HAL отвечает за исполнение функций ввода-вывода подсистемы реального времени и т. д.

- Подсистема реального времени. Подсистема реального времени (RTSS) обеспечивает исполнение большинства функций и управление ресурсами RTX. С точки зрения реализации RTSS выглядит как драйвер Windows NT и исполняется в режиме ядра. Это позволяет достаточно простым способом устроить взаимодействие между процессами реального времени и процессами Windows NT. Подсистема RTSS обеспечивает исполнение функций RTAPI и содержит планировщик потоков реального времени с фиксированными приоритетами, число которых составляет 128. Она также содержит менеджер объектов, предоставляющий унифицированные механизмы использования системных ресурсов. К стандартному набору объектов Windows NT добавлены таймеры и обработчики прерываний.

- Программный интерфейс реального времени (RTAPI). Являясь расширением Win32, RTAPI содержит прежде всего набор функций, необходимых для управления устройствами. Интерфейс реализован в двух видах - как подмножество подсистемы реального времени (RTSS) и как динамическая библиотека (DLL), которую можно вызывать из Win32-приложений. RTAPI обеспечивает следующие возможности.

Управление процессами и потоками. Win32-совместимый интерфейс позволяет управлять, создавать, изменять приоритеты, профилировать и завершать потоки реального времени.

Управление объектами RTSS. Объектами RTSS являются: таймеры, обработчики прерываний и исключительных ситуаций (например, startup, shutdown, blue screen), потоки, процессы, семафоры, взаимные исключения (mutex), разделяемая память, почтовые ящики, консольный и файловый ввод-вывод, регистры. Унифицированное управление ими означает возможность их создания, закрытия и доступа к ним.

Взаимодействие процессов. RTAPI использует семафоры, взаимные исключения и разделяемую память для взаимодействия как потоков реального времени между собой, так и процессов реального времени с процессами Win32.

Окно создания и добавления новых компонентов встроенной конфигурации Windows NT

Управление памятью. Позволяет фиксировать приложения в памяти, запрещая их выгрузку в файл подкачки.

Доступ к физической памяти. Приложение пользователя получает возможность доступа к данным по физическим адресам памяти.

Управление прерываниями. Содержит функции, позволяющие назначать и запрещать обработчики прерываний, разрешать и запрещать прерывания.

Часы и таймеры. Управление часами и таймерами означает возможность создания, удаления, отмены, инициализации таймеров, а также назначения обработчиков прерываний.

Пример минимальной встроенной Windows NT без сети

Управление вводом-выводом. RTAPI предоставляет два способа управления устройствами ввода-вывода. Во-первых, приложения пользователя получают возможность непосредственного доступа к адресам портов ввода-вывода, что позволяет программировать работу устройств напрямую. Кроме того, внешним устройством могут управлять специальные (их несложно разработать) драйверы, для работы с которыми RTAPI предоставляет специальный интерфейс.    

Заключение

Описанный нами продукт фирмы VenturCom содержит достаточно полный набор средств для создания встроенной системы на базе Windows NT и написания приложений “жесткого” реального времени. Возможность работы в реальном времени в таком окружении была подтверждена тестами, которые совместно провели компании Advanced Technology Research, Hughes Consulting и General Motors Powertrain.

Конечно же появление продукта в результате “расширений” уже подразумевает некоторую искусственность конструкции и механизмов - и это очевидно при рассмотрении RTX, однако очевидно и то, что эта искусственность не приводит к тяжеловесности или большим неудобствам при использовании продукта. Более того, ясно, что использование расширений реального времени во многих случаях очень технологично, так как позволяет применять большое количество наработанных в Windows NT средств. И не случайно расширения Windows NT от VenturCom уже были использованы для создания некоторых программных продуктов, работающих в реальном времени (например, InControl фирмы Wonderware; www.rtsoft.ru); кроме того, на них остановили внимание многие производители встраиваемых промышленных CompactPCI-контроллеров. В частности, Inova Computers (www.inova-computers.com), PEP Modular Computers (www.pep.de) и многие другие компании взяли этот пакет в качестве базового ПО для создания самого широкого класса встраиваемых приложений реального времени с применением Windows NT.

С авторами статьи - генеральным менеджером компании RTSoft Алексеем Рыбаковым и начальником отдела системного ПО Алексеем Ждановым - можно связаться по телефону: (095) 742-6828 или по E-mail: rtsoft@rtsoft.msk.ru.    

Определения:

Репозиторий - полный набор файлов, которые будут использованы для создания целевой системы.

Шаблон конфигурации - описание целевой системы.

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