Vanaf FreeBSD 8.0 zijn de seriële poorten
hernoemd van
/dev/cuadN
naar
/dev/cuauN
en
van
/dev/ttydN
naar
/dev/ttyuN
.
FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar
deze wijzigingen.
Deze sectie gebruikt niet de term “baud” als er over snelheden van gegevenscommunicatie gesproken wordt. Baud verwijst naar het aantal elektrische toestandsovergangen dat binnen een tijdsperiode gemaakt mag worden, “bps” (bits per seconde) is de correcte term om te gebruiken (de oude mopperkonten schijnen zich er niet erg druk over te maken).
Om een modem of terminal met een FreeBSD-systeem te verbinden, dienen een seriële poort op een computer en een kabel om verbinding te maken met een serieel apparaat aanwezig te zijn. Indien kennis over hardware en de benodigde kabel reeds aanwezig is, kan deze sectie veilig worden overgeslagen.
Er zijn verschillende soorten seriële kabels. De twee meest voorkomende types in deze context zijn nulmodem-kabels en standaard (“rechte”) RS-232-kabels. De documentatie van de hardware beschrijft het type kabel dat nodig is.
Een nulmodem-kabel geeft sommige signalen, zoals “Aardesignaal” recht door, maar kruist andere signalen. Bijvoorbeeld, de “Verzonden Gegevens”-pin aan de ene kant gaat naar de “Ontvangen Gegevens”-pin aan de andere kant.
Een nulmodem-kabel voor het gebruik met terminals kan ook zelf worden gemaakt (bijvoorbeeld voor kwaliteitsdoeleinden). Deze tabel toont de RS-232C signalen en de pinnummers op een DB-25-aansluiting. De standaard vereist ook een Aardebescherming rechte lijn van pin 1 naar pin 1, maar deze wordt vaak weggelaten. Sommige terminals werken goed met slechts pin 2, 3 en 7, terwijl andere instellingen eisen die afwijken van die in de onderstaande voorbeelden.
Signaal | Pin # | Pin # | Signaal | |
---|---|---|---|---|
SG | 7 | verbonden met | 7 | SG |
TD | 2 | verbonden met | 3 | RD |
RD | 3 | verbonden met | 2 | TD |
RTS | 4 | verbonden met | 5 | CTS |
CTS | 5 | verbonden met | 4 | RTS |
DTR | 20 | verbonden met | 6 | DSR |
DTR | 20 | verbonden met | 8 | DCD |
In de onderstaande tabellen volgen twee schema's die momenteel meer gebruikelijk zijn:
Signaal | Pin # | Pin # | Signaal | |
---|---|---|---|---|
RD | 2 | verbonden met | 3 | TD |
TD | 3 | verbonden met | 2 | RD |
DTR | 4 | verbonden met | 6 | DSR |
DTR | 4 | verbonden met | 1 | DCD |
SG | 5 | verbonden met | 5 | SG |
DSR | 6 | verbonden met | 4 | DTR |
DCD | 1 | verbonden met | 4 | DTR |
RTS | 7 | verbonden met | 8 | CTS |
CTS | 8 | verbonden met | 7 | RTS |
Signaal | Pin # | Pin # | Signaal | |
---|---|---|---|---|
RD | 2 | verbonden met | 2 | TD |
TD | 3 | verbonden met | 3 | RD |
DTR | 4 | verbonden met | 6 | DSR |
DTR | 4 | verbonden met | 8 | DCD |
SG | 5 | verbonden met | 7 | SG |
DSR | 6 | verbonden met | 20 | DTR |
DCD | 1 | verbonden met | 20 | DTR |
RTS | 7 | verbonden met | 5 | CTS |
CTS | 8 | verbonden met | 4 | RTS |
Als een pin aan het ene eind verbonden is met een pinnenpaar aan het andere eind, is dit meestal geïmplementeerd met een korte draad tussen het pinnenpaar in de stekker en een lange draad naar de andere, enkele pin.
Bovenstaande ontwerpen lijken het populairst. In een andere variatie (uitgelegd in het boek RS-232 Made Easy) worden de volgende verbindingen gemaakt: SG met SG, TD met RD, RTS en CTS met DCD, DTR met DSR en vice-versa.
Een standaard seriële kabel laat alle RS-232C-signalen recht door. Dit betekent dat de “Verzonden Gegevens”-pin aan de ene kant naar de “Verzonden Gegevens”-pin aan de andere kant gaat. Dit type kabel wordt gebruikt om een modem met een FreeBSD-systeem te verbinden en is ook geschikt voor sommige terminals.
Seriële poorten zijn apparaten die gebruikt worden om gegevens te versturen tussen een FreeBSD gastcomputer en een terminal. Deze sectie beschrijft de bestaande soorten poorten en hoe deze aangesproken worden in FreeBSD.
Er bestaan verschillende soorten seriële poorten. Controleer of een kabel past op de poorten van een terminal en een FreeBSD-systeem alvorens deze te kopen of te maken.
De meeste terminals hebben DB-25-poorten. PC's, inclusief PC's die FreeBSD draaien, hebben DB-25- of DB-9-poorten. Indien een meerpoortige seriële kaart voor een PC beschikbaar is, kan het zijn dat er RJ-12- of RJ-45-poorten aanwezig zijn.
In documentatie die bij hardware zit, staan specificaties over het soort poort dat gebruikt wordt. Vaak volstaat ook een visuele inspectie van een poort.
In FreeBSD wordt elke seriële poort benaderd door een
ingang in de map /dev
. Er zijn twee
verschillende soorten ingangen:
Inbelpoorten heten
/dev/ttyuN
waarbij N
het poortnummer
is, beginnend met nul. In het algemeen kunnen
inbelpoorten voor terminals gebruikt worden.
Inbelpoorten stellen de eis dat een seriële kabel
ervoor zorgt dat het data carrier detect (DCD) signaal
correct werkt.
Uitbelpoorten heten
/dev/cuauN
.
In het algemeen worden uitbelpoorten niet voor
terminals maar voor modems gebruikt. Gebruik een
uitbelpoort als een seriële kabel of terminal het
carrier detect-signaal niet ondersteunt.
Als er een terminal met de eerste seriële poort
(COM1
in MS-DOS®) verbonden is,
wordt /dev/ttyu0
gebruikt om naar de
terminal te verwijzen. Als een terminal op de tweede
seriële poort is aangesloten (ook bekend als
COM2
), dient
/dev/ttyu1
gebruikt te worden,
enzovoort.
FreeBSD ondersteunt standaard vier seriële poorten. In
de wereld van MS-DOS® staan ze bekend als
COM1
, COM2
,
COM3
en COM4
.
FreeBSD ondersteunt momenteel “domme” meerpoortige
seriële interfacekaarten, zoals de BocaBoard 1008 en 2016,
alsook intelligentere meerpoortige kaarten van fabrikanten als
Digiboard en Stallion Technologies. De kernel kijkt echter
alleen naar de standaard COM-poorten.
Bekijk de boodschappen tijdens het opstarten van de kernel
om te zien of de kernel seriële poorten herkent of gebruik
het commando /sbin/dmesg
om de
opstartboodschappen van de kernel te herhalen. Kijk in het
bijzonder naar boodschappen die met de tekens
uart
beginnen als u FreeBSD 8.0 of nieuwer
gebruikt, of sio
voor FreeBSD 7.4 of ouder.
Gebruik het volgende commando om alleen de boodschappen
die het woord sio
bevatten te zien:
#
/sbin/dmesg | grep 'uart'
#
/sbin/dmesg | grep 'sio'
Voor bijvoorbeeld een FreeBSD 7.X
systeem met vier seriële poorten zijn dit de opstartboodschappen van de
kernel die specifiek zijn voor de seriële poorten:
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
Als een kernel niet alle seriële poorten herkent, dan
dient waarschijnlijk de kernel aangepast te worden in het
bestand /boot/device.hints
. Het is ook
mogelijk regels uit te schakelen of volledig te verwijderen
voor apparaten die niet aanwezig zijn.
Zie de hulppagina sio(4) voor meer informatie over het instellen van seriële poorten en meerpoortige kaarten. Bij gebruik van een instellingenbestand dat eerder voor een andere versie van FreeBSD werd gebruikt is voorzichtigheid geboden omdat de apparaatvlaggen en de syntaxis tussen de versies veranderd zijn.
port IO_COM1
is een substitutie voor
port 0x3f8
, IO_COM2
is
0x2f8
, IO_COM3
is
0x3e8
en IO_COM4
is
0x2e8
, welke redelijk algemene
poortadressen zijn voor hun overeenkomstige seriële
poorten. Interrupts 4, 3, 5 en 9 zijn redelijk algemene
interruptlijnen. Reguliere seriële poorten kunnen
geen interrupts delen op ISA-bus-PC's
(meerpoortige kaarten hebben elektronica die alle 16550A's op
een kaart in staat stellen om één of twee
interruptlijnen te delen).
De meeste apparaten in de kernel worden benaderd met
“speciale apparaatbestanden” die in de map
/dev
staan. De apparaten
sio
worden benaderd met de apparaten
/dev/ttyuN
(inbellen) en
/dev/cuauN
(uitbellen). FreeBSD biedt ook initialisatie-apparaten
(/dev/ttyuN.init
en
/dev/cuauN.init
)
en slotapparaten
(/dev/ttyuN.lock
en
/dev/cuadN.lock
).
De initialisatie-apparaten worden gebruikt om telkens als een
poort wordt geopend de parameters van de communicatiepoorten te
initialiseren, zoals crtscts
voor modems die
gebruik maken van RTS/CTS
-signalering voor
gegevensstroombeheer. De slotapparaten worden gebruikt om
vlaggen op poorten op slot te zetten om te voorkomen dat
gebruikers of programma's bepaalde parameters veranderen. In
de hulppagina's termios(4), sio(4) en stty(1)
staat informatie over respectievelijk terminalinstellingen,
apparaten op slot zetten en initialiseren en terminalopties
instellen.
Het apparaat
ttyuN
(of
cuauN
) is
het gebruikelijke apparaat dat geopend dient te worden voor de
applicaties. Wanneer een proces het apparaat opent, heeft het
een standaardverzameling aan terminal I/O-instellingen. Bekijk
deze instellingen met het volgende commando:
#
stty -a -f /dev/ttyu1
Als de instellingen van dit apparaat veranderd worden,
blijven de instellingen geldig totdat het apparaat gesloten
wordt. Als het heropend wordt, gaat het terug naar de
standaardverzameling. Om de standaardverzameling te
veranderen, dient het apparaat voor de “initiële
toestand” geopend te worden en die instellingen
veranderd te worden. Om bijvoorbeeld de
CLOCAL
-modus, 8-bits-communicatie en
XON/XOFF
-gegevensstroombeheer voor apparaat
ttyu5
standaard aan te zetten:
#
stty -f /dev/ttyu5.init clocal cs8 ixon ixoff
De systeembrede initialisatie van de seriële apparaten
wordt beheerd in /etc/rc.d/serial
. Dit
bestand heeft invloed op de standaardinstellingen van
seriële apparaten.
Om te voorkomen dat bepaalde instellingen door een
applicatie worden veranderd, dienen wijzigingen aan het
“slottoestand”-apparaat te worden aangebracht. Om
bijvoorbeeld de snelheid van ttyu5
vast te zetten op 57600 bps:
#
stty -f /dev/ttyu5.lock 57600
Nu blijft een applicatie die ttyu5
en de snelheid van de poort probeert te veranderen zitten op
57600 bps.
Uiteraard dienen de apparaten voor de initiële
toestand en de slottoestand alleen voor het account
root
schrijfbaar te zijn.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.