Bit per másodperc — az adatátvitel sebessége
Adatterminál eszköz (Data Terminal Equipment) — ez például a számítógépünk
Adatkommunikációs eszköz (Data Communications Equipment) — ez a modem
a hardveres soros vonali kommunikációhoz szükséges EIA szabványú kábel
Amikor ebben a fejezetben az adatátvitel sebességéről beszélünk, akkor szándékosan nem használjuk a “baud” fogalmát. A baud ugyanis a kommunikációs eszközben adott idő alatt lezajló jelváltások mennyiségét jelöli, miközben itt a “bps” (bit per másodperc) kifejezés használata a helyes (vagy legalább is a szőrszálhasogatók egyelőre megnyugodhatnak).
Ha a FreeBSD rendszerünkhöz egy modemet vagy egy terminált akarunk csatlakoztatni, akkor ahhoz a számítógépünkben szükség lesz egy szabad soros portra és egy megfelelő típusú kábelre. Ha már tisztában vagyunk a rendelkezésre álló hardverrel és a hozzá tartozó kábellel, akkor nyugodtan átléphetjük ezt a részt.
A soros kábeleknek több különböző típusa van. Közülük a céljainknak leginkább megfelelő két legismertebb változatuk az ún. null-modem és a szabványos (“egyenes”) RS-232-es soros kábelek. A hardverhez tartozó dokumentációban megtaláljuk, hogy pontosan melyik típus tartozik hozzá.
Egy null-modem kábel bizonyos jeleket, többek közt a “földet” (Signal Ground, SG), egyenesen küldi, másokat viszont felcserélten. Például az “átküldött adat” (Transmitted Data, TD) jelzésű tű a kábel másik végén a “fogadott adat” (Received Data, RD) tűhöz fut be.
A terminálokhoz akár saját magunk is le tudunk gyártani egy null-modem kábelt (például ha a boltiakkal nem lennénk megelégedve). A következő táblázatban az RS-232C jeleit és érintkezőinek számozását láthatjuk egy DB-25-ös csatlakozó esetében. A szabvány a kábel két 1-es tűjét összekapcsoló vonalat védőföldnek (Protective Ground, PD) nevezi, de ezt gyakran el is hagyják. Némely terminál remekül működik mindössze a 2-es, 3-as és 7-es tűk használatával, miközben mások az iménti példától eltérő kiosztást igényelnek.
Táblázat 26-1. A DB-25 DB-25 közti null-modem kábel
Jel | Tű | Tű | Jel | |
---|---|---|---|---|
SG | 7 | párja: | 7 | SG |
TD | 2 | párja: | 3 | RD |
RD | 3 | párja: | 2 | TD |
RTS | 4 | párja: | 5 | CTS |
CTS | 5 | párja: | 4 | RTS |
DTR | 20 | párja: | 6 | DSR |
DTR | 20 | párja: | 8 | DCD |
DSR | 6 | párja: | 20 | DTR |
DCD | 8 | párja: | 20 | DTR |
Íme a mostanság elterjedt másik két séma.
Táblázat 26-2. A DB-9 DB-9 közti null-modem kábel
Jel | Tű | Tű | Jel | |
---|---|---|---|---|
RD | 2 | párja: | 3 | TD |
TD | 3 | párja: | 2 | RD |
DTR | 4 | párja: | 6 | DSR |
DTR | 4 | párja: | 1 | DCD |
SG | 5 | párja: | 5 | SG |
DSR | 6 | párja: | 4 | DTR |
DCD | 1 | párja: | 4 | DTR |
RTS | 7 | párja: | 8 | CTS |
CTS | 8 | párja: | 7 | RTS |
Táblázat 26-3. DB-9 DB-25 közti null-modem kábel
Jel | Tű | Tű | Jel | |
---|---|---|---|---|
RD | 2 | párja: | 2 | TD |
TD | 3 | párja: | 3 | RD |
DTR | 4 | párja: | 6 | DSR |
DTR | 4 | párja: | 8 | DCD |
SG | 5 | párja: | 7 | SG |
DSR | 6 | párja: | 20 | DTR |
DCD | 1 | párja: | 20 | DTR |
RTS | 7 | párja: | 5 | CTS |
CTS | 8 | párja: | 4 | RTS |
Megjegyzés: Amikor egy tű az átellenes oldalon két másik tűhöz csatlakozik, akkor azt általában úgy valósítják meg, hogy a két tűt a saját oldalukon összekötik, majd ezt kapcsolják hozzá a harmadik tűhöz.
Ezek a megoldások a legnépszerűbbek. Természetesen a tűk összekötésének több más variációja is létezik (ezekről az RS-232 Made Easy c. könyvben olvashatunk bővebben), ahol az SG párja az SG, a TD párja az RD, az RTS és a CTS párja az DCD, a DTR párja a DSR és ugyanezek fordítva.
A szabványos soros kábel az összes RS-232C jelet közvetlenül átküldi. Vagyis a kábel egyik végén levő “átküldött adat” tű a másik végén is az “átküldött adat” tűhöz csatlakozik. Az ilyen típusú kábeleket többnyire a számítógépek és a modemek között alkalmazzák, de egyes termináltípusok esetében is szükségünk lehet rá.
A soros port olyan eszköz, amelyen keresztül a FreeBSD-s gép és a terminál között adatokat tudunk közvetíteni. Ebben a szakaszban az ilyen portok különféle típusait és ezek használatát ismertetjük FreeBSD alatt.
A soros portoknak több típusa létezik. Mielőtt vásárolnánk egy készítenénk egy soros kábelt, mindenképpen győzödjünk meg róla, hogy csatlakoztatni tudjuk majd a FreeBSD-s rendszerünkhöz és a terminálhoz egyaránt.
A legtöbb terminálon DB-25-ös portot találunk. A személyi számítógépek, köztük azok, amelyeken FreeBSD fut, DB-25-ös és DB-9es portokkal rendelkeznek. Ha a gépünkben egy többportos soros kártya van, akkor ezeken kívül még RJ-12-es és RJ-45-ös portjaink is lehetnek.
A hardverhez tartozó dokumentációból tudjuk kideríteni az adott port konkrét fajtáját, de gyakran a port vizuális vizsgálata is segíthet eldönteni a kérdést.
FreeBSD alatt az egyes soros portokat a /dev könyvtárban található eszközleírókon keresztül tudjuk elérni. Ezeknek két típusa van:
A behíváshoz használt portok nevei /dev/ttydN alakúak, ahol az N a port sorszáma, ami nullától indul. A behívó portok alapvetően a terminál esetében használatosak. A behívó portok használatához a soros vonalon az “vonal észlelése” (Data Carrier Detect, DCD) jelnek kell megbízhatóan működnie.
A híváshoz használt portok nevei /dev/cuadN alakúak. A hívó portokat terminálok esetében ritkán alkalmazzák, helyettük inkább csak modemekhez használják. A hívó portokat akkor érdemes használni, ha a soros kábel vagy a terminál nem ismeri a DCD jelet.
Ha a terminált az első soros portra (ami MS-DOS®-ban a COM1) csatlakoztattuk, akkor a /dev/ttyd0 segítségével fogunk rá hivatkozni. Ha viszont a második soros porton (más néven COM2) található, akkor a /dev/ttyd1 eszközt használjuk, és így tovább.
A FreeBSD alapból négy soros portot támogat. Az MS-DOS világban ezeket rendre COM1, COM2, COM3 és COM4 portoknak nevezik. A FreeBSD jelen pillanatban ismeri még a “butább” többportos soros csatolókártyákat is, például a BocaBoard 1008 és 2016 típusokat, valamint több intelligensebb többportos kártyát, például a Digiboard és a Stallion Technologies gyártmányait. Az alap rendszermag azonban csak a szabványos COM portokat keresi.
Ha ellenőrizni akarjuk, hogy a rendszermag rendben megtalálta a soros portokat, akkor figyelmesen olvassuk el a rendszerindítás során megjelenő üzeneteket, vagy az /sbin/dmesg parancs kiadásával kérdezzük vissza a rendszermag üzeneteit. Különösen a sio kezdetű sorokra kell figyelnünk.
Tipp: Az alábbi paranccsal tudjuk leszűrni a sio szövegrészt tartalmazó sorokat:
# /sbin/dmesg | grep 'sio'
Például, ha négy soros port található a rendszerünkben, akkor a rájuk vonatkozó rendszerüzenetek a következők lesznek:
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
Ha a rendszermagunk nem ismerte volna fel az összes soros portot, akkor valószínűleg a /boot/device.hints állományt kell módosítanunk. Tegyük megjegyzésbe vagy akár teljesen távolítsuk is el azokat az eszközöket, amelyekkel nem rendelkezünk.
A soros portok és a többportos kártyák beállításával kapcsolatban a sio(4) man oldalát olvassuk el. Óvatosan bánjunk a FreeBSD megelőző változataiból származó konfigurációs állományokkal, mert az eszközök vonatkozó beállításokat és azok formátuma megváltozhatott azóta.
Megjegyzés: Az port IO_COM1 a port 0x3f8, az IO_COM2 a 0x2f8, az IO_COM3 a 0x3e8 és az IO_COM4 a 0x2e8 beállítást helyettesíti. Ezek az adott porthoz tartozó gyakori címeket képviselik. A 4-es, 3-as, 5-ös és 9 megszakítások is igen általánosak ezeknél. A hagyományos soros portok viszont az ISA buszos PC-k esetében nem képesek a megszakításokon osztozni. (A többportos kártyák azonban lehetővé teszik az 16550A számára, hogy mindössze egy vagy két megszakítást használjon.)
A rendszermagban található legtöbb eszköz az ún. “speciális eszközállományokon” keresztül érhető el, melyek a /dev könyvtárban találhatóak. A sio eszközök a /dev/ttydN (behívó portok) és /dev/cuadN (hívó portok) állományok használatával érhetőek el. A FreeBSD ezenkívül még külön eszközállományokat biztosít az inicializációhoz (/dev/cuadN.init) és a zároláshoz (/dev/cuadN.lock). Az inicializációs állományok a port megnyitásakor használhatóak a hozzá tartozó paraméterek beállítására, például így tudjuk elküldeni a crtscts utasítást az olyan modemeknek, amelyek a forgalom irányítását RTS/CTS jelzéseken keresztül valósítják meg. A zároló állományokkal a portokra vonatkozó zárolásokat állíthatjuk be, így a felhasználók vagy a programok nem lesznek képesek bizonyos paramétereket megváltoztatni. A termios(4), sio(4) és stty(1) man oldalakon olvashatunk részletesebben a terminálok beállításairól, valamint az eszközök zárolásáról és inicializálásáról.
A ttydN (vagy cuadN) lesz az az eszköz, amit majd az alkalmazásainkból el akarunk érni. Amikor egy futó program megnyit egy ilyen eszközt, mindig tartoznak hozzá alapértelmezett terminál I/O beállítások. Ezeket a következő paranccsal tudjuk lekérdezni:
# stty -a -f /dev/ttyd1
Ha megváltoztatjuk az eszköz
beállításait, akkor azok egészen
addig érvényben is maradnak, amíg le nem
zárjuk. Ha tehát ezután újra
megnyitjuk, akkor minden visszaáll az
alapértelmezett állapotra. Az
alapértelmezett beállítások
megváltoztatásához a “kezdeti
állapotot” szimbolizáló eszközt
kell megnyitnunk és átállítanunk.
Például, ha alapból engedélyezni
akarjuk a CLOCAL
módot, a 8 bites
kommunikációt és a
XON/XOFF
típusú
forgalomirányítást a
ttyd5 eszközön, akkor a
következőt gépeljük be:
# stty -f /dev/ttyd5.init clocal cs8 ixon ixoff
A soros eszközök rendszerszintű inicializálását az /etc/rc.d/serial állomány vezérli. Lényegében ez határozza meg az összes soros eszköz alapértelmezett beállítását.
Ha bizonyos beállítások megváltoztatását tiltani szeretnénk az alkalmazások felé, akkor azt a “zárolt állapotot” tartalmazó eszközben kell rögzítenünk. Például, ha a ttyd5 eszköz sebességét fixen 57600 bps-ra akarjuk beállítani, akkor írjuk be ezt:
# stty -f /dev/ttyd5.lock 57600
Ezután ha egy alkalmazás megnyitja a ttyd5 eszközt és megpróbálja a port sebességét átállítani, akkor az továbbra is 57600 bps marad.
A kezdeti és a zárolt állapotot képező eszközöket általában csak a root felhasználó számára szabad írhatóvá tenni.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.