Ключевые слова:freebsd, multiport, serial, moxa, (найти похожие документы)
From: Дмитрий Новиков <http://artmagic.ru>
Subject: Мультиплексор MOXA в FreeBSD
Оригинал: http://www.artmagic.ru/labs/short/moxa.shtml
Мультиплексор MOXA в FreeBSD
Мультипплексоры или мультипортовки комании MOXA достаточно популярны у
нас в стране (в Питере - точно) - они достаточно дешевы и надежно
работают, а главное - доступны и с гарантией. Например, в Питере они
всегда есть на складе представителей МОХА в России - у ЗАО
"Ниеншанц-Автоматика" (http://www.nnz-ipc.ru, http://www.moxa.ru).
Самые рапространенные модели MOXA - восьмипортовые ISA и PCI
устройства - модели C168H ISA и PCI. И достаточно часто раздавались
вопросы администраторов как настроить мультиплексор в очень популярной
у администраторов некоммерческой UNIX-системе - FreeBSD. К сожалению,
MOXA официально поддерживает только Windows и Linux (что конечно
неправильно), но к счастью у нас работают и ISA и PCI мультипортовки
(и ниже будет показано как) в FreeBSD.
1. Две ISA-мультипортовки (2 - потому что одну неинтересно описывать)
а) Настраиваем MOXA из DOS на какое-нибудь прерывание и порты
ввода\вывода (программка на дискетке в комплекте)
b) Меняем ядро FreeBSD:
cd /usr/src/sys/i386/conf
cp GENERIC my #делаем копию ядра
b) Вносим в ядро строчки описания платы (vi my):
#MOXA1 - Описание первого устройства (IRQ 5, port 180)
options "COM_MULTIPORT"
device sio4 at isa? port 0x180 tty flags 0xb05
device sio5 at isa? port 0x188 tty flags 0xb05
device sio6 at isa? port 0x190 tty flags 0xb05
device sio7 at isa? port 0x198 tty flags 0xb05
device sio8 at isa? port 0x1a0 tty flags 0xb05
device sio9 at isa? port 0x1a8 tty flags 0xb05
device sio10 at isa? port 0x1b0 tty flags 0xb05
device sio11 at isa? port 0x1b8 tty flags 0xb05 irq 5 vector siointr
#MOXA2 - Описание второго устройства (IRQ 7, port 240)
device sio12 at isa? port 0x240 tty flags 0x1305
device sio13 at isa? port 0x248 tty flags 0x1305
device sio14 at isa? port 0x250 tty flags 0x1305
device sio15 at isa? port 0x258 tty flags 0x1305
device sio16 at isa? port 0x260 tty flags 0x1305
device sio17 at isa? port 0x268 tty flags 0x1305
device sio18 at isa? port 0x270 tty flags 0x1305
device sio19 at isa? port 0x278 tty flags 0x1305 irq 7 vector siointr
c) После этого пересобираем ядро:
Перекомпилируем ядро
config my
cd ../../depend/my
make depend && make && make install
d) Перепускаем систему:
shutdown -r now
При загрузке системы должно выдаться нечто вроде:
sio4 at 0x180-0x187 flags 0xb05 on isa
sio4: type 16550A (multiport)
sio5 at 0x188-0x18f flags 0xb05 on isa
sio5: type 16550A (multiport)
sio6 at 0x190-0x197 flags 0xb05 on isa
sio6: type 16550A (multiport)
sio7 at 0x198-0x19f flags 0xb05 on isa
sio7: type 16550A (multiport)
sio8 at 0x1a0-0x1a7 flags 0xb05 on isa
sio8: type 16550A (multiport)
sio9 at 0x1a8-0x1af flags 0xb05 on isa
sio9: type 16550A (multiport)
sio10 at 0x1b0-0x1b7 flags 0xb05 on isa
и т.п.
e) Создаем устройства для новорожденных COM-портов
cd /dev/
sh MAKEDEV cuaaXX (XX=4..9, a..i - порты обозначаются буквами, когда
заканчиваются цифры)
sh MAKEDEV ttydXX
f) Ну и можно подсоединить к портам модемы и проверить
работоспособность:
cu -l /dev/cuaai -s 57600
ATZ
OK
~.
Собственно теперь в системе просто напросто 18 COM-портов (еще 2
штатные). Нет никаких припятствий поставить 3-ю плату - были бы
прерывание да слот ISA.
2. PCI - мультипортовка (работает, начиная с версии FreeBSD 4.5).
Однако долгое время в FreeBSD можно было работать только с ISA
мультипортовками, в то время, как серверы все активнее избавлялись от
ISA слотов. У нас до сих пор работает небольшой модемный пулл на 2-х
ISA мультипортовках, однако когда настала пора поставить
мультипортовку в новый сервер - оказалось что в нем просто нет ISA. К
счастью, начиная с версии FreeBSD 4.5 в системе появился универсальный
драйвер, который поддерживает разные мультиплексоры от различных
производителей.
Более подробную информацию про драйвер puc можно узнать из man puc, а
список поддерживаемых мультипортовок: /usr/src/sys/dev/puc/pucdata.c
Достаточно добавить в ядро:
device puc
чтобы включить этот драйвер (и перекомпилировать ядро, как в п.1)
Потом нужно повторить пп 1.с - 1.f ... и убедиться в
работоспособности.
PS. Что показалось странным -это то, что при одновременном включении в
ядро
device puc
options "COM_MULTIPORT"
После пересборки ядра и перезагрузки система просто виснет. Может кто
работал одновременно с PCI и ISA картами ? Поделитесь в dmn@nnz.ru !
(С) Дмитрий Новиков.
Этот текст абсолютно некоммерческий, но если Вы будете его публиковать
- сделайте пожалуйста ссылку на ARTMAGIC.
>собирал я такой конфиг... пол-года тому назад Ругается!!! Пока не убрал vector
>siointr
А можно ли поподробней у меня тоже проблема со сборкой ядра FreeBSD 4.7 под Моху, восьмипортовка, PCI. После сборки ядра ничего не меняется. Так и остаётся устройство:
pci0: <unknow card> (vendor=0x114f, dev=0x0028) at 9.0 irq 10
Проставила свою C168p так, как описано выше - все вроде нормально. (Родного драйвера под С168Р под Фрюху нет - вначале вроде как был - так он не собрался - а теперь и вовсе нет). И вроде бы все работает, но pppd все время ругается после завершения связи так примерно: Nov 21 21:11:52 robin pppd[8491]: Modem hangup, connected for 26 minutes
Nov 21 21:11:52 robin pppd[8491]: ioctl (PPPIOCGFLAGS): Inappropriate ioctl for device
Nov 21 21:11:52 robin pppd[8491]: ioctl (PPPIOCGFLAGS): Inappropriate ioctl for device
Nov 21 21:11:52 robin pppd[8491]: ioctl(PPPIOCSASYNCMAP): Inappropriate ioctl for device
Nov 21 21:11:52 robin pppd[8491]: Couldn't restore device fd flags: Inappropriate ioctl for device
Nov 21 21:11:52 robin pppd[8491]: ioctl(TIOCSETD): Inappropriate ioctl for device
Nov 21 21:11:53 robin pppd[8491]: tcsetattr: Inappropriate ioctl for device
И, как мне думается, именно вследствии этого pppd работает ...э... странно - иногда не может договориться с клиентом: Nov 21 21:57:33 robin pppd[8583]: CCP: timeout sending Config-Requests. И после авторизации наступает тишина. Может я не права. Люди помогите. Может мне еще что посмотреть или как-то покрутить, может кто сталкивался с таким. Спасибо.
Поставился драйвер на мультипортовку CP-168U v2 - запуск dmesg - подтвердил его запуск при загрузке системы, .. но ничего так и не заработало. В чем может быть причина?