        Драйвер tmk1553busb v1.9g для плат сопряжения с мультиплексным
каналом по ГОСТ 27765.52-87 (MIL-STD-1553B) производства ЗАО "Элкус"
позволяет создавать и использовать программное обеспечение для этих плат,
работающее в среде Linux (Linux kernel 2.4/2.6/3.0+).

        Драйвер tmk1553busb поддерживает одновременно до 8 устройств TA1-USB, 
выпускаемых в настоящее время ЗАО "Элкус".

        Платы серии TA1 могут работать в режимах КК, ОУ или МТ. Эта версия 
драйвера не поддерживает комбинированный режим ОУ/МТ и режим МС (монитор 
слов).

        Для работы с устройством требуется скомпилировать модуль драйвера.
Для этого в директории source/tmk1553busb/ надо запустить соответствующую
команду: make24 для ядра 2.4, make26 для ядра 2.6 или make30 для ядра
старше 3.0. Для того, чтобы модуль драйвера мог скомпилироваться, необходимо,
чтобы были установлены исходники ядра Linux (Linux kernel sources). 

        Исходники ядра Linux должны быть расположены в папке /usr/src/linux 
для успешной компиляции драйвера. Если такой папки нет, и исходники ядра 
расположены в другой папке (например, /usr/src/linux-2.4), то необходимо 
обеспечить существование папки /usr/src/linux с исходниками ядра Linux. Для 
этого обычно достаточно выполнить команду подобную этой:

ln -s /usr/src/linux-2.4 /usr/src/linux

Эта команда записана в прилагаемом файле linkkern24.

        В ядре 2.6 для компиляции драйвера может потребоваться предварительно 
выполнить следующие команды:
cd /usr/src/linux
make mrproper
make cloneconfig
make modules_prepare

        Драйвер выполнен в виде загружаемого модуля ядра Linux. Для его 
запуска надо выполнить команду:

insmod tmk1553busb.ko

,а для его удаления надо выполнить команду:

rmmod tmk1553busb.ko

Учтите, что при удалении драйвера, все TA1-USB устройства должны быть 
отключены.

        В некоторых случаях необходимо создать соответствующие файлы
устройств в каталоге /dev командами (для 8ми устройств):

mknod /dev/tmk1553busb0 c 180 192
mknod /dev/tmk1553busb1 c 180 193
mknod /dev/tmk1553busb2 c 180 194
mknod /dev/tmk1553busb3 c 180 195
mknod /dev/tmk1553busb4 c 180 196
mknod /dev/tmk1553busb5 c 180 197
mknod /dev/tmk1553busb6 c 180 198
mknod /dev/tmk1553busb7 c 180 199

Эти команды записаны в прилагаемом файле mkdev.

В большинстве случаев ссылки на устройства в /dev создаются автоматически.

        После запуска драйвера, можно работать с драйвером в соответствии 
с Руководством программиста (tmkguide.doc) и Справочным руководством 
(tmkref.doc), которые доступны отдельным архивом по адресу
http://www.elcus.ru/files/mil-std/drv/1553docs.zip
При работе с драйвером нужно учитывать нумарацию устройств при выполнении
команды TmkOpen(). Эта команда в начале определяет количество доступных ISA/PCI
устройств, поддерживаемых драйвером tmk1553b.ko. Затем определяется наличие 
подключенных TA1-USB устройств. Например, при установленной в компьютере
плате TA1-PCI и подключенном модуле TA1-USB, нумерация USB устройств начнется
с номера 8. При отсутствии загруженного драйвера tmk1553b.ko нумерация 
устройств TA1-USB начнется с 0. Следует отметить, что на данный момент 
существует не полная совместимость работы драйверов tmk1553b.ko и 
tmk1553busb.ko. При вызове функции tmkwaitevents происходит последовательное 
обращение к двум драйверам, что в свою очередь может повлечь ложное ожидание
прерывания от устройства.

Для устройств TA1-USB в режиме HiSpeed поддерживаюстя функции реализующие
режим аппаратного поточного монитора.

MT_Start:

int MT_Start (DWORD dwBufSize);

Параметры:
dwBufSize - размер программного буфера драйвера в байтах;
Возвращаемое значение:
0 - функция выполнена успешно;
В случае ошибки возвращается отрицательное значение.
Выполняемые действия:
Функция инициирует начало работы устройства в режиме поточного монитора и 
переводит поток обработки поступающих данных в режим монитора.

MT_GetMessage

int MT_GetMessage(WORD * Data, DWORD dwBufSize, int FillFlag, 
                  DWORD * dwMsWritten);

Параметры:
Data - адрес пользовательского массива слов в ОЗУ ПЭВМ;
dwBufSize - длина пользовательского массива в словах;
FillFlag - Флаг заполнения пользовательского массива:
  TRUE - считать из буфера драйвера одно сообщение поточного монитора в 
  пользовательский массив,
  FALSE - считать из буфера драйвера все доступные сообщения поточного 
  монитора. Количество сообщений ограничено размером пользовательского массива;
dwMsWritten - возвращает количество считанных сообщений из буфера драйвера в 
пользовательский массив.
Возвращаемое значение:
0 - функция выполнена успешно.
0x01 - переполнение внутреннего буфера устройства;
0x02 - переполнение программного буфера драйвера.
В случае ошибки возвращается отрицательное значение.
Выполняемые действия:
Функция считает сообщения из программного буфера драйвера в ОЗУ ПЭВМ по адресу 
Data. Сообщения в память записываются непрерывно. Формат сообщений поточного
монитора:
  Слово состояния режима МСО;
  Старшее слово таймера;
  Младшее слово таймера;
  Блок данных принятых МСО (общее число слов в блоке определяется разрядами 
  15-10 слова состояния МСО).

MT_Stop [Win]

int MT_Stop();

Параметры:
Нет.
Возвращаемое значение:
0 - функция выполнена успешно;
В случае ошибки возвращается отрицательное значение.
Выполняемые действия:
Функция обнуляет внутренний признак продолжения выполнения потока обработки
данных монитора.

        В директориях bin32 и bin64 находятся программы 'simpltst', 
'randbcrt', 'mt1553b', 'mt1553be', 'mt1553bh', 'mt1553bhe', 'tmk', 'tmke'.

        Программа 'simpltst' - простой тест драйвера и одного устройства, 
в частности, тест памяти(учтите, что тест памяти на USB устройстве может
выполняться продолжительное время), расположенной на устройстве, и тест 
получения прерывания от устройства. Программа запускается без параметров 
(выполняется тест устройства с номером 0) или с одним параметром, задающим 
номер тестируемого устройства.
Использование:
'simpltst'   - выполняет тест устройства 0,
'simpltst 0' - выполняет тест устройства 0,
'simpltst 1' - выполняет тест устройства 1,
и т.д.

        Программа 'randbcrt' - совместный тест двух (КК и ОУ) или трех (КК, 
ОУ и МТ) устройств, соединенных линией передачи.
Использование:
'randbcrt [D D [D]] [a] [b] [c+-] [g+-] [i+-] [f+-] [eD] [mD-D]'
Параметры по умолчанию: 
'randbcrt 0 1 a b c+ g+ i+ f+ e0' - устройство 0 КК, устройство 1 ОУ, линии 
A и B, команды режима управления разрешены (c+), групповые команды разрешены 
(g+), аппаратный бит включен (i+), флаговый режим ОУ включен (f+), число 
ошибок - не ограничено (e0).

        Программы 'mt1553b' и 'mt1553be' - программы режима монитора 
сообщений, соответственно с русским (DOS кодировка) и английским интерфейсом. 
Программа пишет лог обмена в канале в файл и может отображать заданные данные 
на экране.
Использование: 
'mt1553b параметры'
Параметры (в круглых скобках - значения по умолчанию):
? - эта справка;
d<НомерУстройства(dec)> - задает номер устройства, начиная с 0 (нет);
n<ИмяФайла> - задает файл с результатами работы (nmonitor.dat);
l<ДлинаБуфера(dec)> - задает размер буфера сообщений программы (l%ld);
f<СловоЗаписи(hex)> - включает режим предзаписи указанного слова во все
     ячейки памяти монитора (выкл);
th<0-6> - включает аппаратную регистрацию времени сообщений (выкл);
b<+/-> - включает/выключает регистрацию групповых сообщений (b+);
ar<ДиапазонАдресовОУ(dec)> - задает диапазон адресов оконечных устройств,
     для которых производится регистрация сообщений; пример задания
     диапазона адресов: ar2,5-10,17,28-30 (ar0-30);
o<ДиапазонАдресовДанных(hex)> - задает диапазон адресов данных в канале,
     которые должны отображаться на экране при мониторинге; пример
     задания диапазона: o0E21,5223-5226 (выкл);
m<b/r/m> - задает режимы буферизации(b), регистрации(r),
     только мониторинга(m) (mr).
Примеры:
'mt1553b d0 ndata.sav l2000 fFFFF ar0-9,20-29'
'mt1553b d1 th'

        Программы 'mt1553bh' и 'mt1553bhe' - программы режима аппаратного
поточного монитора сообщений, соответственно с русским (DOS кодировка) 
и английским интерфейсом. 
Программа пишет лог обмена в канале в файл и может отображать заданные данные 
на экране.
Использование: 
'mt1553b параметры'
Параметры (в круглых скобках - значения по умолчанию):
? - эта справка;
d<НомерУстройства(dec)> - задает номер устройства, начиная с 0 (нет);
n<ИмяФайла> - задает файл с результатами работы (nmonitor.dat);
u - включает режим записи данных в единый файл;
l<ДлинаБуфера(dec)> - задает размер буфера сообщений программы (l25000);
th<0-6> - включает аппаратную регистрацию времени сообщений (выкл);
b<+/-> - включает/выключает регистрацию групповых сообщений (b+);
ar<ДиапазонАдресовОУ(dec)> - задает диапазон адресов оконечных устройств,
     для которых производится регистрация сообщений; пример задания
     диапазона адресов: ar2,5-10,17,28-30 (ar0-30);
o<ДиапазонАдресовДанных(hex)> - задает диапазон адресов данных в канале,
     которые должны отображаться на экране при мониторинге; пример
     задания диапазона: o0E21,5223-5226 (выкл);
Примеры:
'mt1553b d0 ndata.sav l20000 ar0-9,20-29'
'mt1553b d1 th'

        Программа tmk предназначена для работы с платами стандарта
MIL-STD-1553B (ГОСТ 26765.52-87) производства ЗАО "Элкус".
Текущей версией программы поддерживается работа с платами ТМК-400, МТМК-400
(ТМК-MP), РТМК-400, TX1-PC, TX1-MP, TX1-104, TX1-B, TA1-PC, TA1-104, TAM1,
TE1-PCI, TE1-PCI2, TA1-PCI, TA1-USB и их модификациями.
        
        Программа tmk получена портированием программы tmk.exe для DOS, при
этом существенным отличием является замена нажатия клавиши Print Screen 
нажатием клавиши F12. Вызов справки вызывается вводом команды 'H'.

        Программа позволяет управлять от одной до четырех плат и при этом
отображать текущее состояние до двух выбранных плат. Для задания конфигурации 
плат в компьютере используется текстовый файл tmk.cfg, который должен
находиться в одной директории с tmk.exe. Пример файла конфигурации для двух
плат:

0
1
*Дальше идут строки комментария

        Исходные тексты драйвера и программ simpltst, randbcrt и tmk находятся
в соответствующих поддиректориях директории source.


(с) ЗАО "Электронная компания ЭЛКУС", 2002, 2009.
