Послідовний порт

Зовнішні роз'єми материнської плати : PS / 2 (1 - миша, 2 - клавіатура), 100BASE-T 8P8C (3), USB (4), RS-232 DE-9 (5), IEEE 1284 (LPT) DB-25 (6), відеопорт VGA (7), ігровий порт (8)) і аудіороз'єми міні- TRS (9)
Роз'єм DE-9, використовуваний для інтерфейсу RS-232

Послідовний порт, англ. serial port (А також серійний порт або COM-порт [1], англ. communications port ) - Двонаправлений послідовний інтерфейс.

Послідовним даний порт називається тому, що інформація через нього передається по одному біту, біт за бітом (на відміну від паралельного порту). Хоча деякі інші інтерфейси комп'ютера - такі як Ethernet, FireWire і USB - також використовують послідовний спосіб обміну, назва "послідовний порт" закріпилося за портом, що має стандарт RS-232 C.

Особливістю даного порту у порівнянні з іншими "послідовними" технологіями є факт відсутності будь-яких тимчасових вимог між 2 байтами. Тимчасові вимоги є тільки між бітами одного байта (включаючи старт, стоп і парність), величина, зворотна тимчасової паузі між бітами одного байта, називається baud rate - швидкість передачі. Також в цій технології відсутнє поняття "пакет".

Інші "послідовні" технології, такі, як X.25, USB або Ethernet, мають поняття "пакет", і накладають жорсткі часові вимоги між усіма бітами одного пакета.

З цієї причини в термінології Cisco IOS даний порт називався async - на відміну від синхронних serial, тобто X.25. З цієї ж причини модуль Windows, який реалізує PPP поверх даного порту, називається AsyncMac.sys (у стандарті PPP окремо описана реалізація PPP, що використовує поняття "пакет", над послідовним портом, цього поняття не мають).

Деякі протоколи зв'язку з індустріальним обладнанням накладають жорсткі часові вимоги між байтами послідовного порту. Такі протоколи вкрай складні в реалізації в багатозадачних ОС зі слабкою підтримкою реального часу, такий, як Windows, і тому часто вимагають MS-DOS і застарілого ПЗ майже 20-річної давності на керуючому комп'ютері.


1. Призначення

Найбільш часто для послідовного порту персональних комп'ютерів використовується стандарт RS-232C. Раніше послідовний порт використовувався для підключення терміналу, пізніше для модему або миші. Зараз він використовується для з'єднання з джерелами безперебійного живлення, для зв'язку з апаратними засобами розробки вбудовуваних обчислювальних систем, супутниковими ресиверами, касовими апаратами, а також з приладами систем безпеки об'єктів.

За допомогою COM-порту можна з'єднати два комп'ютери, використовуючи так званий "нуль-модемний кабель" (див. нижче). Використовувався з часів MS-DOS для перекачування файлів з одного комп'ютера на інший, в UNIX для термінального доступу до іншої машини, а в Windows (навіть сучасної) - для відладчика рівня ядра.

Перевагою технології є крайня простота обладнання. Недоліком є ​​низька швидкість, великі розміри роз'ємів, а також часто високі вимоги до часу відгуку ОС і драйвера і високу кількість переривань (одне на половину апаратної черги, тобто 8 байт).


2. Роз'єми

На материнських платах провідних виробників (наприклад, Intel) або готових системах (наприклад, IBM, Hewlett-Packard, Fujitsu Siemens Computers) для послідовного порту прийнято наступне умовне позначення:

Варіанти роз'єму COM-порту типу DB-9F

Найбільш часто використовуються стандартизовані в 1969 D-образні роз'єми: 9-ти і 25-ти контактні, (DB-9 і DB-25 відповідно). Раніше використовувалися також DB-31 і круглі восьмиконтактний DIN-8. Максимальна швидкість передачі, в звичайному виконанні порту, складає 115 200 бод.


3. Актуальність

Широко поширений в IBM PC-сумісних комп'ютерах, послідовний порт в даний час морально застарів ( Специфікація PC99 - один із прикладів спроби позбутися в сучасних материнських платах від спадщини старих інтерфейсів), але ще нерідко присутній на сучасних комп'ютерах і використовується в промисловому і вузькоспеціалізованому обладнанні. В даний час в IBM PC-сумісних комп'ютерах практично витіснений інтерфейсом USB.

Існують стандарти на емуляцію послідовного порту над USB і над Bluetooth (ця технологія в значній мірі і проектувалася як "бездротової послідовний порт").

Тим не менш програмна емуляція даного порту широко використовується і сьогодні. Так, наприклад, практично всі мобільні телефони емулюють всередині себе класичний COM-порт і модем для реалізації тетерінга - доступу комп'ютера в Інтернет через GPRS/EGDE/3G обладнання телефону. При цьому для фізичного підключення до комп'ютера використовується USB, Bluetooth або Wi-Fi [2].

Також програмна емуляція даного порту надається "гостям" віртуальних машин VMWare і Microsoft Hyper-V, основна мета при цьому - підключення відладчика рівня ядра Windows до "гостю".


4. Апаратура

Роз'єм має контакти:

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) апаратура порту називається UART 16550 (в даний час включена в SuperIO мікросхему на материнській платі разом з рядом інших пристроїв). З часів IBM PC в ній з'явилася апаратна чергу байт, яка сильно знижує кількість видаваних пристроєм переривань.


5. Програмний доступ до СОМ-порту

5.1. 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 і т. д. в Digital Unix
  • ser1, ser2, ser3 і т. д. в QNX

Для програмного доступу до СОМ-порту необхідно відкрити на читання / запис відповідний файл і зробити виклики спеціальних функцій tcgetattr (для того, щоб дізнатися поточні настройки) і tcsetattr (щоб встановити нові настройки). Також може знадобитися зробити виклики ioctl з певними параметрами. Після цього при записі у файл дані будуть відправлятися через порт, а при читанні програма буде отримувати вже прийняті дані з буфера СОМ-порту.

Пристрої з іменами "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.


5.2. Windows

COM-порти в операційній системі Windows - це іменовані канали для передачі даних, звані зазвичай COM1, COM2 і т. д. по порядку виявлення драйверів відповідних пристроїв (таке іменування давно вважається застарілим і додаткам рекомендується шукати PnP-імена всіх таких пристроїв на машині викликом SetupDiGetClassDevs, однак і донині день багато додатки залежать від цих застарілих імен). Наприклад, для обміну інформацією через Bluetooth багато драйверів представляються операційній системі як COM-порт, і резервують схоже ім'я. Слід також зазначити, що організація взаємодії по послідовному порту з точки зору програмування реалізується значно легше, ніж інші способи.

Для кожного порту в реєстрі є розділ. Ці розділи мають такі імена:

 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Serial \ Parameters \ Serial10000 

де останнє значення "Serial10000" - унікальний номер для кожного нового доданого в систему COM-порту, для другого - "Serial10001" і т.д

Для зв'язку з пристроями, що підтримують Bluetooth, деякими програмами (наприклад, до таких програм відносяться: програма, яка синхронізує список контактів з мобільним телефоном; програма, яка витягує координати GPS з GPS-приймача) на комп'ютері користувача потрібно COM-порт.

До програм, що використовують COM-порти для підтримки зв'язку за допомогою технології бездротового підключення Bluetooth, безпосередньо розроблених фірмою Microsoft, відносяться:

  • HotSync, використовуваний в ручних комп'ютерах
  • ActiveSync, використовуваний в кишенькових ПК
  • Microsoft Streets and Trips 2002

5.3. OS / 2

Наявний драйвер COM.SYS підтримує тільки 4 COM-порту, кожен з яких повинен мати свою лінію переривань. Для обслуговування COM-портів із загальною лінією переривання необхідно скористатися драйвером SIO [3].

6. Нуль-модемний кабель

Null-modem.svg

У деяких випадках можливе застосування спрощеного варіанту кабелю, в якому задіюються тільки контакти 2, 3 і 5.

Примітки

  1. Використовується тільки в термінології ОС сімейства Windows, історично прийшло з MS-DOS і класичної IBM PC
  2. Що Таке Функція AllShare? - skp.samsungcsportal.com / integrated / popup / FaqDetailPopup.jsp? seq = 333410 & cdsite = ua_ru
  3. Установка плати COM порту в комп'ютер - www.granato.kiev.ua / Pasport / SETcom / set_COMp_WIN.htm