Фильтр по тематике

Поддержка одноплатного VME-компьютера FASTWEL™ CPC600 в системах реального времени на базе QNX Neutrino

Статья посвящена вопросам применения VME-спецификации, ставшей одним из наиболее распространённых стандартов построения магистрально-модульных систем. В статье приводится краткий обзор функций шины VME. Особое внимание автор уделил специфике поддержки одноплатного компьютера с шиной VME в среде операционной системы жёсткого реального времени QNX Neutrino.

Михаил Колесов

Введение: общие сведения о шине VME

Свою историю шина VME ведёт ещё с 1981 года, когда в европейском отделении Motorola была предложена концепция периферийной шины для нового процессора 68000. С тех пор она претерпела немало изменений, но её базовые концепции остались прежними. Сегодня VME занимает нишу специализированных решений и не используется в персональных компьютерах, как, например, шина PCI. Решения на базе VME наиболее распространены в сфере ответственных и критичных к функциональной безопасности применений, в частности, в добывающей отрасли, на транспорте, в изделиях оборонно-промышленного комплекса. На системы, в которых при­меняется VME, как правило, распространяются повышенные требования по «живучести» и продолжительности срока эксплуатации, выполнение которых достигается решением следующих задач:

  • замена выработавших ресурс аппаратных средств объектовых ЭВМ с обеспечением полной совместимости новой техники с функционирующей системой;
  • обеспечение интероперабельности уже функционирующих изделий с новыми или обновляемыми подсистемами объектов эксплуатации;
  • обеспечение возможности повторного использования апробированных технических решений для применения в новых системах с целью повышения их надёжности и снижения стоимости разработки и верификации.

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

Итак, параллельная шина VME использует отдельные физические линии для каждого разряда данных, адреса и прерывания. Для данных и адреса предназначено по 64 линии, для запросов на прерывания – семь линий. Для каждой линии обработчик прерывания (обычно это CPU-модуль) получает ещё и так называемый вектор прерывания, по которому определяется устройство, сгенерировавшее прерывание. Для систем жёсткого реального времени важным обстоятельством является то, что линии запроса прерываний имеют приоритеты. Обработка векторов на одной линии также происходит в соответствии с приоритетами.

Способ обмена информацией по шине VME асинхронный, то есть на шине не существует сигнала общей синхронизации, как, например, на PCI. Логически все устройства шины VME делятся на три типа: ведущий, ведомый и арбитр. Ведущий инициирует циклы на шине, ведомый выполняет операции по команде ведущего, арбитр осуществляет контроль занятости шины. Устройства VME могут быть реализованы разными способами. Одной из возможностей является использование поддержки VME на уровне кристалла. Такое решение предлагает фирма Tundra Semiconductors. Вся логика работы VME реализуется в микросхеме, которая представляет собой мост PCI/X-VME. То есть со стороны PCI устройство VME выступает как стандартное PCI/X-устройство. Для сопряжения с VME делается необходимый согласующий «обвес». Такой подход позволяет использовать возможности VME в современных компьютерах на базе PCI/X.

Особенности поддержки VME-модуля FASTWEL™ CPC600 в QNX Neutrino

Именно такая реализация и легла в основу модуля FASTWEL™ CPC600 (рис. 1), выпускаемого российской НПФ «Доломант». На примере этого модуля расскажем о поддержке VME в промышленных компьютерах, функционирующих под управлением ОС РВ QNX Neutrino.

Модуль одноплатного компьютера CPC600 имеет интегрированную микросхему Tsi148 (Tundra Semiconductors) и обеспечивает все основные современные возможности шины VME: до 64 разрядов шины адреса и данных, поддержку всех трёх логических типов режима работы, DMA и пр.

Поддержка VME-модуля CPC600 в ОС РВ QNX Neutrino хотя и основана на классической QNX-технологии менеджеров ресурсов, но имеет некоторые интересные особенности.

Поскольку QNX Neutrino имеет модульную архитектуру [1], то менеджеры ресурсов, обеспечивающие поддержку аппаратуры, реализуются как обычная программа с функцией main(). Суть такой программы заключается в том, чтобы, с одной стороны, поддержать определённое оборудование и, с другой стороны, предоставить пользовательским программам POSIX-интерфейс ввода-вывода. Другими словами, обычно менеджер имеет два программных интерфейса: POSIX-интерфейс прикладного программирования (API) для пользовательских программ и системный интерфейс для драйверов устройств (рис. 2). Таким образом, на менеджер ресурсов возлагается большая часть логики работы, включающая учёт использования аппаратных средств, выделение памяти и прочие управленческие задачи. В то же время менеджер, как правило, не знает специфики реализации конкретного аппаратного устройства (регистры ввода-вывода, адреса регионов памяти и т.д.) и использует для доступа непосредственно к аппаратуре callback-функции, содержимое которых реализует драйвер конкретного устройства.

А пользовательским программам результаты работы выдаются через универсальный и общеизвестный POSIX-интерфейс [2].

Практически вся поддержка аппаратуры в QNX Neutrino реализована подобным образом, хотя есть и исключения. К таким исключениям относится и реализация поддержки VME. Менеджер VME (программа io-vme) самостоятельно реализует особенности функционирования чипа Tsi148 (моста PCI/X-VME) внутри себя и предоставляет программный интерфейс для драйверов VME-устройств (плат ввода-вывода, памяти и пр.). По сути дела, драйверы VME-устройств эквивалентны пользовательским приложениям на рис. 2. Драйверами же они называются потому, что в коде этих программ содержится аппаратно зависимая составляющая (адреса, регистры VME-устройства). Структурная схема менеджера VME представлена на рис. 3.

Менеджер поддерживает ряд основных возможностей чипа Tsi148 на платформе FASTWEL™ CPC600-02. На текущий момент в режиме мастера шины поддерживается вся доступная адресация: A16, A24, A32 и A64. Для ввода-вывода данных по шине VME контроллер использует так называемые окна – диапазоны памяти, через которые доступны VME-устройства. Имеется возможность одновременного использования всех восьми окон ввода-вывода через API менеджера в режиме мастера шины. Также можно установить любой режим передачи данных: за один цикл, блоком, мультиблоком, 2eVME, 2eSST – установка нужного режима зависит от количества передаваемых данных и представлена по возрастанию объёма. Допускается выбор режима доступа к шине как superuser или user.

Менеджер io-vme поддерживает обработку по прерываниям IRQ7...IRQ1 и векторам 0-63. Для подтверждения прерывания менеджером поддерживаются 8-битовые циклы подтверждения прерывания IACK.

Для минимизации времени задержки прерывания драйвер может подключить свою функцию к обработчику прерываний менеджера для очистки прерывания VME-устройства. Также можно задать опцию информирования драйвера импульсом о пришедшем прерывании. Для отладочных целей ведётся статистика всех выставленных прерываний и векторов.

Наиболее часто встречающаяся проблема при написании драйверов VME-устройств – это попытка доступа (чтения/записи) по несуществующему (незанятому) на шине адресу. Для фиксирования такой ситуации в менеджере реализована обработка исключения при доступе по несуществующему адресу.

Что касается возможностей API, предоставляемых менеджером разработчику драйверов, то можно выделить следующие особенности. Драйвер представляет собой разделяемую библиотеку (.so), которую менеджер подгружает при старте. Каждый драйвер запускается в отдельном потоке менеджера. Такая архитектура позволяет получить минимальные задержки по обмену данными и по реакции на прерывания. В текущей версии реализована одновременная работа 10 драйверов. Менеджер не накладывает никаких ограничений на алгоритм драйвера. Драйвер может использовать любые библиотечные функции, создавать новые потоки и пр. При этом драйверу доступен API для работы с шиной VME. API инкапсулирует специфику работы с мостом Tsi148 и тем самым позволяет разработчику драйвера сконцентрироваться на работе со своим VME-устройством. Используемый прикладной интерфейс является потокобезопасным, поэтому сразу несколько драйверов могут без проблем вызывать одинаковые функции регистрации у менеджера. При задании адреса на шине VME можно использовать любое значение от 0 до 264, в том числе не выровненное по границам страниц физической памяти. При задании размера окна можно использовать любое значение от 1 байт до 64 Мбайт, в том числе невыровненное. Все необходимые операции выравнивания и коррекции реализуются API менеджера.

Реализация расширенных возможностей модуля

Плата CPC600 на базе моста PCI/X-VME, реализованного посредством микросхемы Tsi148, имеет и многие другие функции: режим ведомого (slave mode), поддержку DMA, генерацию прерываний и т.д. Их реализация может быть добавлена в io-vme по требованию заказчика. В качестве примера драйвера VME-устройства в дистрибутив включён драйвер для платы цифрового ввода-вывода VMIO12 от Or Computers. Также включена инструкция на русском языке по установке и написанию VME-драйверов. Дистрибутив и техническую информацию можно получить, послав запрос по адресу support@kpda.ru.

Литература

  1. Операционная система реального времени QNX Neutrino 6.3. Системная архитектура: пер. с англ. – СПб. : БХВ-Петербург, 2005. – 336 с.: ил.
  2. Введение в QNX Neutrino 2. Руководство для разработчиков приложений реального времени. – СПб. : БХВ-Петербург, 2005. – 400 с.: ил.

Автор – сотрудник
ООО «СВД Встраиваемые системы»
E-mail: m.kolesov@kpda.ru

Комментарии
Рекомендуем

ООО «ПРОСОФТ» 7724020910 2SDnjeti7ig
ООО «ПРОСОФТ» 7724020910 2SDnjeti7ig