Руководство FreeBSD
Пред. | Глава 20. Последовательные соединения | След.

# 20.2. Введение

## 20.2.1. Терминология

bps

  Бит в секунду (Bits per Second) -- скорость передачи данных

DTE

  Терминальное оборудование (Data Terminal Equipment) -- например, ваш компьютер

DCE

  Оборудование связи (Data Communications Equipment) -- ваш модем

RS-232

  Стандарт EIA для аппаратных последовательных соединений

При упоминании скорости передачи данных, в этой главе не используется термин ''бод'' (''baud''). Бод означает количество электрических импульсов, которые могут быть переданы за период времени, а ''bps'' это корректный термин для использования (он хотя бы не создает столько проблем как предыдущий).

## 20.2.2. Кабели и порты

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

### 20.2.2.1. Кабели

Есть несколько различных видов последовательных кабелей. Два наиболее часто используемых в нашей ситуации типа это нуль-модемный и стандартный (''прямой'') RS-232 кабель. Документация на оборудование должна описывать тип требуемого кабеля.

#### 20.2.2.1.1. Нуль-модемные кабели

Нуль модемный кабель пропускает некоторые сигналы, такие как ''signal ground'', напрямую, а другие ''заворачивает''. Например, контакт ''send data'' на одном конце соединяется с контактом ''receive data'' на другом.

Если вы изготавливаете собственный кабели, то можете сделать собственный кабель для использования с терминалами. Эта таблица показывает названия сигналов RS-232C и номера контактов на разъеме DB-25.

Сигнал | Контакт |  | Контакт | Сигнал
--- | --- | --- | --- | ---
SG | 7 | соединен с | 7 | SG
TD | 2 | соединен с | 3 | RD
RD | 3 | соединен с | 2 | TD
RTS | 4 | соединен с | 5 | CTS
CTS | 5 | соединен с | 4 | RTS
DTR | 20 | соединен с | 6 | DSR
DCD | 8 |  | 6 | DSR
DSR | 6 | соединен с | 20 | DTR

> Замечание: Соедините ''Data Set Ready'' (DSR) и ''Data Carrier Detect'' (DCD) внутри корпуса коннектора, а затем подключите к ''Data Terminal Ready'' (DTR) на другой стороне.

#### 20.2.2.1.2. Стандартные кабели RS-232C

Стандартный последовательный кабель пропускает все RS-232C сигналы напрямую. Так, ''send data'' на одном конце кабеля соединяется с контактом ''send data'' на другом конце. Этот тип кабеля предназначен для подсоединения модема, а также подходит для некоторых терминалов.

### 20.2.2.2. Порты

Последовательные порты это устройства, через которые данные передаются между компьютером с FreeBSD и терминалом. Этот раздел описывает типы существующих портов и их адресацию в FreeBSD.

#### 20.2.2.2.1. Типы портов

Существует несколько типов последовательных портов. Перед изготовлением кабеля, вам потребуется убедиться, что он подходит к портам терминала и системы FreeBSD.

Большинство терминалов используют порты DB25. Персональные компьютеры, включая PC под управлением FreeBSD, используют порты DB25 или DB9. Если у вас есть мультипортовая последовательная карта для PC, там могут быть RJ-12 или RJ-45 порты.

Обратитесь к сопровождающей документации на оборудование за информацией об используемых портах. Можно также определить тип используемых портов по их внешнему виду.

#### 20.2.2.2.2. Имена портов

В FreeBSD доступ к каждому последовательному порту может быть получен через файл в каталоге `/dev`. Есть два различных типа файлов:

- Порты входящих соединений (dial-in) называются `/dev/ttydN`, где N это номер порта начиная с нуля. Обычно, порты входящих соединений используются для терминалов. Для корректной работы этим портам требуется, чтобы последовательный кабель передавал сигнал data carrier detect (DCD).

- Порты исходящих соединений (call-out) называются `/dev/cuaaN`. Они обычно используются не для терминалов, а только для модемов. Вы можете использовать эти порты если последовательный кабель или терминал не поддерживает сигнал DCD.

Если вы соединили терминал с первым последовательным портом (`COM1` в MS-DOS®), используйте `/dev/ttyd0` для доступа к терминалу. Если терминал соединен со вторым последовательным портом (известным также как `COM2`), используйте `/dev/ttyd1`, и так далее.

## 20.2.3. Настройка ядра

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).

## 20.2.4. Специальные файлы устройств

К большинству устройств ядра можно получить доступ через ''специальные файлы устройств'', расположенные в каталоге `/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) соответственно за информацией о параметрах терминала, блокировании и инициализации устройств и настройке терминала.

### 20.2.4.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` использовать устройства исходящих вызовов.

## 20.2.5. Настройка последовательных портов

Устройство `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`.

Пред. | Начало | След.
Последовательные соединения | Уровень выше | Терминалы

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.