
Это только обновление исходников драйвера версии 1.9m для 
Linux для TA1-USB для компиляции в ядрах 2.4-6.x:
http://www.elcus.ru/files/mil-std/drv/ta1usblin0109m.zip

Основной архив копии диска TA1-USB, включающий полный 
драйвер версии 1.9g для Linux для версий ядер 2.4-3.x:
http://www.elcus.ru/files/mil-std/ta1-usb_disk.zip

В папке tmk1553busb_0109m находится обновление исходников 
драйвера версии 1.9m для компиляции нового драйвера. 
Существующие пользовательские программы, работающие с 
драйвером, не требуют перекомпиляции, но в папке include 
находится чуть исправленный и дополненный вариант 
интерфейса ltmk.c и ltmk.h к драйверу, который можно 
использовать взамен варианта из основного архива.

Для компиляции модуля драйвера надо установить в целевой 
системе пакет заголовков ядра, совпадающий по версии с 
версией ядра самой целевой системы, и пакеты средств 
компиляции.

Пакет заголовков ядра устанавливается командой:
sudo apt install linux-headers-$(uname -r)

В некоторых случаях пакет заголовков ядра может иметь 
нестандартное имя или оказаться неполным, тогда можно 
попробовать вариант:
sudo apt install linux-headers*

Необходимые пакеты средств компиляции устанавливаются 
командами:
sudo apt install gcc
sudo apt install make

Для компиляции модуля драйвера этих пакетов обычно 
достаточно. Результатом успешной компиляции является 
создание файла модуля драйвера tmk1553busb.ko в папке с 
исходниками драйвера. Но в зависимости от дистрибутива 
Linux при компиляции модулей ядра могут вызываться 
дополнительные средства, отсутствие которых может 
приводить к выводу дополнительных предупреждений при 
компиляции, но на сам результат компиляции принципиально 
не влияет. Для таких случаев можно установить требуемые 
дополнительнкые пакеты или дополнительно настроить 
дистрибутив какими-то из набора следующих команд:

sudo apt install libelf-dev
sudo apt install pahole
sudo ln -s /sys/kernel/btf/vmlinux /usr/src/linux-headers-$(uname -r)/vmlinux

Для компиляции драйвера в целевой системе (при работе в 
том ядре, под которым надо будет запускать драйвер) надо 
запускать скрипт make30m в папке с исходниками драйвера. 
Например, первая команда делает скрипт make30m исполняемым, 
вторая команда запускает компиляцию:
chmod +x make30m
./make30m

В результате компиляции в папке с исходниками драйвера 
должен получиться файл модуля драйвера tmk1553busb.ko.

В TA1-USB используется контроллер и идентификаторы USB 
фирмы Cypress, поэтому модуль usbtest (который часто 
присутствует в дистрибутивах Linux) перехватывает их и 
не дает драйверу tmk1553busb нормально работать. 
Как вариант, можно заблокировать загрузку этого модуля, 
создав в папке /etc/modprobe.d файл usbtest.conf и 
добавив туда строку
blacklist usbtest
или же добавить эту же строку
blacklist usbtest
в файле /etc/modprobe.d/blacklist.conf
Если загрузка модуля usbtest не была заблокирована, и 
модуль usbtest запустился для TA1-USB, то до запуска 
драйвера TA1-USB надо вручную остановить модуль usbtest 
командой:
sudo rmmod usbtest

Драйвер вручную запускается в папке с компилированным 
модулем драйвера командой:
sudo insmod ./tmk1553busb.ko

Также можно запускать драйвер вручную с параметром 
chmod=0666, чтобы файлы устройств в папке /dev сразу 
создавались с нужными правами доступа (этот параметр 
доступен только для версий ядра 2.6.32 и старше):
sudo insmod ./tmk1553busb.ko chmod=0666

В случае выдачи insmod (при правильной строке запуска) 
какой-то ошибки запуска модуля, в общем случае, причины 
могут быть разные. Пара наиболее часто встречающихся 
вариантов описана ниже, но могут быть и другие причины.

Например, для ошибки 'invalid module format' причиной 
может быть несоответствие версии пакета заголовков ядра, 
использованного при компиляции модуля, и версии ядра, 
на котором выполняется запуск модуля.

Для ошибки 'operation not permitted' причиной может быть 
работа в системе с включённым в BIOS режимом Secure Boot, 
в такой системе все модули ядра должны быть подписаны 
сертификатами, известными системе. Такой сертификат можно 
либо получить у издателя дистрибутива, либо сгенерировать 
и установить в систему самостоятельно, вот пример общей 
информации о Linux в таком режиме:
https://wiki.debian.org/SecureBoot
Альтернативным вариантом может быть отключение режима 
Secure Boot в системе вообще, либо отключение проверки 
подписи модулей ядра, например c использованием пакета 
mokutil:
sudo apt install mokutil
sudo mokutil --disable-validation
Но такие варианты с отключением или ограничением Secure 
Boot нельзя рассматривать в качестве рекомендованных 
в контексте данного описания, такие решения должны 
приниматься с учётом общих требований к системе, и 
основным вариантом для систем с Secure Boot является 
использование модулей ядра, подписанных требуемым 
сертификатом.

При запущенном драйвере файлы устройств в папке /dev 
с именами /dev/tmk1553busb0...N должны создаваться 
автоматически при подключении TA1-USB к шине USB. 
Вручную запускать mknod не требуется. Если устройства 
ранее создавались вручную через mknod, то перед 
запуском драйвера надо удалить все такие устройства 
/dev/tmk1553busbN, созданные вручную.

Автоматически созданные файлы устройств (при запуске 
драйвера без параметра chmod=0666) создаются в /dev с 
ограниченными правами доступа. Вручную изменить права 
доступа у созданных устройств, чтобы получить доступ к 
файлам /dev/tmk1553busb0...N обычным программам, можно 
командой:
sudo chmod ugo+r /dev/tmk1553busbN
где N - номер созданного устройства, начиная с 0

Для того, чтобы такие устройства автоматически сразу 
создавались с доступом к файлам /dev/tmk1553busb0...N 
обычным программам, можно до запуска драйвера в папке 
/etc/udev/rules.d создать файл 52-elcus.rules и добавить 
в него правило:
KERNEL=="tmk1553busb*", MODE="0666"
И выполнить две команды для перезапуска правил:
udevadm control --reload-rules
udevadm trigger

Чтобы добавить модуль драйвера для автоматического 
запуска при загрузке системы надо (все действия выполнять 
под root, через sudo):

- Скомпилированный модуль драйвера скопировать в папку
/lib/modules/`uname -r`/kernel/drivers/usb/
То есть, в папку библиотеки модулей для используемого 
ядра, точно под которое компилировался модуль.

- В папке /etc/modules-load.d создать файл tmk1553busb.conf 
со строкой
tmk1553busb
или же добавить эту же строку
tmk1553busb
в файле /etc/modules-load.d/modules.conf

- Выполнить команду depmod

- Перезагрузить систему

Проверка работоспособности устройства с номером 0 
в папке программ:
./simpltst 0

Программы брать из комплекта драйвера с диска или из 
основного архива копии диска с сайта:
http://www.elcus.ru/files/mil-std/ta1-usb_disk.zip

В проверке simpltst в тесте памяти не должно быть ошибок, 
а в конце проверки прерывания должно быть написано:
Int: 0
We got interrupt!
Int: 1
