Статья посвящена вопросам применения VME-спецификации, ставшей одним из наиболее распространённых стандартов построения магистрально-модульных систем. В статье приводится краткий обзор функций шины VME. Особое внимание автор уделил специфике поддержки одноплатного компьютера с шиной VME в среде операционной системы жёсткого реального времени QNX Neutrino.
Свою историю шина 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.
Именно такая реализация и легла в основу модуля 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.
Автор – сотрудник
ООО «СВД Встраиваемые системы»
E-mail: m.kolesov@kpda.ru
Однофазные источники бесперебойного питания Systeme Electric
Почти все современные сферы промышленности, IT-инфраструктура, а также любые ответственные задачи и проекты предъявляют повышенные требования к питающей сети – электропитание должно быть надёжным, стабилизированным и обеспечивать бесперебойную работу. В данной статье мы рассмотрим решения по однофазному бесперебойному питанию от российской компании Systeme Electric. 28.12.2023 СТА №1/2024 885 0 0Однопроводный канал телеметрии по PLC
В статье рассматриваются методы реализации однопроводных каналов передачи данных по силовым электросетям в жилых зданиях, загородных и промышленных помещениях. В качестве информационного провода предлагается использовать проводник «нейтраль» электропроводки. Приводятся анализ возможных конфигураций каналов передачи данных этого типа и результаты экспериментальных проверок. Рассматриваются преимущества новых методов по сравнению с традиционными PLC и области возможного применения данной технологии. 28.12.2023 СТА №1/2024 941 0 0BioSmart Quasar 7 — мал да удал
Компания BIOSMART в пандемийном 2020 году весьма своевременно представила свой первый лицевой терминал Quasar (рис. 1) с диагональю экрана 10 дюймов. Уже в следующем, 2021 году был представлен бесконтактный сканер рисунка вен ладони PALMJET (рис. 2). Ну а в текущем 2023 году компания представила новую уменьшенную модель лицевого терминала Quasar 7 (рис. 3), который смог в компактном корпусе объединить обе передовые технологии бесконтактной биометрической идентификации. 28.12.2023 СТА №1/2024 904 0 0Открытые сетевые платформы — когда сети и вычисления в одном устройстве
Открытая сетевая платформа (ONP) – это мощное средство для реализации как простых, так и масштабных сетей, а также инструмент, который позволяет в одном высокопроизводительном устройстве реализовать целый вычислительный комплекс, объединяющий внутри себя коммутаторы, маршрутизаторы, межсетевые экраны, а также сам сервер обработки данных. Используя все преимущества данной архитектуры, компания AAEON разработала своё решение, сетевую платформу FWS-8600, на базе высокопроизводительных процессоров Intel Xeon Scalable 2-го поколения. В статье раскрыты детали и особенности ONP, характеристики FWS-8600, а также почему использование процессоров Intel Xeon Scalable 2-го поколения значительно увеличивает потенциал платформы. 28.12.2023 СТА №1/2024 867 0 0