Sériové rozhraní

Implementace RS-232 pod OS Linux
Implementace USB pod OS Linux
Implementace FireWire pod OS Linux
Implementace IrDa pod OS Linux
Implementace extern SATA pod OS Linux
subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link

RS-232

Implementace RS-232 pod Linux

OBSAH

 

Terminálové programy

Zařízení, pomocí nichž umožňuje jádro Unixu přístup k sériovým zařízením, se typicky nazývají tty

port COM1: je reprezentován zařízením /dev/ttyS0

port COM2: zařízením /dev/ttyS1…

terminálové programy ,umožňují uživateli propojení s jiným počítacem - Tradičním unixovým terminálovým programem je kermit . Dnes už však je značně zastaralý a pravděpodobně byste jej považovali za príliš složitý na používání. Dnes jsou dostupné mnohem komfortnejší programy, které podporují ruzné další funkce jako adresář s telefonními čísly, skriptové jazyky pro automatické volání a připojování ke vzdáleným počítačovým systémům a řada různých souborových komunikačních protokolů. Jeden z nich se nazývá minicom ( popř pro uživatele X11 se nabízí plně vybavený komunikační program na bázi X11 - seyon . )

Soubory sériových zařízení

Vlastní soubor zařízení, pravděpodobně nebude pracovat se standardním souborem. Příslušné podrobnosti byste mřli najít v dokumentu Serial-HOWTO.

Budeme předpokládat, že váš modem je připojen na port COM2:. Jeho vedlejší číslo tak bude mít
hodnotu 65 a hlavní číslo bude při normálním použití rovno 4. Mělo by existovat zařízení ttyS1,
které bude mít tato čísla. Vypište si sériová tty zařízení z adresáře /dev. Pátý a šestý sloupec by
měly obsahovat hlavní a vedlejší číslo:

$ ls -l /dev/ttyS*

0 crw-rw---- 1 uucp dialout 4, 64 Oct 13 1997 /dev/ttyS0

0 crw-rw---- 1 uucp dialout 4, 65 Jan 26 21:55 /dev/ttyS1

0 crw-rw---- 1 uucp dialout 4, 66 Oct 13 1997 /dev/ttyS2

0 crw-rw---- 1 uucp dialout 4, 67 Oct 13 1997 /dev/ttyS3

Jestliže neexistuje zařízení s hlavním č íslem 4 a vedlejším č íslem 65, musíte je vytvořit: přihlaste se jako superuživatel a napište:

# mknod -m 666 /dev/ttyS1 c 4 65

# chown uucp.dialout /dev/ttyS1

Různé distribuce Linuxu používají různé strategie pro toho, kdo by měl sériové zařízení vlastnit. Někdy je vlastní uživatel root, jindy nějaký jiný uživatel, například uucp. Moderní distribuce používají skupinu uživatel s přístupem k sériovým zařízením a kdokoliv je má používat, přidá se do
této skupiny. Někteří lidé doporučují vytvořit soubor /dev/modem, který by sloužil jako symbolický odkaz na váš modem, takže si příležitostní uživatelé nemusí pamatovat poněkud neintuitivní název například ttyS1. Nemůžete pak ale v jednom programu používat soubor modem a ve druhém skutečný název souboru zařízení. Jejich zámkové soubory by pak měly různá jména a mechanismus zamykání by nefungoval.

Použití konfiguračních nástrojů

Nyní se podívejme na dva nástroje, které se pro konfiguraci sériových linek nejčastěji používají. Jsou to programy setserial a stty .

Příkaz setserial

Program setserial slouží k nastavení sériových portů za běhu. Tento příkaz se typicky spouští v době spouštění systému skriptem, který se na některých distribucích jmenuje 0setserial, na jiných rc.serial. Tento skript zodpovídá za nastavení sériových zařízení tak, aby byl správně
podchycen všechen nestandardní nebo neobvyklý hardware v počítači.Obecná syntaxe příkazu setserial je:

setserial device [parametry], kde parametr device představuje některé sériové zařízení, například ttyS0 .

Program setserial používá celou řadu parametrů. Nejbežnejší z nich jsou shrnuty v tabulce Informace o dalších parametrech najdete na manuálových stránkách programu setserial .

Řádkové parametry programu setserial

  • port port_number - Udává adresu vstupne-výstupního portu sériového zarízení. Hodnota se zadává hexadecimálne, napríklad 0x2f8.
  • irq num - Udává císlo použitého prerušení.
  • uart uart_type - Specifikuje UART cip zarízení. Možné hodnoty jsou 16450, 16550 a podobne. Nastavení této hodnoty na none vypne dané sériové zarízení.
  • fourport - Tento parametr jádru ríká, že daný port je jedním z portu karty AST Fourport.
  • spd_hi - Naprogramuje UART tak, aby pracoval rychlostí 57,6 kb/s, pokud proces požaduje rychlost 38,4 kb/s.
  • spd_vhi - Naprogramuje UART tak, aby pracoval rychlostí 115,2 kb/s, pokud proces požaduje rychlost 38,4 kb/s.
  • spd_normal - Naprogramuje UART na použití standardní rychlosti 38,4 kb/s. Tento parametr se používá k odstranení úcinku parametru spd_hi nebo spd_vhi na daném zarízení.
  • auto_irq - Tento parametr zpusobí, že se jádro pokusí automaticky detekovat IRQ daného zarízení. Výsledek nemusí být úplne spolehlivý, takže se na tuto operaci dívejme spíše jako na „hádání“ prerušení. Pokud znáte císlo prerušení, které zarízení používá, meli byste je zadat pomocí parametru irq.
  • autoconfig - Tento parametr muže být zadán jen spolecne s parametrem port. Zpusobí, že jádro bude automaticky detekovat typ UART na daném portu. Pokud je zadán i parametr auto_irq, bude se automaticky detekovati prerušení.
  • skip_test - Tento parametr jádru ríká, aby se nepokoušelo o automatickou detekci UART cipu. Používá se tehdy,pokud jádro stejne cip správne nedetekuje.

Typický a jednoduchý rc soubor pro nastavení sériových portů při spouštení systému vypadá tak, jako na příkladu konfiguračního skriptu rc.serial

# /etc/rc.serial – konfiguracní skript sériové linky.

#

# Konfigurace sériových zarízení

/sbin/setserial /dev/ttyS0 auto_irq skip_test autoconfig

/sbin/setserial /dev/ttyS1 auto_irq skip_test autoconfig

/sbin/setserial /dev/ttyS2 auto_irq skip_test autoconfig

/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig

#

# Zobrazení konfigurace sériových zarízení

/sbin/setserial -bg /dev/ttyS*

 

Parametr –bg /dev/ttyS* v posledním příkazu způsobí vytištení pěkně formátovaného přehledu hardwarové konfigurace všech aktivních sériových zařízení. Výstup bude vypadat podobně jako v následujícím příkladu:

Výstup príkazu setserial –bg /dev/ttyS*

/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A

/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A

 

Příkaz stty

Název příkazu stty zřejmě znamená „set tty“, nicméne příkazem stty je možné také zobrazit konfiguraci terminálu. Program stty umožňuje nastavení ještě rozsáhlejšího souboru vlastností než program setserial . Bližší informace najdete na manuálových stránkách programu stty zařízení. Pokud chcete zobrazit všechna nastavení daného tty zařízení, použijte príkaz:

$ stty -a -F /dev/ttyS1

Přehled nejduležitejších příznaků obsahuje následující tabulka Jednotlivé příznaky se zapnou tak, že se příkazu stty předají a vypnou tak, že se mu předají s uvádejícím symbolem minus. Pokud tedy budeme chtít na zařízení ttyS0 vypnout hardwarový handshaking, zadáme:

$ stty -crtscts -F /dev/ttyS0

Důležité příznaky příkazu stty pro konfiguraci sériových zařízení

  • N - Nastavuje rychlost linky na N bitu za sekundu.
  • crtscts - Zapíná/vypíná hardwarový handshaking.
  • ixon - Zapíná/vypíná XON/XOFF handshaking.
  • clocal - Zapíná/vypíná signály pro rízení modemu jako DTR/DTS a DCD. Je to nutné pri použití trívodicového sériového kabelu, protože ten tyto signály neprenáší.
  • cs5 cs6 cs7 cs8 - Nastavuje pocet datových bitu na 5, 6, 7 respektive 8.
  • parodd - Zapíná lichou paritu. Je-li príznak vypnut, používá se sudá parita.
  • parenb - Zapíná paritu. Není-li príznak zapnut, kontrola parity se neprovádí.
  • cstopb - Zapíná použití dvou stop-bitu. Pokud je príznak vypnut, používá se jen jeden stop-bit. echo Zapíná/vypíná lokální echo odesílaných znaku.

 

Následující příklad kombinuje některé z těchto příznaků a nastavuje zařízení ttyS0 pro práci rychlostí 19 200 b/s, s osmi datovými bity, bez parity, s hardwarovým handshakingem a bez lokálního echa:

$ stty 19200 cs8 -parenb crtscts -echo -F /dev/ttyS0

Používání programu (m)getty

Program getty otevře sériové zařízení, správně je nakonfiguruje, případně nakonfiguruje modem, a potom čeká na spojení. Aktivní spojení na sériové lince je typicky indikováno signálem DCD (Data Carrier Detect). Jakmile je detekováno spojení, program getty vypíše výzvu login: a pak spustí program login, který zajistí samotné přihlášení. Na každém z virtuálních terminálů (například /dev/tty1) v Linuxu tento program běží.

Existuje řada různých implementací programu getty, každá z nich obsluhuje některé konfigurace lépe než jiná. Program getty, o kterém budeme hovořit my, se jmenuje mgetty. Je velice oblíbený, protože obsahuje všechny funkce, pro něž je velmi přívětivý k modemům včetně podpory automatických faxových programů a hlasových modemů. Zaměříme se na konfiguraci programu mgetty tak, aby reagoval na klasické datové volání a zbytek už nechám na vás.

Démon mgetty se od ostatních démonů getty liší zejména v tom, že je navržen specificky pro podporu modemů kompatibilních se
standardem Hayes. Podporuje i přímá terminálová připojení, lépe se však hodí pro telefonické aplikace. K detekci příchozího volání nepoužívá signál DCD, ale čeká na zprávu RING, kterou moderní modemy generují, když přijde hovor a nejsou nakonfigurovány na automatickou odpově .
Hlavní spustitelný program se jmenuje /usr/sbin/mgetty a odpovídající hlavní konfigurační soubor je /etc/mgetty/mgetty.config. Kromě toho existuje ještě řada dalších binárních a konfiguračních souborů, které pokrývají všechny funkce programu mgetty. U většiny instalací se celá konfigurace programu redukuje na úpravu souboru /etc/mgetty/ mgetty.config a přidání příslušné položky do souboru /etc/inittab tak, aby se program
mgetty spouštěl automaticky.

Příklad znázorňuje velmi jednoduchý konfigurační soubor programu mgetty. V tomto příkladu konfigurujeme dvě sériová zařízení. První z nich, /dev/ttyS0, podporuje modem kompatibilní s Hayes a rychlostí 38 400 b/s. Druhé, /dev/ttyS1, podporuje přímo připojený terminál VT100
s rychlostí 19 200 b/s.

Příklad konfiguračního souboru /etc/mgetty/mgetty.config

# konfiguracní soubor programu mgetty

# toto je príklad konfigurace, podrobnosti viz mgetty.info

# komentáre zacínají t#t, prázdné rádky se ignorují

# ----- globální sekce -----

303 Kapitola 4 Konfigurace sériových zarízení

Prírucka správce síte

# V této sekci nastavujeme globální vlastnosti, nastavení jednotlivých

# portu budou následovat

# prístup k modemum rychlostí 38 400 b/s

speed 38400

# nastavení ladicí úrovne na t4t (implicitní dle policy.h)

debug 4

# ----- cásti pro jednotlivé porty -----

# Tady se uvádejí veci platné jen pro jednu linku, ne pro všechny

# Modem Hayes pripojený na ttyS0: bez faxu, menší logování

port ttyS0

debug 3

data-only y

# prímé spojení s terminálem VT100, který nepoužívá DTR

port ttyS1

direct y

speed 19200

toggle-dtr n

Konfigurační soubor obsahuje globální část a část specifickou pro jednotlivé porty. V našem příkladu nastavujeme v globální části rychlost na 38 400 b/s. Toto nastavení zdědí port ttyS0. Všechny porty obsluhované programem mgetty budou tuto rychlost používat, ledaže by v části konkrétního
portu byla nastavena jiná rychlost tak, jak jsme to udělali pro zařízení ttyS1.

About Us | Site Map | Privacy Policy | Contact Us | ©2003 Company Name