Port serial ( port serial ing. , port COM [1] , port de comunicații ing. ) este denumirea argou pentru interfața standardului RS-232 , care a fost echipat masiv cu computere personale . Portul se numește „serial”, deoarece informațiile sunt transmise prin el un bit , secvențial bit cu bit (spre deosebire de portul paralel ). În ciuda faptului că unele interfețe de computer (de exemplu, Ethernet , Firewire și USB ) folosesc, de asemenea, un mod serial de schimb de informații, numele „port serial” a fost atribuit portului standardului RS-232 .
Cel mai frecvent utilizat standard pentru portul serial al computerelor personale este RS-232C. Anterior, portul serial era folosit pentru a conecta un terminal, ulterior pentru un modem sau mouse . Acum este folosit pentru a se conecta la surse de alimentare neîntreruptibilă , pentru a comunica cu hardware-ul de dezvoltare de calcul încorporat , receptoare prin satelit, case de marcat, programatori, dispozitive de securitate și multe alte dispozitive.
Folosind portul COM, puteți conecta două computere folosind așa-numitul „cablu de modem nul” (vezi mai jos). Un astfel de cablu a fost folosit încă de la MS-DOS pentru a transfera fișiere de la un computer la altul, în UNIX pentru acces terminal la o altă mașină și în Windows (chiar modern) pentru un depanator la nivel de kernel.
Avantajul tehnologiei este simplitatea extremă a echipamentului. Dezavantajul este viteza redusă, conectorii mari, precum și cerințele adesea ridicate pentru timpii de răspuns ale sistemului de operare și driverului și un număr mare de întreruperi (una pentru jumătate din coada hardware, adică 8 octeți).
Pe plăcile de bază de la producători de top (de exemplu, Intel ) sau sisteme gata făcute (de exemplu, IBM , Hewlett-Packard , Fujitsu Siemens Computers ), simbolul COM sau RS-232 este adoptat pentru portul serial.
Cei mai des utilizați sunt conectorii în formă de D standardizați în 1969 : 9 și 25 de pini, (DE-9 și, respectiv, DB-25). Anterior, s-au folosit, de asemenea, DA-31 și DIN-8 rotunde cu opt pini. Rata maximă de transmisie pentru un port tipic este de 115200 baud .
Răspândită în computerele compatibile cu PC-uri IBM , interfața RS-232 nu este potrivită pentru sarcini de divertisment și birou, dar este utilizată pe scară largă în sarcini aplicate, așa că încercările de a scăpa de moștenirea interfețelor vechi din plăcile de bază moderne sunt sortite pieirii. Specificația PC99 este unul dintre exemplele nereușite de încasare cu privire la o înlocuire pe scară largă a echipamentelor „învechite”. Ei scriu despre ea că este „acum învechit și de interes pur istoric”, iar producția de echipamente „învechite” este înfloritoare. În computerele de birou și de acasă, unde distanțele și interferențele sunt mici, iar cursul de schimb este solicitat, RS-232 a fost practic înlocuit de interfața USB .
Există standarde pentru emularea portului serial prin USB și prin Bluetooth (această tehnologie a fost concepută în mare parte ca „port serial fără fir”).
Cu toate acestea, emularea software a acestui port este încă utilizată pe scară largă astăzi. Deci, de exemplu, aproape toate telefoanele mobile emulează un port COM clasic și un modem în interiorul lor pentru a implementa tethering - acces computer la Internet prin echipamente telefonice GPRS / EDGE / 3G / 4G. În acest caz, USB , Bluetooth sau Wi-Fi [2] este utilizat pentru conexiunea fizică la computer .
De asemenea, emularea software a acestui port este oferită „oaspeților” mașinilor virtuale VMWare și Microsoft Hyper-V , al căror scop principal este conectarea depanatorului la nivel de kernel Windows la „oaspete”.
Sub formă de UART , care diferă în niveluri de tensiune și absența semnalelor suplimentare, este prezent în aproape toate microcontrolerele, cu excepția celor mai mici plăci de dezvoltare, SoC, și este prezent și pe plăcile majorității dispozitivelor, deși conectorul nu este afișat pe carcasă. O astfel de popularitate se datorează simplității acestei interfețe, atât din punct de vedere fizic, cât și ușurinței accesului la port prin software în comparație cu alte interfețe.
Conectorul are contacte:
DTR (Data Terminal Ready - pregătirea pentru a primi date) - ieșire pe computer, intrare pe modem. Indică faptul că computerul este pregătit să lucreze cu modemul. Resetarea acestei linii determină o resetare aproape completă a modemului la starea inițială, inclusiv închiderea (unele registre de control supraviețuiesc după o astfel de resetare). Pe UNIX, acest lucru se întâmplă atunci când toate aplicațiile au fișiere închise pe driverul portului serial. Mouse-ul folosește acest fir pentru a primi energie.
DSR (Data Set Ready - pregătire pentru transferul de date) - intrare pe un computer, ieșire pe un modem. Indică că modemul este gata. Dacă această linie este la zero, atunci în unele sisteme de operare devine imposibil să deschideți portul ca fișier.
RxD (Receive Data - recepție de date) - intrare pe computer, ieșire pe modem. Un flux de date care intră într-un computer.
TxD (Transmit Data - transfer de date) - ieșire pe computer, intrare pe modem. Un flux de date care iese dintr-un computer.
CTS (Clear to Send - pregătire pentru transmisie) - intrare pe computer, ieșire pe modem. Computerul trebuie să suspende transferul de date până când acest fir este setat la unul. Folosit în protocolul de control al fluxului hardware pentru a preveni supraîncărcarea modemului.
RTS (Request to Send - cerere de transmisie) - ieșire pe computer, intrare pe modem. Modemul trebuie să suspende transmisia de date până când acest fir este setat la unu. Folosit în protocolul de control al fluxului hardware pentru a preveni depășirea în hardware și driver.
DCD (Carrier Detect - Carrier present) - intrare pe computer, ieșire pe modem. Setați de modem la unu după stabilirea unei conexiuni cu modemul de pe cealaltă parte, resetați la zero când conexiunea este întreruptă. Hardware-ul computerului poate emite o întrerupere atunci când are loc un astfel de eveniment.
RI (Ring Indicator - semnal de apel) - intrare pe computer, ieșire pe modem. Este fixat de modem la unul după detectarea semnalului de apel al unui apel telefonic. Hardware-ul computerului poate emite o întrerupere atunci când are loc un astfel de eveniment.
SG (Signal Ground - signal ground) - un fir de semnal comun al portului, nu este o masă comună , de regulă, izolat de carcasa computerului sau modem.
Un cablu de modem nul folosește două perechi crossover: TXD/RXD și RTS/CTS.
Inițial, în IBM PC și IBM PC / XT, hardware-ul portului a fost construit pe cipul UART 8250 de la National Semiconductor, apoi cipul a fost înlocuit cu 16450, care era software compatibil cu cele anterioare, dar permitea viteze de până la 115200 de biți pe secundă, apoi a apărut cipul 16550, care conținea tampon de date FIFO bidirecțional pentru a reduce sarcina controlerului de întrerupere. În prezent, este inclus în cipul SuperIO de pe placa de bază, împreună cu o serie de alte dispozitive.
Porturile COM din sistemul de operare Unix ( Linux ) sunt fișiere de dispozitiv cu caractere. Aceste fișiere sunt de obicei localizate în directorul /dev și sunt numite
Pentru accesul programatic la un port COM, trebuie să deschideți fișierul corespunzător pentru citire/scriere și să efectuați apeluri la funcțiile speciale tcgetattr (pentru a afla setările curente) și tcsetattr (pentru a seta noi setări). De asemenea, poate fi necesar să efectuați apeluri ioctl cu anumiți parametri. După aceea, atunci când scrieți într-un fișier, datele vor fi trimise prin port, iar la citire, programul va primi date deja primite din bufferul portului COM.
Dispozitivele numite „ttyxx” sunt folosite ca dispozitive server, adică aplicația care a deschis acest dispozitiv așteaptă de obicei un apel de intrare de la modem. Aplicația implicită clasică este getty , care așteaptă un apel de intrare, apoi configurează portul COM în funcție de fișierele de configurare, scoate „login:” acolo, acceptă un nume de utilizator și rulează comanda „loginUserName” ca copil, cu intrare standard. și ieșirea redirecționată către portul COM. Această comandă, la rândul său, solicită și verifică parola și, dacă are succes, lansează (nu ca copil, ci în loc de ea însăși, apelând execve în același proces) shell-ul implicit al utilizatorului specificat în fișierul /etc/passwd.
Această tehnologie își are originea istoric în anii 1970, când calculatoare precum PDP-11 (în URSS seria numită SM EVM ) sau VAX au fost folosite sub sistemul de operare UNIX , permițând conectarea multor terminale pentru munca multor utilizatori. Terminalele - și, prin urmare, întreaga interfață cu utilizatorul - au fost conectate prin porturi seriale, cu posibilitatea de a conecta un modem în loc de un terminal și apoi de a apela computerul prin telefon. Până acum, sistemele de operare asemănătoare UNIX au o stivă de terminale și, de obicei, 3 implementări de terminale - un port serial, un ecran în mod text + consolă de tastatură și un „loopback” la unul dintre fișierele deschise ale aplicației de control (iată cum Telnetd, sshd și xterm sunt implementate).
Dispozitivele client cu port serial pentru efectuarea de apeluri către exterior sunt numite cuaxx pe multe (dar nu pe toate) UNIX-urile.
Deoarece portul serial din UNIX este accesibil doar prin stiva de terminale, poate fi un terminal de control pentru procese și grupuri (trimite SIGHUP la deconectare de la modem și SIGINT pe Ctrl-C), acceptă editarea ultimei linii introduse cu tastele săgeți la nivelul nucleului și etc. Dezactivarea acestei caracteristici pentru a transforma dispozitivul într-o „conductă” pentru un flux de octeți necesită apeluri ioctl.
Porturile seriale din Win32 sunt tratate ca fișiere. Funcția CreateFile este folosită pentru a deschide un port. Pot exista multe porturi, deci sunt denumite COM1, COM2 etc. în ordinea în care se găsesc driverele de dispozitiv. Primele 9 porturi sunt disponibile și ca conducte numite pentru transferul de date (disponibile sub denumirile „COM1”, „COM2”, ...), această metodă de acces este considerată învechită. Este recomandat să adresați toate porturile ca fișiere (numite „\\.\COM1”, „\\.\COM2”, ... „\\.\COMx”).
Căutarea numelor de dispozitive PnP în sistem se face apelând SetupDiGetClassDevs. Cheia HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM există în registry, care afișează porturile COM disponibile în prezent.
Există o secțiune în registru pentru fiecare port. Aceste secțiuni au următoarele denumiri:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000,unde ultima valoare "Serial10000" este un număr unic pentru fiecare port COM nou adăugat la sistem, pentru al doilea - "Serial10001", etc.
Driverul COM.SYS disponibil acceptă doar 4 porturi COM, fiecare dintre ele trebuie să aibă propria linie de întrerupere. Pentru a deservi porturile COM cu o linie de întrerupere comună, trebuie să utilizați driverul SIO [3] .
În unele cazuri, este posibilă utilizarea unei versiuni simplificate a cablului, în care sunt utilizați numai pinii 2, 3 și 5.
UART | |||||||
---|---|---|---|---|---|---|---|
Straturi fizice |
| ||||||
Protocoale |
| ||||||
Domenii de utilizare | |||||||
Implementări |
|