Программное обеспечение системы сбора данных установки ВЕС
Драйвер QBUS аппаратных PC МИСС


В системе сбора данных на основе стандарта МИСС для управления каркасом электроники используются контроллеры сектора типа ЛЭ-20И, ЛЭ-51, ЛЭ-83, для каркасов СУММА используются модули ЛЭ-20С. Контроллеры объединяются параллельной шиной QBUS, интерфейс к которой существует в ЭВМ Электроника-60. После замены Э-60 на IBM-PC, для связи с контроллерами сектора используются платы PC-QBUS в стандарте PC/AT (ISA) или PCI. Для доступа к этим платам в операционной системе Linux написаны драйвера устройств qbus, предоставляющие один и тот-же программный интерфейс, что позволяет использовать разные платы с одними и теми-же программами. Ввиду существенных различий между ядрами Linux 2.4 и 2.6 для них существуют отдельные версии.

Драйвер обслуживает до 2-х карт ISA-QBUS и 4-x PCI-QBUS, представляет собой загружаемый модуль ядра системы. Загрузка драйвера происходит через командный файл /etc/init.d/pci-qbus (в случае драйвера для плат PCI), который поддерживает стандартный интерфейс linux chkconfig. Скрипт создает 4 устройства /dev/pq[0-4] и два линка /dev/qbus0 и /dev/qbus1. Для плат ISA используется соответсвующий файл isa-qbus, создающий устройства /dev/iq[0-1].

Дистрибутивы Linuх на базе Debian используют несколько другое соглашение об уровнях системы, в отличие от RedHat, где уровень 5 является многопользовательским, Debian использует уровень 2. Для Debian следует немного подправить командный файл инициализации драйверов для работы с chkconfig.

Драйверу isa-qbus можно указать следующие дополнительные параметры:

По умолчанию драйвер заводит два устройства qbus с адресами 0x300 и 0x310, и прерываниями 10 и 11 соответственно. Диагностические сообщения отключены.

В отличие от ISA, устройства на PCI получают окна ввода/вывода динамически, в зависимости от положения платы на шине PCI, поэтому адреса портов указывать не надо. Драйверу pci-qbus можно указать следующие параметры:

В случае если эти адреса или прерывания уже приписаны к какому-либо устройству, драйвер выдаст ошибку в системный журнал.

Пользователю драйвер предоставляет следующие функции:

Если при чтении/записи произошел сбой(таймаут) то функции read/write возвращают 0 переданных байт.

Для упрощения работы с устройством в С++ написан класс QBUS (см. qbus.h).
Из командной строки можно пользоваться утилитой qbus (см. qbus.cc)

Исходный текст драйвера pci-qbus.c находится в каталоге ~roger/online/src/pci-qbus-2.6. Для сборки используется Makefile.


Last updated Apr-2008 by Solo