En av de oumbärliga elementen när du arbetar med inbäddade Linux-projekt är att komma åt din enhet via det seriella konsolgränssnittet. För detta måste datorn som du utvecklar ett inbäddat system på ha en seriell port. Det är dock väldigt få datorer som idag har en seriell port, och det är därför vi använder USB till seriella omvandlare istället.
I slutet kommer du att ha en detaljerad förståelse för vad seriekonsoler är och hur de fungerar på Linux.
Konfigurera USB till seriell omvandlare
Nästan alla seriella USB-omvandlare du kan hitta på marknaden känns igen automatiskt av Linux. Anslut valfri USB-omvandlare till din dator och använd dmesg kommandot för att ta reda på enhetens filnamn.
dmesg
I exemplet ovan ser du VirtualBox i tillverkarens avsnitt, eftersom värden är en Linux-distribution som körs på VirtualBox. Här kommer tillverkarens namn att ändras beroende på vilken omvandlare du använder. Du kan också se att den seriella omvandlaren du använder är kopplad till systemet med ett namn, som t.ex ttyUSB0.
Du kan använda den seriella omvandlaren som känns igen av ditt system via enhetsfilen /dev/ttyUSB0. Beroende på vilken distribution du använder skapas enhetsfilen automatiskt under /dev katalog, som visar huvud-, mindre- och enhetstyper. För seriella USB-omvandlare är namnschemat vanligtvis ttyUSB0, ttyUSB1, och ttyUSBX för varje simultan översättning.
Om du tar bort och sätter in den seriella USB-omvandlaren medan den används av en applikation, utfärdar systemet ett nytt nummer till enheten.
Åtkomstbehörighet på seriella enheter
Standardåtkomsträttigheterna för monterade USB-omvandlarenhetsfiler är vanligtvis följande:
ls -l /dev/ttyUSB0
# Utgång
crw-rw 1 rotuppringning 188, 46 juli 17 15:34 /dev/ttyUSB0
När du undersöker ovanstående utdata kan du berätta:
- Brevet c i början av raden anger att detta är en teckenbaserad enhet
- Filägaren är rotanvändaren och användaren har läs- och skrivrättigheter
- Gruppägaren till filen är uppringning grupp och användare som ingår i denna grupp har också läs- och skrivbehörigheter
- Resten av användarna har inga läs- och skrivrättigheter till filen
Om du för närvarande är inloggad som en vanlig användare, som inte är medlem i uppringningsgruppen, kan du inte läsa och skriva till den seriella USB-omvandlaren. För att lösa detta problem måste du antingen göra den aktuella användaren till medlem i uppringningsgruppen eller redigera udev regelfiler på ditt system.
Du kan använda den första tekniken för bekvämlighet. Till att börja, använd id kommando för att avgöra vilka grupper din användare tillhör:
id
Lägg till din användare i gruppen med hjälp av Lägg till användare eller usermod kommando:
# För Fedora
sudo usermod -aG uppringning ANVÄNDARNAMN# För Debian
sudo adduser USERNAME uppringning
# För Arch
sudo usermod -a -G uucp ANVÄNDARNAMN
Gruppmedlemskapet proceduren är nu klar. Systemet kontrollerar dock gruppmedlemskapsinformation under det första inloggningssteget i grafiska sessioner och tillhandahåller den sedan till alla pågående processer.
Som ett resultat måste du logga ut från den aktuella grafiska sessionen och sedan logga in igen eller starta om din maskin för att ändringarna ska träda i kraft. Du kommer att ha läs-/skrivåtkomst till den seriella omvandlarenheten efter att ha avslutat denna operation.
Hur man ansluter till seriella konsoler på Linux
När du behöver tillgång till en dator eller nätverkskonsol kan du hänvisa till seriella konsolapplikationer. Vanligtvis behöver du åtkomst över SSH för att göra det. Men ur mjukvaru- och hårdvarusynpunkt är det i vissa fall också möjligt att komma åt konsolen med endast serieportar.
Du hittar dessa typer av exempel oftast på äldre datorer. Nedan är några av de bästa seriella konsolapplikationerna som kommer att fungera för dig.
Använder Minicom
Du kan installera Minicom, en gammal men fortfarande fungerande applikation på ditt system enligt följande:
# På Fedora, CentOS och RHEL
sudo yum Installera minicom# På Debian och Ubuntu
sudo apt-skaffa sig installera minicom
# På Arch Linux
sudo snap Installera minicom
När du startar programmet för första gången kommer det att försöka öppna en enhetsfil som t.ex /dev/modem som standard. Den avslutas när den inte kan hitta filen. För att lösa detta problem kan du starta programmets inställningsskärm direkt med -s parameter:
minicom -s
Du kan ställa in enhetsnamnet genom att trycka på A och serieportens hastighet genom att trycka på E nyckel. Sedan när du avslutar med Utgång, kan du använda motsvarande seriella port.
När du är på programmets huvudskärm kan du återgå till konfigurationsskärmen med Ctrl + A + O, avsluta applikationen med Ctrl + A + X, aktivera linjeomslutningsläget med Ctrl + A + W, och få hjälp med andra genvägar med Ctrl + A + Z.
Använder GTKTerm
Minicom används vanligtvis av avancerade Linux-användare och rekommenderas därför inte för nybörjare. Linux-nykomlingar kan installera GTKTerm, en grafisk seriell terminalemulator för Linux. Du kan installera programmet på ditt system med hjälp av följande kommandon:
# På Fedora, CentOS och RHEL
sudo dnf -y Installera gtkterm# På Debian och Ubuntu
sudo apt-skaffa sig installera gtkterm
# På Arch Linux
yay -S gtkterm
När du startar appen måste du ställa in enhetens namn och hastighetsparametrar via Konfiguration > Port meny enligt följande:
Spara inställningarna som standard för att underlätta senare användning.
Använder skärm
Om du är bekant med skärm för hantering av flera terminaler, vet du att du kan använda den för åtkomst till seriell port också. Här är kommandona för att installera det:
# På Fedora, CentOS och RHEL
sudo dnf -y Installera skärm# På Debian, Ubuntu och Linux Mint
sudo apt-skaffa sig -y installationsskärm
# Använd Snap för andra distributioner
sudo snap Installera skärm --klassisk
Efter installationen kan du köra ett kommando som detta för att ansluta till en seriell konsol:
skärm /dev/ttyUSB0 115500
Nu kan du upprätta en seriell portanslutning på Linux
Att kunna komma åt ditt Linux-system med hjälp av serieporten är en mycket användbar funktion, speciellt när du inte vill ansluta en bildskärm till SBC (Session Border Controller).
Eftersom den seriella konsolbehörigheten är inbyggd i Linux-kärnan vid tidpunkten för kompileringen, bör du ha åtminstone en grundläggande förståelse för Linux-kärnan och dess funktion.