# Глава 1: Знакомство с Driver Toolkit

В этой главе:

- Введение
    Предпосылки создания
    Назначение
    Состав и функции
    Связь с CACSD RTWin
- Включение драйверов в проект
    Необходимые условия
    Определение состава драйверов
    Преимущества драйверов Driver Toolkit
- Особенности функционирования драйверов
    Способы опроса
    Пример работы драйвера PCL-818L

## Введение

### Предпосылки создания

- Наличие типовой задачи СКУ - реализация интерфейса с оборудованием .
- Необходимость низкоуровневого программирования при создании модулей связи с УСО, что требует достаточно высокой квалификации разработчиков проекта , а также наличия , на этапе разработки, самого оборудования .
- Существование ограниченного количества функциональных типов УСО , каждому из которых присущи типовые характеристики , что позволяет унифицировать процедуры настройки драйверов одного типа , а также алгоритмы первичной обработки получаемых данных .
- Возрастание требований к срокам создания проектов.

### Назначение

Driver Toolkit предназначен для эффективной разработки подсистемы интерфейса с оборудованием в рамках САCSD RTWin . Это достигается путем предоставления готовых драйверов для широкого спектра оборудования , способных , помимо получения данных , реализовать стандартные алгоритмы первичной обработки данных.
Наличие редактора ресурсов позволяет легко переконфигурировать драйвера , а библиотеки стандарных блок-функций максимально упрощают получение данных от драйверов любым стандартным объектом RTWin.

### Состав и функции

Пакет Driver Toolkit состоит из 2- х частей :

1. Среда выполнения :

> готовые драйвера наиболее распространенных плат УСО ;
> универсальный графический эмулятор драйверов drvemul;

2. Среда разработки :

> Редактор ресурсов драйверов - drvedit;
> библиотека блок - функций , реализующих интерфейс с драйверами модулей RTWin;
> редактор - построитель драйверов - drvbuilder.

### Связь с CACSD RTWin

Общую схема СКУ , разработанную с использованием средств Driver Toolkit , можно представить в следующем виде:

При этом модули RTWin , отвечающие за интерфейс с драйверами, должны включать в себя интерфейсные блок- функции из специальной библиотеки drivers.lib , поставляемой в составе Driver Toolkit . Схематично такой объект можно представить в следующем виде:

## Включение драйверов в проект

### Необходимые условия

Для включения драйверов в проект - необходимо , чтобы требуемые драйвера были инсталлированы и находились в каталоге /usr/rtwin/drv вместе с соответствующими конфигурационными файлами

### Определение состава драйверов

Используя редактор drvedit , можно для текущего проекта из существующего перечня драйверов выбрать необходимое количество запускаемых копий драйверов (одна копия на УСО) , присвоить им уникальные имена , определить требуемые значения параметров , как типовых ( базовый адрес , номер IRQ , типы используемый каналов и их количество и т. д . ) , так и уникальных для каждого драйвера . В результате будет сформирован соответствующий файл запуска процессов дополнительно к стандартным модулям RTWin .

### Преимущества драйверов Driver Toolkit

Какие же преимущества дает использование готовых драйверов совместно с редактором ресурсов drvedit.

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

## Особенности функционирования драйверов

### Способы опроса

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

Эти способы можно выбрать через конфигурирование драйверов и возможны следующие варианты :

- опрос по прерыванию ;
- опрос по прерыванию через механизм DMA ;
- опрос по таймеру драйвера ;
- опрос по инициативе клиента .

Чаще всего возможны смешанные варианты :

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

### Пример работы драйвера PCL-818L

Если для драйвера выбрать режим DMA для каналов аналогового ввода , то необходимо установить обработку через прерывание , т.к. механизм DMA реализуется только через прерывание .

Таймер установим неактивным .

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

Опрос дискретных каналов будет осуществляться только по запросу программы клиента .

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

Ниже приведена блок - схема работы драйвера .