Interested Article - Последовательный порт
- 2021-07-30
- 1
После́довательный порт ( англ. serial port , COM-порт , англ. communications port ) — сленговое название интерфейса стандарта RS-232 , которым массово оснащались персональные компьютеры . Порт называется «последовательным», так как информация через него передаётся по одному биту , последовательно бит за битом (в отличие от параллельного порта ). Несмотря на то, что некоторые интерфейсы компьютера (например, Ethernet , FireWire и USB ) тоже используют последовательный способ обмена информацией, название «последовательный порт» закрепилось за портом стандарта RS-232 .
Назначение
Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже — для модема или мыши . Сейчас он используется для соединения с источниками бесперебойного питания , для связи с аппаратными средствами разработки встраиваемых вычислительных систем , спутниковыми ресиверами, кассовыми аппаратами, программаторами, с приборами систем безопасности объектов, а также с многими прочими устройствами.
С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Такой кабель использовался со времен MS-DOS для передачи файлов с одного компьютера на другой, в UNIX — для терминального доступа к другой машине, а в Windows (даже современной) — для отладчика уровня ядра.
Достоинством технологии является крайняя простота оборудования. Недостатком является низкая скорость, крупные разъёмы, а также зачастую высокие требования ко времени отклика ОС и драйвера и большое количество прерываний (одно на половину аппаратной очереди, то есть 8 байт).
Разъёмы
На материнских платах ведущих производителей (например, Intel ) или готовых системах (например, IBM , Hewlett-Packard , Fujitsu Siemens Computers ) для последовательного порта принято условное обозначение COM или RS-232.
Наиболее часто используются стандартизированные в 1969 году D-образные разъёмы: 9- и 25-контактные, (DE-9 и DB-25 соответственно). Раньше использовались также DA-31 и круглые восьмиконтактные DIN-8. Максимальная скорость передачи в обычном исполнении порта составляет 115 200 бод .
Актуальность
Широко распространённый в IBM PC-совместимых компьютерах , интерфейс RS-232 не пригоден для развлекательных и офисных задач, зато широко используется в прикладных задачах, поэтому попытки избавиться в современных материнских платах от наследия старых интерфейсов обречены. Спецификация PC99 — один из безуспешных примеров нажиться [ источник не указан 1664 дня ] на масштабной замене «устаревшего» оборудования. Про неё пишут [ источник не указан 1664 дня ] , что она «ныне устарела и представляет исключительно исторический интерес», а производство «устаревшего» оборудования процветает. В офисных и домашних компьютерах, где расстояния и помехи невелики, а скорость обмена востребована, RS-232 практически вытеснен интерфейсом USB .
Существуют стандарты на эмуляцию последовательного порта над USB и над Bluetooth (эта технология в значительной степени и проектировалась как «беспроводной последовательный порт»).
Тем не менее программная эмуляция данного порта широко используется и сегодня. Так, например, практически все мобильные телефоны эмулируют внутри себя классический COM-порт и модем для реализации тетеринга — доступа компьютера в Интернет через GPRS/EDGE/3G/4G оборудование телефона. При этом для физического подключения к компьютеру используется USB , Bluetooth или Wi-Fi .
Также программная эмуляция данного порта предоставляется «гостям» виртуальных машин VMWare и Microsoft Hyper-V , основная цель при этом — подключение отладчика уровня ядра Windows к «гостю».
В виде UART , отличающегося уровнями напряжения и отсутствием дополнительных сигналов, присутствует практически во всех микроконтроллерах, кроме самых-самых маленьких, SoC, платах разработчиков, а также присутствует на платах большей части устройств, хотя разъём и не выведен на корпус. Такая популярность связана с простотой этого интерфейса, как с физической точки зрения, так и с легкостью доступа к порту со стороны ПО по сравнению с другими интерфейсами.
Аппаратура
Разъём имеет контакты:
DTR (Data Terminal Ready — готовность к приёму данных) — выход на компьютере, вход на модеме. Означает готовность компьютера к работе с модемом. Сброс этой линии вызывает почти полную перезагрузку модема в первоначальное состояние, в том числе бросание трубки (некоторые управляющие регистры выживают после такого сброса). В UNIX это происходит в случае, если все приложения закрыли файлы на драйвере последовательного порта. Мышь использует этот провод для получения питания.
DSR (Data Set Ready — готовность к передаче данных) — вход на компьютере, выход на модеме. Означает готовность модема. Если эта линия находится в нуле — то в ряде ОС становится невозможно открыть порт как файл.
RxD (Receive Data — приём данных) — вход на компьютере, выход на модеме. Поток данных, входящий в компьютер.
TxD (Transmit Data — передача данных) — выход на компьютере, вход на модеме. Поток данных, исходящих из компьютера.
CTS (Clear to Send — готовность передачи) — вход на компьютере, выход на модеме. Компьютер обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в модеме.
RTS (Request to Send — запрос на передачу) — выход на компьютере, вход на модеме. Модем обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в оборудовании и драйвере.
DCD (Carrier Detect — наличие несущей) — вход на компьютере, выход на модеме. Взводится модемом в единицу после установления соединения с модемом с той стороны, сбрасывается в ноль при разрыве связи. Аппаратура компьютера может издавать прерывание при наступлении такого события.
RI (Ring Indicator — сигнал вызова) — вход на компьютере, выход на модеме. Взводится модемом в единицу после обнаружения вызывного сигнала телефонного звонка. Аппаратура компьютера может издавать прерывание при наступлении такого события.
SG (Signal Ground — сигнальная земля) — общий сигнальный провод порта, не является общей землёй , как правило, изолирован от корпуса ЭВМ или модема.
В нуль-модемном кабеле используются две перекрещенные пары: TXD/RXD и RTS/CTS.
Исходно в IBM PC и IBM PC/XT аппаратура порта была построена на микросхеме UART 8250 фирмы National Semiconductor, затем микросхема была заменена на 16450, программно совместимой с предыдущими, но позволявшей использовать скорости вплоть до 115200 бит в секунду, затем появилась микросхема 16550, содержавшая двунаправленный FIFO буфер данных для снижения нагрузки на контроллер прерываний. В настоящее время включена в SuperIO микросхему на материнской плате вместе с рядом иных устройств.
Программный доступ к COM-порту
UNIX
COM-порты в операционной системе Unix ( Linux ) — это файлы символьных устройств. Обычно эти файлы располагаются в каталоге /dev и называются
- ttyS0 , ttyS1 , ttyS2 и т. д. в Linux
- ttyd0 , ttyd1 , ttyd2 и т. д. (или ttyu0 , ttyu1 , ttyu2 и т. д. начиная с версии 8.0) в FreeBSD
- ttya , ttyb , ttyc и т. д. в Solaris
- ttyf1 , ttyf2 , ttyf3 и т. д. в IRIX
- tty1p0 , tty2p0 , tty3p0 и т. д. в HP-UX
- tty01 , tty02 , tty03 и т. д. в
- ser1 , ser2 , ser3 и т. д. в QNX
Для программного доступа к COM-порту необходимо открыть на чтение/запись соответствующий файл и сделать вызовы специальных функций tcgetattr (для того, чтобы узнать текущие настройки) и tcsetattr (чтобы установить новые настройки). Также может потребоваться сделать вызовы с определёнными параметрами. После этого при записи в файл данные будут отправляться через порт, а при чтении программа будет получать уже принятые данные из буфера COM-порта.
Устройства с именами «ttyxx» используются как серверные, то есть приложение, открывшее данное устройство, обычно ожидает входящего звонка от модема. Классическим таким приложением, используемым по умолчанию, является getty , которая ожидает входящего звонка, далее настраивает COM-порт в соответствии с файлами конфигурации, выводит туда "login: ", принимает имя пользователя и запускает как потомка команду «login ИмяПользователя», со стандартным вводом и выводом, перенаправленными в COM-порт. Эта команда в свою очередь запрашивает и проверяет пароль, и в случае успеха запускает (не как потомка, а вместо себя вызовом execve в том же процессе) default user shell, прописанный в файле /etc/passwd.
Эта технология исторически возникла в 1970-е годы, когда под ОС UNIX использовались компьютеры вроде PDP-11 (в СССР серия называлась СМ ЭВМ ) или VAX , позволяющие подключение многих терминалов для работы многих пользователей. Терминалы — а значит, и весь интерфейс пользователя — при этом подключались через последовательные порты, с возможностью подключения вместо терминала модема и дальнейшего дозвона на компьютер по телефону. До сих пор в UNIX-подобных ОС существует терминальный стек, и обычно 3 реализации терминалов — последовательный порт, консоль текстового режима экрана+клавиатура, и «обратная петля» в один из открытых файлов управляющего приложения (так реализованы telnetd, sshd и xterm).
Клиентские устройства последовательного порта, предназначенные для совершения звонков вовне, в многих UNIX (не во всех) называются cuaxx.
Так как последовательный порт в UNIX доступен только через терминальный стек, он может быть управляющим терминалом для процессов и групп (посылать SIGHUP при разрыве связи от модема и SIGINT при нажатии Ctrl-C), на уровне ядра поддерживать редактирование последней введенной строки клавишами стрелочек, и т. д. Для отключения этой возможности с целью превращения устройства в «трубу» для потока байт необходимы вызовы ioctl.
Windows
С последовательными портами в Win32 работают как с файлами. Для открытия порта используется функция CreateFile. Портов может быть много, поэтому они обозначаются как COM1, COM2 и т. д. по порядку обнаружения драйверов соответствующих устройств. Первые 9 портов доступны в том числе как именованные каналы для передачи данных (доступны по именам «COM1», «COM2», …), такой метод доступа считается устаревшим. Рекомендуется ко всем портам обращаться как к файлам (по именам «\\.\COM1», «\\.\COM2»,… «\\.\COMx»).
Поиск PnP-имен устройств в системе осуществляется вызовом SetupDiGetClassDevs. В реестре существует раздел HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM, в котором отображаются имеющиеся в данный момент COM-порты.
Для каждого порта в реестре имеется раздел. Эти разделы имеют такие имена:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000,
где последнее значение «Serial10000» — уникальный номер для каждого нового добавленного в систему COM-порта, для второго — «Serial10001» и т. д.
OS/2
Имеющийся драйвер COM.SYS поддерживает только 4 COM-порта, каждый из которых должен иметь свою линию прерываний. Для обслуживания COM-портов с общей линией прерывания необходимо воспользоваться драйвером SIO .
Нуль-модемный кабель
В некоторых случаях возможно применение упрощённого варианта кабеля, в котором задействуются только контакты 2, 3 и 5.
См. также
Примечания
- Используется только в терминологии ОС семейства Windows , исторически пришло из ОС MS-DOS и классического IBM PC .
- от 21 июня 2013 на Wayback Machine Что Такое Функция AllShare?]
- . Дата обращения: 25 августа 2010. Архивировано из 15 мая 2011 года.
Ссылки
|
В этой статье
внешние ссылки могут не соответствовать
правилам
Википедии
.
|
- — не позволяет работать из Windows, в отличие от официальных пакетов от Sun.
- — библиотека для работы с последовательным портом из Java. Поддерживает Win32(Win98-Win8), Win64, Linux(x86, x86-64, ARM), Solaris(x86, x86-64), Mac OS X 10.5 and higher(x86, x86-64, PPC, PPC64).
- на C++ под Windows. Готовая библиотека, исходные тексты, примеры программ.
- Яшкардин В.Л. . SoftElectro (2009). Дата обращения: 18 октября 2010.
- 2021-07-30
- 1