2004 г
Проект Русской Документации FreeBSD
содержание
- bps
-
Бит в секунду (Bits per Second) -- скорость передачи данных
- DTE
-
Терминальное оборудование (Data Terminal Equipment) -- например, ваш компьютер
- DCE
-
Оборудование связи (Data Communications Equipment) -- ваш модем
- RS-232
-
Стандарт EIA для аппаратных последовательных соединений
При упоминании скорости передачи данных, в этой главе не используется термин ``бод''
(``baud''). Бод означает количество электрических импульсов, которые могут быть переданы
за период времени, а ``bps'' это корректный термин для использования (он хотя бы не создает
столько проблем как предыдущий).
Для подсоединения модема или терминала к системе FreeBSD потребуется последовательный
порт и подходящий кабель для последовательного устройства. Если вы уже знаете о
аппаратном обеспечении и требуемых кабелях, можете пропустить этот раздел.
Есть несколько различных видов последовательных кабелей. Два наиболее часто
используемых в нашей ситуации типа это нуль-модемный и стандартный (``прямой'') RS-232
кабель. Документация на оборудование должна описывать тип требуемого кабеля.
Нуль модемный кабель пропускает некоторые сигналы, такие как ``signal ground'',
напрямую, а другие ``заворачивает''. Например, контакт ``send data'' на одном конце
соединяется с контактом ``receive data'' на другом.
Если вы изготавливаете собственный кабели, то можете сделать собственный кабель для
использования с терминалами. Эта таблица показывает названия сигналов RS-232C и номера
контактов на разъеме DB-25.
Замечание: Соедините ``Data Set Ready'' (DSR) и ``Data Carrier Detect'' (DCD)
внутри корпуса коннектора, а затем подключите к ``Data Terminal Ready'' (DTR) на другой
стороне.
Стандартный последовательный кабель пропускает все RS-232C сигналы напрямую. Так,
``send data'' на одном конце кабеля соединяется с контактом ``send data'' на другом
конце. Этот тип кабеля предназначен для подсоединения модема, а также подходит для
некоторых терминалов.
Последовательные порты это устройства, через которые данные передаются между
компьютером с FreeBSD и терминалом. Этот раздел описывает типы существующих портов и их
адресацию в FreeBSD.
Существует несколько типов последовательных портов. Перед изготовлением кабеля, вам
потребуется убедиться, что он подходит к портам терминала и системы FreeBSD.
Большинство терминалов используют порты DB25. Персональные компьютеры, включая PC под
управлением FreeBSD, используют порты DB25 или DB9. Если у вас есть мультипортовая
последовательная карта для PC, там могут быть RJ-12 или RJ-45 порты.
Обратитесь к сопровождающей документации на оборудование за информацией об
используемых портах. Можно также определить тип используемых портов по их внешнему
виду.
В FreeBSD доступ к каждому последовательному порту может быть получен через файл в
каталоге /dev. Есть два различных типа файлов:
-
Порты входящих соединений (dial-in) называются /dev/ttydN, где N это номер порта
начиная с нуля. Обычно, порты входящих соединений используются для терминалов. Для
корректной работы этим портам требуется, чтобы последовательный кабель передавал сигнал
data carrier detect (DCD).
-
Порты исходящих соединений (call-out) называются /dev/cuaaN. Они обычно используются не для терминалов, а только для
модемов. Вы можете использовать эти порты если последовательный кабель или терминал не
поддерживает сигнал DCD.
Если вы соединили терминал с первым последовательным портом (COM1 в MS-DOS®), используйте
/dev/ttyd0 для доступа к терминалу. Если терминал соединен со
вторым последовательным портом (известным также как COM2),
используйте /dev/ttyd1, и так далее.
FreeBSD c настройками по умолчанию поддерживает последовательные порты. В мире MS-DOS они известны как COM1, COM2, COM3, и COM4. На данный момент в FreeBSD есть поддержка как ``простых''
мультипортовых карт с последовательными интерфейсами, таких как BocaBoard 1008 и 2016,
так и более ``умных'' мультипортовых карт, например карт Digiboard и Stallion
Technologies. Тем не менее, ядро по умолчанию определяет только стандартные COM
порты.
Чтобы увидеть, как ядро определяет последовательные порты, просмотрите сообщения,
выводимые во время загрузки ядра, или используйте команду /sbin/dmesg для вывода сообщений ядра еще раз. В частности, обратите
внимание на сообщения, начинающиеся с символов sio.
Подсказка: Для просмотра только тех сообщений, которые содержат слово sio, используйте команду:
# /sbin/dmesg | grep 'sio'
Например, в системе с четырьмя последовательными портами, появятся такие специфичные
для последовательных портов сообщения:
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A
Если ядро не распознает все последовательные порты, вам возможно потребуется настроить
ядро FreeBSD. За детальной информацией по настройке ядра обращайтесь к главе Гл. 8.
Строки соответствующих устройств в файле конфигурации ядра FreeBSD 4.X будут
выглядеть примерно так:
device sio0 at isa? port IO_COM1 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? port IO_COM3 irq 5
device sio3 at isa? port IO_COM4 irq 9
и примерно так для FreeBSD 5.X:
device sio
Вы можете закомментировать или полностью удалить эти строки для отсутствующих
устройств в FreeBSD 4.X; в FreeBSD 5.X вам потребуется отредактировать файл /boot/device.hints для настройки последовательных портов.
Обратитесь к странице справочника sio(4) за
дополнительной информацией о настройке последовательных портов и мультипортовых карт.
Будьте осторожны при использовании настроек, которые работали в предыдущих версиях
FreeBSD, поскольку флаги устройств и синтаксис изменились в новых версиях.
Замечание: port IO_COM1 это синоним для port 0x3f8, IO_COM2 для 0x2f8, IO_COM3 для 0x3e8, и IO_COM4 для 0x2e8. Это наиболее часто используемые для соответствующих
последовательных портов адреса. Наиболее часто используемые прерывания 4, 3, 5, и 9.
Имейте ввиду, что обычные последовательные порты не могут совместно использовать прерывания на ISA PC (на
мультипортовых картах есть электроника, позволяющая всем чипам 16550A на плате совместно
использовать одно или два IRQ).
К большинству устройств ядра можно получить доступ через ``специальные файлы
устройств'', расположенные в каталоге /dev. К устройствам sio можно получить доступ через /dev/ttydN (устройства входящих
вызовов, dial-in) и /dev/cuaaN
(устройства исходящих вызовов, call-out). FreeBSD предоставляет также устройства
инициализации (/dev/ttyidN и /dev/cuaiaN), устройства блокировки
(/dev/ttyldN и /dev/cualaN). Первые используются
для инициализации параметров порта при каждом его открытии (таких как crtscts для модемов, использующих сигналы RTS/CTS для управления потоком). Устройства блокировки используются
для установки флага блокировки на порт и предотвращения изменения определенных параметров
пользователями или программами; обратитесь к страницам справочника termios(4), sio(4) и stty(1) соответственно
за информацией о параметрах терминала, блокировании и инициализации устройств и настройке
терминала.
Замечание: FreeBSD 5.0 включает файловую систему
devfs(5),
которая автоматически создает файлы устройств по мере необходимости. Если вы работаете с
версией FreeBSD, поддерживающей devfs просто пропустите этот
раздел.
В каталоге /dev находится shell скрипт, называющийся MAKEDEV, который управляет специальными файлами устройств. Чтобы
использовать MAKEDEV для создания специальных файлов устройств
исходящих соединений для порта COM1 (порт 0), зайдите (cd) в каталог /dev и выполните команду MAKEDEV ttyd0. Точно так же, для создания специальных файлов
устройств исходящих соединений для порта COM2 (порт 1),
используйте MAKEDEV ttyd1.
MAKEDEV создаст не только специальный файл устройства /dev/ttydN но также /dev/cuaaN, /dev/cuaiaN, /dev/cualaN, /dev/ttyldN, и /dev/ttyidN.
После создания специальных файлов устройств, обязательно проверьте права на файлы
(особенно на файлы /dev/cua*), чтобы убедиться, что только те
пользователи, которым дан доступ на эти файлы, могут читать и писать в них -- возможно,
вы не хотите, чтобы обычные пользователи использовали модемы для звонков. Права по
умолчанию на /dev/cua* должны подойти:
crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1
crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1
crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1
Эти права позволяют пользователю uucp и пользователям из
группы dialer использовать устройства исходящих вызовов.
Устройство ttydN (или cuaaN) это обычное устройство,
которое потребуется открыть для приложений. Когда процесс открывает устройство
применяются настройки ввода/вывода терминала по умолчанию. Вы можете посмотреть эти
настройки с помощью команды
# stty -a -f /dev/ttyd1
Если вы измените настройки устройства, они будут действовать до его закрытия. После
повторного открытия, оно вернется к настройкам по умолчанию. Для изменения настроек по
умолчанию, вы можете открыть и изменить установки ``начального состояния'' устройства.
Например, для включения по умолчанию режима CLOCAL, 8-битного
соединения и контроля передачи XON/XOFF для ttyd5, выполните:
# stty -f /dev/ttyid5 clocal cs8 ixon ixoff
Инициализация последовательных устройств контролируется файлом /etc/rc.serial. Этот файл определяет настройки последовательных
устройств по умолчанию.
Для предотвращения изменения программами отдельных установок, настройте ``состояние
блокировки'' устройства. Например, для установки значения скорости ttyd5 в 57600 bps, выполните:
# stty -f /dev/ttyld5 57600
Теперь приложение, открывающее ttyd5 и пытающееся изменить
скорость порта, получит скорость 57600 bps.
И конечно, сделайте запись начальных значений и состояния блокировки устройств
доступной только учетной записи root.
|
|