Linux, a porty szeregowe.: Czy mogę używać więcej niż 2 porty szeregowe?
Następna strona
Poprzednia strona
Spis treści
8. Czy mogę używać więcej niż 2 porty szeregowe?
Nie musisz czytać tego rozdziału jeśli nie chcesz używać
więcej niż 2. portów szeregowych (pod warunkiem, że nie masz karty wieloportowej).
Jeśli masz jeszcze jakiś wolny port szeregowy, to odpowiedź
brzmi: tak, możesz go wykorzystać.
Liczba wykorzystanych portów szeregowych jest ograniczona
liczbą dostępnych przerwań IRQ i adresów portów We/Wy.Jest o
ograniczenie szyny komputera PC, nie Linux-a. Każde urządzenie
szeregowe musi mieć przydzielone własne przerwanie IRQ i adres
portu. Urządzeniem szeregowym może być port szeregowy,
wewnętrzny modem lub karta wieloportowa.
Wieloportowe karty portów szeregowych są projektowane w
specjalny sposób, który umożliwia posiadanie wielu portów
szeregowych, które współdzielą jedno przerwanie IRQ. Linux
pobiera z nich dane wykorzystując do tego rózne adresy dla
każdego z portów na karcie.
8.1 Wybór przerwań dla urządzeń szeregowych.
Twój komputer standardowo ma przerwanie IRQ=4 przydzielone
portom ttyS0, ttyS2 i IRQ=3 do portów ttyS1,
ttyS3. Aby skorzystać z więcej niż jednego urządzenia
szeregowego będziesz musiał dla niego przeznaczyć oddzielne
przerwanie IRQ. Dobrym pomysłem jest przydzielenie przerwania
wykorzystywanego przez port równoległy. Twój PC jest zwykle
konfigurowany w ten sposób, że portom równoległym przydzielane
są przerwania 5 i 7. Bardzo rzadko używa się dwóch portów
równoległych. Co więcej możesz przydzielić przerwanie poru
rónoległedo do portu szeregowego i nadal korzystać z portu
równoległego. Zmiany przerwań IRQ i innych parametrów można
wykonać za pomocą programu setserial. Czasami możesz być
zmuszony do zmiany ustawień mikroprzęłączników, zobacz w
dokumentacji karty.
Będziesz musiał tak to wszystko skonfigurować, aby każde z
urządzeń szeregowych miało jedno i tylko jedno
przerwanie. Poniżej moja konfiguracja - umieszczona w pliku
/etc/rc.d/rc.local :
/etc/setserial /dev/cua0 irq 3 # myszka
/etc/setserial /dev/cua1 irq 4 # terminal Wyse
/etc/setserial /dev/cua2 irq 5 # Zoom modem
/etc/setserial /dev/cua3 irq 9 # USR modem
Standardowe przydziały IRQ:
IRQ 0 Timer channel 0
IRQ 1 Keyboard
IRQ 2 Cascade for controller 2
IRQ 3 Serial port 2
IRQ 4 Serial port 1
IRQ 5 Parallel port 2
IRQ 6 Floppy diskette
IRQ 7 Parallel port 1
IRQ 8 Real-time clock
IRQ 9 Redirected to IRQ2
IRQ 10 not assigned
IRQ 11 not assigned
IRQ 12 not assigned
IRQ 13 Math coprocessor
IRQ 14 Hard disk controller 1
IRQ 15 Hard disk controller 2
Nie ma Najlepszego wyboru przerwań IRQ. Po prostu upewnij
się, że nie jest wykorzystywane przez kilka urządzeń
jednocześnie. Dobrym wyborem jest jedno z 2, 3, 4, 5 i
7. ``not assigned'' (nie przydzielone) oznacza, że aktualnie
żadne urządzenie go nie używa. Pamiętaj, że IRQ 2 to to samo
co IRQ 9. Możesz je nazwyac jak chcesz, sterownik portów
szeregowych jest bardzo wyrozumiały. Jeśli posiadasz kartę z
16-to bitową szyną, możesz wtedy dodatkowo korzystać z
przerwań 10,11,12 i 15.
Upewnij się, że nie korzystasz z przerwańIRQ 0, 1, 6, 8, 13 lub
14. Są wykorzystywane przez płytę główną. Bedzie bardzo
nieszczęśliwa jeśli będziesz próbował zabrać jej
przerwanie. Jak już wszystko zrobisz, sprawdź ponownie, zobacz
/proc/interrupts i upewnij się, że nie ma konfliktów.
8.2 Ustawianie adresów urządzeń szeregowych.
Następnie musisz ustawić adres portu. Sprawdź podręcznik do
karty, gdzie są opisane ustawienia
mikroprzełączników. Podobnie, jak w przypadku przerwań, jeden
adres może być wykorzystywany tylko przez jedno
urządzenie. Porty szeregowe są zwykle skonfigurowane dla
następujących adresów:
ttyS0 address 0x3f8
ttyS1 address 0x2f8
ttyS2 address 0x3e8
ttyS3 address 0x2e8
Wybierz adresy dla każdegu urządzenia szeregowego, następnie
odpowiednio ustaw mikroprzełączniki. Ja mam swój modem na
porcie ttyS3, mysz na ttyS0 i terminal na ttyS2.
Kiedy zrestartujesz system, Linux powinien zobaczyć porty
szeregowe pod adresami, które ustawiłeś. IRQ raportowane
podczas startu mogą nie odpowiadać tym ustawionym przez
mikroprzełączniki na karcie. Nie martw się tym. Linux podczas
startu nie wykonuje rozpoznania przerwań IRQ, ponieważ jest to
trudne i może być mylne. Aby powiedzić Linux-owi, które
przerwanie jest używane przez dany port trzeba skorzystać z
programu setserial.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
Serial HOWTO pl 6 (2)Serial HOWTO pl 1 (2)Serial HOWTO pl (2)Serial HOWTO pl 2 (2)Serial HOWTO pl (3)Serial HOWTO pl 14 (2)Serial HOWTO pl 7 (2)Serial HOWTO pl 15 (2)Serial HOWTO pl 9 (2)Serial HOWTO pl 11 (2)Serial HOWTO pl 4 (2)Serial HOWTO pl 5 (2)Serial HOWTO pl 3 (2)Serial HOWTO pl 13 (2)Serial HOWTO pl 16 (2)Serial HOWTO pl 10 (2)Serial HOWTO pl 12 (2)bootdisk howto pl 8PPP HOWTO pl 6 (2)więcej podobnych podstron