[ Pobierz całość w formacie PDF ]
.handshaking).Linuxobs³uguje wiele kart szeregowych zgodnych ze standardem RS-232.Uzgadnianie sprzêtowe jest opcjonalne, ale bardzo przydatne.Pozwala obu stronomna sygnalizowanie gotowoSci odbioru kolejnych danych lub na powiadomienie, ¿edruga strona powinna poczekaæ, a¿ odbiorca zakoñczy przetwarzanie odebranychdanych.Linie u¿ywane do tego celu s¹ nazywane odpowiednio Clear to Send(CTS) i Ready to Send (RTS), co wyjaSnia potoczn¹ nazwê uzgadniania sprzêtowe-go: RTS/CTS.Innym rodzajem uzgadniania, z którym mog³eS siê ju¿ spotkaæ, jestXON/XOFF.Wykorzystuje ono dwa wyznaczone znaki, zwykle [CTRL+S] i [CTRL+Q]do sygnalizowania drugiej stronie, ¿e powinna odpowiednio zatrzymaæ lub roz-pocz¹æ przesy³anie danych.Choæ sposób ten jest ³atwy do zaimplementowaniai dzia³a poprawnie na terminalach uproszczonych (ang.dumb terminals), powodujezamieszanie w przypadku danych binarnych.Mo¿e siê bowiem zdarzyæ, ¿e woliszprzes³aæ te znaki jako czêSæ strumienia danych i chcesz, aby by³y interpretowane ja-ko znaki steruj¹ce.Poza tym metoda ta jest wolniejsza ni¿ uzgadnianie sprzêtowe,które jako proste i szybkie jest zalecane zamiast XON/XOFF, o ile oczywiScie maszwybór.W pierwszych modelach IBM PC interfejs RS-232 by³ sterowany przez uk³ad scalonyUART 8250.PC z czasów procesora 486 u¿ywa³y nowszej wersji uk³adu UART16450.By³ on nieco szybszy ni¿ 8250.Prawie wszystkie komputery oparte na Pen-tium s¹ wyposa¿one w jeszcze nowsz¹ wersjê uk³adu UART 16550.Niektóre marki(przewa¿nie modemy wewnêtrzne wyposa¿one w zestaw uk³adów Rockwell) wy-korzystuj¹ zupe³nie inne uk³ady emuluj¹ce zachowanie 16550 i mog¹ byæ traktowanepodobnie.Standardowy sterownik portu szeregowego Linuksa obs³uguje je wszyst-kie*.Uk³ad 16550 jest znacznym krokiem naprzód w stosunku do 8250 i 16450, poniewa¿oferuje 16-bajtowy bufor FIFO.16550 jest w rzeczywistoSci rodzin¹ urz¹dzeñ UART,do której nale¿¹ uk³ady 16550, 16550A i 16550AFN (nazwa zosta³a póxniej zmie-niona na PCI16550DN).Ró¿nice miêdzy nimi polegaj¹ na zapewnieniu dzia³ania FI-FO; w uk³adzie 16550AFN dzia³a ono na pewno.Istnia³ tak¿e uk³ad NS16550, alew nim bufor FIFO nigdy tak naprawdê nie dzia³a³.* Zauwa¿, ¿e nie mówimy tu o tak zwanych WinModemach! WinModemy maj¹ bardzo prost¹ budowêsprzêtow¹ i do wykonania ca³ej pracy w pe³ni wykorzystuj¹ g³Ã³wny procesor, zamiast dedykowanychuk³adów.Zdecydowanie odradzamy ci zakup takiego modemu kup prawdziwy modem.Linux oczy-wiScie obs³uguje WinModemy, ale nie jest to atrakcyjne rozwi¹zanie.U¿ywanie narzêdzi konfiguracyjnych 53Uk³ady UART 8250 i 16450 mia³y prosty bufor jednobajtowy.Oznacza³o to, ¿e 16450generowa³ przerwanie dla ka¿dego nadanego lub odebranego znaku.Ka¿de wy-maga³o krótkiego czasu na jego obs³ugê i to niewielkie opóxnienie ogranicza³o prêd-koSæ uk³adu 16450 do 9600 bitów na sekundê w typowym komputerze z magistral¹ISA.W domySlnej konfiguracji j¹dro sprawdza cztery standardowe porty szeregowe, odCOM1: do COM4:.J¹dro jest tak¿e w stanie wykryæ, jaki uk³ad UART jest u¿ywanydla ka¿dego ze standardowych portów szeregowych i wykorzystuje bufor FIFOuk³adu 16550, je¿eli jest dostêpny.U¿ywanie narzêdzi konfiguracyjnychTeraz przyjrzyjmy siê krótko dwóm najbardziej przydatnym narzêdziom do konfi-guracji urz¹dzenia szeregowego: setserial i stty.Polecenie setserialJ¹dro zrobi wszystko co w jego mocy, by poprawnie rozpoznaæ konfiguracjê twojegourz¹dzenia szeregowego, ale wieloSæ mo¿liwoSci powoduje, ¿e trudno jest uzyskaæw praktyce stuprocentow¹ niezawodnoSæ.Dobrym przyk³adem tego, co sprawiaproblemy, s¹ modemy wewnêtrzne, o których mówiliSmy wczeSniej.U¿ywanyprzez nie uk³ad UART ma 16-bajtowy bufor FIFO, ale z punktu widzenia sterownikaurz¹dzenia w j¹drze wygl¹da jak uk³ad UART 16450: dopóki nie wska¿emy sterow-nikowi, ¿e jest to urz¹dzenie 16550, j¹dro nie bêdzie wykorzystywaæ rozszerzonegobufora.Innym przyk³adem s¹ uproszczone karty 4-portowe pozwalaj¹ce nawspó³dzielenie jednego IRQ przez wiele urz¹dzeñ szeregowych.W takiej sytuacjimusimy wskazaæ j¹dru w³aSciwe IRQ i uprzedziæ je, ¿e IRQ mo¿e byæ wspó³dzielo-ne
[ Pobierz całość w formacie PDF ]