WaarschuwingVanaf 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.
Bits per seconde: de snelheid waarmee gegevens verstuurd worden
Data Terminal Equipment (apparatuur voor gegevensterminal): bijvoorbeeld een computer
Data Communications Equipment (apparatuur voor gegevenscommunicatie): een modem
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).
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.
Tabel 27-1. DB-25 naar DB-25 nulmodem-kabel
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:
Tabel 27-2. DB-9 naar DB-9 nulmodem-kabel
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 |
Tabel 27-3. DB-9 naar DB-25 nulmodem-kabel
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 |
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.
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.
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).
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.