На главную | О компании | Продукция | Поддержка | Цены

 
 
Продукция

мультипортовые платы с интерфейсом RS232

мультипортовые платы с интерфейсом RS422/485

мультипортовые платы с интерфейсом "токовая петля" (ИРПС)

мультипортовые платы с паралельным интерфейсом

 

 

 

 

как настроить мультипортовую плату в Linux
 

Общие рекомендации

Плата расширителя отличается от платы мультиплексора тем, что в расширителе каждому последовательному порту назначается своя линия прерывания. В IBM PC совместимых компьютерах 16 линий прерываний, многие из которых заняты системными устройствами. Возможные значения линий IRQ, которые могут быть выбраны на платах типа GRAN, охватывают все незанятые линии прерываний.
Распределение линий прерываний приведено в таблице ниже.
Если в вашем компьютере установлены платы стандарта PLUG AND PLAY (например, сетевые или звуковые карты), выясните, какие они занимают ресурсы на шине процессора - адреса ввода и вывода и линию прерываний. Ресурсы, которые вы будете назначать ногопортовой, плате не должны совпадать с уже занятыми ресурсами. Большинство устройств типа PLUG AND PLAY допускают принудительное переназначение ресурсов. Этим можно воспользоваться для освобождения ресурсов для многопортовой платы.

 

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

Если Ваш компьютер стандарта PLUG AND PLAY с шиной PCI, то для надежной работы платы по прерыванию необходимо через BIOS SETUP компьютера закрепить эту линию прерывания за шиной ISA. Для этого необходимо (в разных компьютерах, в зависимости от типа BIOS, процедура может отличаться от приведенной ниже):
* Выключить и включить компьютер;
* Вызвать BIOS SETUP (часто нажатием клавиши Delete во время начальной загрузки);
* Войти в раздел BIOS SETUP, который обычно называется "PNP/PCI Configuration";
* Подвести маркер к требуемой линии прерываний IRQ и установить для него значение "LEGACY ISA" вместо "PCI/ISA PnP", или аналогичного;
*Выйти из BIOS SETUP с сохранением установленных параметров.

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

Примерное распределение линий прерываний

Линия прерывания

Назначение

IRQ 0 Системный таймер
IRQ 1 Клавиатура
IRQ 2 Каскадный контроллер прерываний
IRQ 3 COM2, COM4
IRQ 4 COM1, COM3
IRQ 5 СВОБОДНО (может использоваться сетевой или звуковой картами)
IRQ 6 Контроллер флоппи-дисков
IRQ 7 СВОБОДНО (в общем случае зарезервировано за принтером)
IRQ 8 Часы реального времени
IRQ 9 СВОБОДНО Перенаправление IRQ2 (МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНО)
IRQ 10 СВОБОДНО
IRQ 11 СВОБОДНО
IRQ 12 СВОБОДНО или MOUSE PS/2
IRQ 13 Ошибка сопроцессора
IRQ 14 Первый контроллер жесткого диска
IRQ 15 СВОБОДНО или второй контроллер диска (например, при подключенном накопителе CD-ROM)

 

Выбор базовых адресов портов ввода/вывода
Выбираемые базовые адреса портов ввода/вывода не должны совпадать с уже установленным в компьютер оборудованием.
Адреса 100-107 могут быть заняты в машинах типа PS/2 с архитектурой MCI.
Часто адрес 300 используется по умолчанию сетевыми картами.
Адрес 330 может использоваться аудио картами.
Некоторые видео карты могут конфликтовать с адресом COM4 (2E8).

При компиляции ядра должны быть включены параметры:
CONFIG_SERIAL_MULTIPORT
CONFIG_SERIAL_EXTENDED
CONFIG_SERIAL_MANY_PORTS
CONFIG_SERIAL_SHARE_IRQ

По умолчанию в RedHat созданы только файлы устройства /dev/ttyS[0-3].
Для работы с 8-портовой платой необходимо создать необходимое к-во устройств ttyS, для этого выполнить следующее действие:
cd /dev; ./MAKEDEV ttyS16 ttyS17 ttyS18 ttyS19 ttyS20 ttyS21 ttyS22 ttyS23

Далее необходимо поместить приведенный ниже текст, предварительно откорректировав его, в соответствии выставленным перемычками адресам и прерываниям, в файл /etc/serial.conf.
========================================================================
# This is a sample /etc/serial.conf file.
#
# GRAN-8COMRS232 (GRANATO's 8/16 multiport card)
#
/dev/ttyS16 uart 16550A port 0x100 irq 12
/dev/ttyS17 uart 16550A port 0x108 irq 12
/dev/ttyS18 uart 16550A port 0x110 irq 12
/dev/ttyS19 uart 16550A port 0x118 irq 12
/dev/ttyS20 uart 16550A port 0x120 irq 12
/dev/ttyS21 uart 16550A port 0x128 irq 12
/dev/ttyS22 uart 16550A port 0x130 irq 12
/dev/ttyS23 uart 16550A port 0x138 irq 12
# This enables the new multiport masking feature, which is highly recommened.
/dev/ttyS16 set_multiport port1 0x142 mask1 0xff match1 0xff
Для 16 портовой платы нужно добавить аналогичный текст для второй восьмерки портов.

В ядре 2.2.x рамер буфера FIFO для
'uart 16550A' -- 16 байт,
'uart 16650' -- 1 байт,
'uart 16650V2' -- 32 байта. (см. /usr/src/linux/driver/char/serial.c)
В версии serial 5.04 поддерживаются (если нужен, можно скачать здесь )
"8250" FIFO
"16450" FIFO
"16550" FIFO
"16550A" FIFO 16
"ST16650" FIFO 1
"ST16650V2" FIFO 32
"TI16750" FIFO 64
"16C950/954" FIFO 128
"ST16654" FIFO 64
"XR16850" FIFO 128
"RSA" FIFO 2048
Рекомендуем
для плат с 16 байтным FIFO использовать 'uart 16550A',
для плат с 64 байтным FIFO использовать 'uart ST16654' либо uart 'ST16650V2',
для плат с 128 байтным FIFO использовать 'uart XR16850'.

Для RedHat-овских дистрибутивов необходимо взять из /usr/doc/setserial-2.15
файл rc.serial, и поместить его в /etc/rc.d/. Для других дистрибутивов --
взять из архива исходников setserial точно такой же rc.serial, и поместить
его в /etc/rc.d/ и запустить команду chkconfig -add serial.
Наличие этого скрипта проверяется в /etc/rc.d/rc.sysinit сразу после активации swap в процессе загрузки системы.
Если вы устанавливаете serial 5.04 там есть скрипт setup.sh который, проделывает эту работу.

Примечание: удостовертесь, что у Вас стоит программа setserial из пакета setserial-2.15:
rpm -qa |grep setserial

Если нужен setserial-2.16 можно скачать здесь
Если все настроили правильно, то должно получиться следующее на выполнение команды:

pts/0> setserial -a /dev/ttyS16
/dev/ttyS16, Line 16, UART: 16550A, Port: 0x0100, IRQ: 12
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinte
Flags: spd_normal

pts/0> setserial /dev/ttyS16 get_multiport
Multiport config for irq 12:
Port monitor = 0x0
Port1 = 0x142, mask=0xff, match=0xff
Port2 = 0x0, mask=0x0, match=0x0
Port3 = 0x0, mask=0x0, match=0x0
Port4 = 0x0, mask=0x0, match=0x0

 

       

 

Где купить

Дилерские условия

Гарантийные обязательства

 
 
 
 

© 1992-2001 Научно-внедренческая фирма "Гранато"