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

Linux в настоящее время поддерживает разнообразные последовательные платы, которые используют стандарт RS-232. RS-232 в настоящее время наиболее общий стандарт для последовательных коммуникаций в мире PC.

Хотя аппаратные средства handshake необязательны, но очень полезны. Они позволяют любой из двух станций сигнализировать о готовности получить данные или о том, что другая станция должна подождать пока приемник не обработает поступающие данные. Линии используемые для этот названы "Clear to Send" (Чистыми для посылки или CTS) и "Ready to Send"(Готовыми послать или RTS), соответственно, которые, объясняют второе название handshake аппаратных средств, а именно "RTS/CTS".

В PC, интерфейс RS-232 обычно управляется UART чипом, полученным из 16450 чипа, или более новой его версии, NSC 16550A. Некоторые марки ( особенно внутренних модемов оборудованных набором чипов Rockwell) используют другие чипы, которые были запрограммированы, чтобы вести себя так же как 16550-ые.

Главное различие между 16450 и 16550 то, что последний имеют FIFO буфер размером 16 Байт, в то время как первый только 1 байт Это делает 16450 подходящими для скорости в 9600 Бод, в то время как для больших скоростей требуются чипы совместимые с 16550. Кроме этих чипов, Linux также поддерживает 8250 чип, который был сделан специально для PC-AT. В стандартной конфигурации, ядро ищет четыре стандартных последовательных платы от COM1 до COM4. Они связываются с устройствами с незначительными номерами от 64 до 67, так как описано выше. Если Вы хотите отконфигурировать ваши последовательные порты по-другому, Вы должны установить Ted Tso's setserial команду в rc.serial скрипте. Этот скрипт должен вызываться из /etc/rc во время загрузки системы. Он использует setserial чтобы конфигурировать последовательные устройства. Типичный rc.serial скрипт напоминает это: # /etc/rc.serial - serial line configuration script.

# # Do wild interrupt detection /sbin/setserial -W /dev/cua*

# Configure serial devices

/sbin/setserial /dev/cua0 auto irq skip test autoconfig

/sbin/setserial /dev/cua1 auto irq skip test autoconfig

/sbin/setserial /dev/cua2 auto irq skip test autoconfig

/sbin/setserial /dev/cua3 auto irq skip test autoconfig

# Display serial device configuration /sbin/setserial -bg /dev/cua*

Пожалуйста обратитесь к документации, которая поставляется вместе с setserial для объяснения параметров.

Если ваша последовательная карта не обнаружена, или setserial -bg команда показывает неправильные установки, Вы должны будете отконфигурировать его явно, используя правильные значения. Пользователи с внутренними модемами оборудованными Rockwell набором чипов как сообщается испытывают эту проблему. Так, например, UART чип называется NSC 16450, в то время как фактически это NSC 16550, Вы должны изменить конфигурационную команду для причиняющего неприятность порта /sbin/setserial /dev/cua1 auto irq skip test autoconfig uart 16550

Подобные опции существуют и для того чтобы изменить основной адрес, и IRQ COM порта. Пожалуйста обратитесь к man страницам, setserial(8). Если ваш модем поддерживает аппаратные средства handshake, Вы должны удостовериться, что вы разрешили работу сними. Большинство коммуникационных программ по умолчанию не пытаются этим пользоваться. Вы должны устанавливать его в ручную. Лучше всего это сделать в rc.serial скрипте, используя команду stty:

$ Stty crtscts < /dev/cua1 Чтобы проверить действительно ли используется handshake $ Stty -a < /dev/cua1 Это команда выдаст Вам состояния всех флагов для данного устройства; флаг показанный с предшествующим минусом как и в -crtscts означает что флаг выключен.