26.2. Inleiding

Waarschuwing:

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.

26.2.1. Terminologie

bps

Bits per seconde: de snelheid waarmee gegevens verstuurd worden

DTE

Data Terminal Equipment (apparatuur voor gegevensterminal): bijvoorbeeld een computer

DCE

Data Communications Equipment (apparatuur voor gegevenscommunicatie): een modem

RS-232

EIA standaard voor hardwarematige seriŽle communicatie

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).

26.2.2. Kabels en poorten

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.

26.2.2.1. Kabels

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.

26.2.2.1.1. Nulmodem-kabels

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.

Tabel 26.1. DB-25 naar DB-25 nulmodem-kabel
SignaalPin #Pin #Signaal
SG7verbonden met7SG
TD2verbonden met3RD
RD3verbonden met2TD
RTS4verbonden met5CTS
CTS5verbonden met4RTS
DTR20verbonden met6DSR
DTR20verbonden met8DCD

In de onderstaande tabellen volgen twee schema's die momenteel meer gebruikelijk zijn:

Tabel 26.2. DB-9 naar DB-9 nulmodem-kabel
SignaalPin #Pin #Signaal
RD2verbonden met3TD
TD3verbonden met2RD
DTR4verbonden met6DSR
DTR4verbonden met1DCD
SG5verbonden met5SG
DSR6verbonden met4DTR
DCD1verbonden met4DTR
RTS7verbonden met8CTS
CTS8verbonden met7RTS

Tabel 26.3. DB-9 naar DB-25 nulmodem-kabel
SignaalPin #Pin #Signaal
RD2verbonden met2TD
TD3verbonden met3RD
DTR4verbonden met6DSR
DTR4verbonden met8DCD
SG5verbonden met7SG
DSR6verbonden met20DTR
DCD1verbonden met20DTR
RTS7verbonden met5CTS
CTS8verbonden met4RTS

Opmerking:

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.

26.2.2.1.2. Standaard RS-232C-kabels

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.

26.2.2.2. Poorten

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.

26.2.2.2.1. Soorten poorten

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.

26.2.2.2.2. Poortnamen

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.

26.2.3. Kernelinstellingen

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.

Tip:

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.

Opmerking:

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).

26.2.4. Speciale apparaatbestanden

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.

26.2.5. De seriŽle poort 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 http://ftp.FreeBSD.org/pub/FreeBSD/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>.