Provided by:
manpages-pl_20051117-1_all 
NAZWA
setserial - pobierz/ustaw informacje o porcie szeregowym
SKŁADNIA
setserial [ -abqvVWz ] device [ parameter1 [ arg ] ] ...
setserial -g [ -abGv ] device1 ...
OPIS
setserial jest programem przeznaczonym do ustawiania i/lub raportowania
danych konfiguracyjnych związanych z portem szeregowym. Dane te
zawierają port I/O, numer IRQ, to czy klawisz break powinien być
interpretowany jako Secure Attention Key, itd.
Podczas normalnego bootowania, inicjalizowane są jedynie porty COM 1-4;
używane są przy tym domyślne wartości portów I/O i IRQ. Aby
zainicjalizować dodatkowe porty szeregowe, lub aby zmienić konfiguracje
portów 1-4, musisz użyć programu setserial. Zazwyczaj jest on wołany
ze skryptu rc.serial, który z kolei jest normalnie uruchamiany z
/etc/rc.local.
Argument(y) device określa, które urządzenie szeregowe ma być
skonfigurowane lub odpytane. Zazwyczaj przyjmuje postać /dev/cua[0-3].
Bez parametrów, setserial drukuje rodzaj portu np. 8250, 16450, 16550,
16550A), sprzętowy port I/O, sprzętową linię IRQ, szybkość i niektóre
flagi operacyjne.
Przy podanej opcji -g, argumenty setserial są interpretowane jako lista
urządzeń, dla których należy wydrukować charakterystykę.
Bez opcji -g, pierwszy argument jest interpretowany jako urządzenie do
zmodyfikowania lub do wydrukowania charakterystyki, a dodatkowe
argumenty interpretowane są jako parametry, które powinny być
zaaplikowane do tego urządzenia.
W większości wypadków wymagane są uprawnienia superużytkownika. Jednak
kilka opcji portów mogą ustawiać zwykli użytkownicy i opcje te zostaną
zaznaczone jako wyjątki w tym podręczniku.
OPCJE
Setserial przyjmuje następujące opcje:
-a Podczas raportowania konfiguracji urządzenia szeregowego, drukuj
wszelkie dostępne informacje.
-b Podczas raportowania konfiguracji urządzenia szeregowego, drukuj
zestawienie konfiguracji urządzenia, które może być
wystarczające do wypisania podczas procesu bootowania w skrypcie
/etc/rc.
-G Wydrukuj informację o konfiguracji portu szeregowego w postaci,
która może zostać zassana do setseriala jako argumenty linii
poleceń.
-q Bądź cicho. Setserial wydrukuje wtedy mniej linii na wyjściu.
-v Bądź gadatliwy. Setserial wydrukuje wtedy dodatkowy status na
wyjściu.
-V Wyświetl wersję i zakończ.
-W Dokonaj dzikiej inicjalizacji przerwań i zakończ. Opcja ta nie
jest istotna w jądrach po wersji 2.1.
-z Zeruj flagi szeregowe przed rozpoczęciem ich ustawiania. Jest to
związane z automatycznym zachowywaniem flag szeregowych z flagą
-G.
PARAMETRY
Portowi szeregowemu można przyznać niżej wymienione parametry.
Wszystkie wartości argumentów są wartościami dziesiętnymi, chyba że
poprzedzone są "0x".
port port_number
Opcja port ustawia port I/O, jak opisano wyżej.
irq irq_number
Opcja irq ustawia sprzętowe IRQ, jak opisano wyżej.
uart uart_type
Opcja ta jest używana do ustawienia typu UART-a. Dozwolone typy
to none, 8250, 16450, 16550, 16550A, 16650, 16650V2, 16654,
16750, 16850, 16950, i 16954. Użycie typu UART none wyłączy
port.
Niektóre modemy wewnętrzne są oznaczone jako mające "UART 16550A
z buforem 1K" Jest to kłamstwo. Nie mają w rzeczywistości UART-a
kompatybilnego z 16550A; zamiast niego mają UART kompatybilny z
16450 z 1K buforem odbiorczym dla zapobiegania spustoszeniom u
odbiorcy. Jest to istotne, ponieważ nie mają one transmitującego
FIFO. Dlatego nie są kompatybilne z UART-em 16550A i proces
autokonfiguracji zidentyfikuje je prawidłowo jako 16450. Jeśli
spróbujesz obejść to, używając parametru uart, pojawią się
porzucone znaki podczas transmisji plików. UART-y te mają zwykle
inne problemy: parametr skip_test powinien być również często
podawany.
autoconfig
Gdy podano ten parametr, setserial poprosi jądro o próbę
automatycznego skonfigurowania portu szeregowego. Port I/O musi
być ustawiony prawidłowo; jądro spróbuje określić typ UART, a
dodatkowo jeśli podano parametr auto_irq, Linux spróbuje też
automatycznie określić IRQ. Parametr autoconfig powinien być
podawany po parametrach port,auto_irq, i skip_test.
auto_irq
Spróbuj podczas autokonfiguracji określić IRQ. Właściwość ta nie
zawsze musi dać prawidłowy wynik; niektóre konfiguracje
sprzętowe mogą ogłupić jądro. Ogólnie, bezpieczniej jest nie
używać właściwości auto_irq, lecz raczej samemu podawać wartość
IRQ, używając parametru irq.
^auto_irq
Nie próbuj określić IRQ podczas autokonfiguracji.
skip_test
Pomiń test UART podczas autokonfiguracji. Niektóre modemy
wewnętrzne nie mają UART-ów kompatybilnych z National
Semiconductor, lecz zamiast nich tanie imitacje. Niektóre z nich
nie wspierają w pełni trybu detekcji loopback, którego używa
jądro do upewnienia się, czy pod podanym adresem jest
rzeczywiście UART. Dlatego dla niektórych modemów będzie trzeba
podać ten parametr aby można było zainicjalizować UART
prawidłowo.
^skip_test
Nie pomijaj testu UART podczas autokonfiguracji.
baud_base baud_base
Opcja ta ustawia podstawową prędkość (baud rate), która jest
częstotliwością zegara podzieloną przez 16. Normalnie jest to
115200, co jest zarazem największą prędkością wspieraną przez
UART.
spd_hi Gdy aplikacja żąda 38.4kb, używaj 57.6kb. Parametr ten może być
ustawiany przez nieuprzywilejowanego użytkownika.
spd_vhi
Gdy aplikacja żąda 38.4kb, używaj 115kb. Parametr ten może być
ustawiany przez nieuprzywilejowanego użytkownika.
spd_shi
Użyj 230kb gdy aplikacja żąda 38.4kb. Parametr ten może być
podawany przez użytkownika nieuprzywilejowanego.
spd_warp
Użyj 460kb gdy aplikacja żąda 38.4kb. Parametr ten może być
podawany przez użytkownika nieuprzywilejowanego.
spd_cust
Gdy aplikacja żąda 38.4kb, użyj ustawionego dzielnika do
ustawienia szybkości. W tym wypadku, prędkość jest określona
przez baud_base podzielone przez divisor(dzielnik). Parametr
ten może być podawany przez nieuprzywilejowanego użytkownika.
spd_normal
Gdy aplikacja żąda 38.4kb, używaj 38.4kb. Parametr ten może być
ustawiany przez nieuprzywilejowanego użytkownika.
divisor divisor
Opcja ta ustawia konfigurowalny dzielnik. Dzielnik będzie
używany gdy wybrana zostanie opcja spd_cust, a port szeregowy
będzie ustawiony przez aplikację na 38.4kb. Parametr ten może
być podawany przez nieuprzywilejowanego użytkownika.
sak Ustaw klawisz break na Secure Attention Key.
^sak wyłącz Secure Attention Key.
fourport
Skonfiguruj port jako kartę AST Fourport.
^fourport
Wyłącz konfigurację AST Fourport.
close_delay delay
Podaj ilość czasu w setnych sekundy, podczas których DTR
powinien zostać w stanie obniżonym na linii szeregowej po tym,
jak urządzenie wydzwaniające (callout device) jest zamykane,
zanim blokowane urządzenie wdzwaniające się (dialin device) znów
podniesie DTR. Domyślną wartością tej opcji jest 50 lub pół
sekundy.
closing_wait opóźnienie
Podaj ilość czasu w setnych sekundy, podczas której jądro
powinno czekać na dane nadawane z portu szeregowego podczas jego
zamykania. Jeśli podane zostanie "none", nie będzie oczekiwania.
Jeśli podane zostanie "infinite", jądro będzie czekać w
nieokreślenie długo na przybycie buforowanych danych. Domyślnym
ustawieniem jest 3000 lub 30 sekund opóźnienia. Ta wartość
domyślna jest wskazana dla większości urządzeń. Jeśli wybrane
zostanie długie opóźnienie, to port szeregowy może się zawiesić
na długi czas podczas zamykania. Jeśli wybrany będzie zbyt
krótki czas, to istnieje ryzyko utraty danych. Jeśli urządzenie
jest bardzo wolne, jak w ploterze, to można wybrać większe
wartości.
session_lockout
Blokuj dostęp do portu wydzwaniającego (/dev/cuaXX) na
przestrzeni różnych sesji. To znaczy, że gdy proces otworzy
port, to żaden inny proces nie może go już otworzyć, dopóki
pierwszy proces go nie zamknie.
^session_lockout
Nie blokuj portu wydzwaniającego na przestrzeni sesji.
pgrp_lockout
Blokuj port wydzwaniający (/dev/cuaXX) na przestrzeni różnych
grup procesów. To znaczy, że gdy proces otworzył port, to żaden
inny proces z innej grupy procesów nie może go otworzyć, dopóki
ten proces go nie zamknie.
^pgrp_lockout
Nie blokuj portu wydzwaniającego na przestrzeni różnych grup
procesów.
hup_notify
Poinformuj proces blokowany na otwieraniu linii wdzwaniającej,
gdy proces skończy używać linii wydzwaniającej (zarówno przez
zamknięcie jej, lub przez zawieszenie jej) przez zwrócenie
(funkcji?) open EAGAIN.
Zastosowanie tego parametru odnosi się do getty, które są
blokowane na liniach wdzwaniających portów szeregowych.
Umożliwia to getty zresetowanie modemu (który może mieć dzięki
aplikacji używającej urządzenia wydzwaniającego zmienioną
konfigurację) przed ponownym blokowaniem.
^hup_notify
Nie informuj procesu blokowanego na otwieraniu linii
wdzwaniającej, gdy urządzenie wydzwaniające jest odwieszone.
split_termios
Traktuj ustawienia termios używane przez urządzenie
wydzwaniające i ustawienia urządzenia wdzwaniającego osobno.
^split_termios
Używaj tej samej struktury termios do przechowywania ustawień
urządzenia wdzwaniającego i wydzwaniającego.
callout_nohup
Jeśli dany port szeregowy jest otworzony jako urządzenie
wydzwaniające, nie odwieszaj tty gdy porzucony zostanie CD.
^callout_nohup
Nie pomijaj odwieszania tty gdy port szeregowy jest otworzony
jako urządzenie wydzwaniające. Oczywiście musi być włączona
flaga HUPCL termios, jeśli odwieszenie ma się pojawić.
low_latency
Minimalizuj opóźnienia odbioru z urządzenia szeregowego kosztem
większego zaangażowania CPU. (Normalnie jest 5-10ms opóźnienie
nim znaki zostaną przekazane dyscyplinie linii.) Jest to
domyślnie wyłączone, lecz niektóre aplikacje czasu rzeczywistego
mogą tego potrzebować.
^low_latency
Optymalizuj efektywne przetwarzanie przez CPU znaków szeregowych
kosztem płacenia średniego opóźnienia 5-10ms nim znaki zostaną
przetworzone. Jest to domyślne.
ROZWAŻANIA O KONFIGUROWANIU PORTÓW SZEREGOWYCH
Ważnym jest, by zauważyć iż setserial zwyczajnie mówi jądru Linuksa,
gdzie powinien spodziewać się znaleźć port I/O i linie IRQ określonego
portu szeregowego. Nie konfiguruje on sprzętu! Aby to uczynić, musisz
fizycznie zaprogramować kartę szeregową, zazwyczaj przez przestawienie
zworek, lub przełączenie przełączników DIP.
Sekcja ta udostępni pewne wskazówki pomocne w decydowaniu jak
skonfigurować porty szeregowe.
"Standardowe powiązania MS-DOS" zostały pokazane niżej:
/dev/ttyS0 (COM1), port 0x3f8, irq 4
/dev/ttyS1 (COM2), port 0x2f8, irq 3
/dev/ttyS2 (COM3), port 0x3e8, irq 4
/dev/ttyS3 (COM4), port 0x2e8, irq 3
Z powodu ograniczeń w projekcie architektury szyn AT/ISA, normalnie
linia IRQ nie może być dzielona między dwoma lub więcej portami
szeregowymi. Jeśli spróbujesz tak zrobić, jeden lub obydwa z tych
portów staną się niedostępne, gdy spróbujesz używać ich naraz.
Ograniczenie to można obejść przez specjalne wieloportowe karty
szeregowe, które są skonstruowane do dzielenia wielu portów szeregowych
na jednej linii IRQ. Karty wspierane przez Linuksa zawierają AST
FourPort, Accent Async, Usenet Serial II, Bocaboard BB-1004, BB-1008, i
BB-2016, oraz HUB-6.
Wybór alternatywnej linii IRQ jest trudny, gdyż prawie wszystkie z nich
są już w użytku. Następująca tabela zawiera wykaz "standardowych
przydziałów MS-DOS" dla linii IRQ:
IRQ 3: COM2
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
Wiele osób uważa, że IRQ 5 jest dobrym wyborem, zakładając że w
komputerze aktywny jest tylko jeden port równoległy. Innym dobrym
wyborem jest IRQ 2 (aka IRQ 9); chociaż to IRQ jest czasem używane
przez karty sieciowe i bardzo rzadko przez karty VGA (dla przerwania
vertical retrace). Jeśli twoja karta VGA jest tak skonfigurowana,
spróbuj to wyłączyć, tak być mógł wykorzystać to IRQ dla innej karty.
Nie jest to niezbędne pod GNU/Linuksem i większością innych systemów
operacyjnych.
Jedynymi innymi dostępnymi liniami IRQ są 3, 4 i 7, a są one
prawdopodobnie używane przez inne porty szeregowe i równoległe. (Jeśli
twoja karta szeregowa ma 16-bitowy edge connector i wspiera wyższe
numery IRQ, to dostępne sa też IRQ 10, 11, 12 i 15.)
W maszynach klasy AT, IRQ 2 jest widziane jako IRQ 9 i Linux
interpretuje je w ten sposób.
Przerwania inne niż 2 (9), 3, 4, 5, 7, 10, 11, 12, i 15, nie powinny
być używane, gdyż są przyznane innym elementom sprzętowym i ogólnie nie
mogą być zmieniane. Oto "standardowe" przyznania:
IRQ 0 Kanał timera 0
IRQ 1 Klawiatura
IRQ 2 Kaskada kontrolera 2
IRQ 3 Port szeregowy 2
IRQ 4 Port szeregowy 1
IRQ 5 Port równoległy 2 (Zarezerwowane w PS/2)
IRQ 6 Stacja dysków
IRQ 7 Port równoległy 1
IRQ 8 Zegar czasu rzeczywistego
IRQ 9 Przekierowane na IRQ2
IRQ 10 Zarezerwowane
IRQ 11 Zarezerwowane
IRQ 12 Zarezerwowane (Pomocnicze urządzenie w PS/2)
IRQ 13 Koprocesor matematyczny
IRQ 14 Kontroler dysku twardego
IRQ 15 Zarezerwowane
KONFIGURACJA WIELOPORTOWA
Niektóre wieloportowe układy szeregowe, dzielące wiele portów na jednym
IRQ używają jednego lub więcej portów do określania czy są tam aktywne
porty, które należy obsłużyć. Jeśli twój układ wieloportowy obsługuje
te porty, to powinieneś z nich skorzystać aby zapobiec potencjalnym
zablokowaniom, gdy zginie przerwanie.
Aby ustawić te porty, musisz przekazać set_multiport jako parametr i
wypisać za nim parametry wieloportowe. Parametry wieloportowe
przybierają postać podania sprawdzanego portu, maski, wskazującej,
które bity rejestru są znaczące oraz, ostatecznie parametru
dopasowania, (match), określającego, które bity znaczące tego rejestru
muszą pasować, gdy nie ma już niczego do zrobienia.
Można podać do czterech takich kombinacji. Pierwsze kombinacje powinny
być podawane przez ustawianie parametrów port1, mask1 i match1.
Następne przez ustawianie port2, mask2 i match2, itd. Aby wyłączyć
sprawdzanie wieloportowe, ustaw port1 na zero.
Aby obejrzeć bieżące ustawienia wieloportowe, podaj w linii poleceń
parametr get_multiport.
Oto pewne ustawienia wieloportowe dla popularnych układów szeregowych:
AST FourPort port1 0x1BF mask1 0xf match1 0xf
Boca BB-1004/8 port1 0x107 mask1 0xff match1 0
Boca BB-2016 port1 0x107 mask1 0xff match1 0
port2 0x147 mask2 0xff match2 0
Konfiguracja ESP Hayesa
Setserial może być również używany do konfigurowania portów na układzie
ESP Hayesa.
Można do tego używać następujących parametrów:
rx_trigger
Jest to poziom wyzwalania (w bajtach) FIFO odbiorczego. Większe
wartości powodują mniej przerwań i lepszą wydajność; jednak zbyt
duże wartości powodują utratę danych. Dostępne wartości to 1 do
1023.
tx_trigger
Jest to poziom wyzwalania (w bajtach) FIFO nadawczego. Większe
wartości mogą powodować mniej przerwań i lepszą wydajność;
jednak zbyt duże wartości powodują zdegradowaną wydajność
nadawania. Dostępne wartości to 1 do 1023.
flow_off
Jest to poziom (w bajtach) przy którym port ESP zrobi "flow off"
dla zdalnego nadajnika (tj. powie mu by przestał nadawać więcej
bajtów). Dostępne wartości to 1 do 1023. Wartość ta powinna być
większa od poziomu wyzwalania odbiorczego i poziomu flow on.
flow_on
Jest to poziom (w bajtach) przy którym port ESP zrobi "flow on"
dla zdalnego nadajnika (tzn. powie mu by wznowił nadawanie
bajtów) po "flow off". Dostępne wartości to 1 do 1023. Wartość
ta powinna być mniejsza niż poziom "flow off", lecz większa niż
poziom wyzwalania odbiorczego.
rx_timeout
Jest to ilość czasu, przez którą port ESP powinien czekać po
odebraniu ostatniego znaku przed sygnalizowaniem przerwania.
Prawidłowe wartości to 0 do 255. Zbyt duża wartość zwiększy
opóźnienia, a zbyt mała spowoduje niepotrzebne przerwania.
UWAGA
UWAGA: Skonfigurowanie portu szeregowego tak, by używał nieprawidłowego
portu I/O może zablokować twoją maszynę.
PLIKI
/etc/rc.local /etc/rc.serial
ZOBACZ TAKŻE
tty(4), ttys(4), kernel/chr_drv/serial.c
AUTOR
Oryginalna wersja setserial została napisana przez Ricka Sladkeya
(jrs@world.std.com) i została zmodyfikowana przez Michaela K. Johnsona
(johnsonm@stolaf.edu).
Ta wersja została od tej pory napisana ponownie od zera przez Theodore
Ts'o (tytso@mit.edu) 1/1/93. Wszelkie błędy i problemy są wyłącznie
jego odpowiedzialnością.