Die USB Implementierungen die ich auf meinen STM32 Seiten vorgestellt habe implementieren die Character Device Klasse (CDC). Diese werden von Linux ohne spezielle Treiberinstallation unterstützt. Man steckt das USB Kabel einfach ein. Auf dem PC erhält man dann einen virtuellen COM Port, den man wie eine serielle Schnittstelle nutzen kann.
Der erste virtuelle COM Port heisst üblicherweise /dev/ttyACM0.
Das Laden des Linux Treibers lässt sich am einfachsten mit folgendem Befehl kontrollieren:
sudo dmesg -c
Ich bin unter Linux auf ein paar überraschende Eigenarten gestoßen, die bei bestimmten Anwendungen stören könnten:
Ich habe den Modem-Manager einfach deinstalliert, da ich ihn ohnehin nicht brauche. Unter Ubuntu/Debian geht das mit dem Befehl
sudo apt remove modemmanager
Um diese Funktion zu deaktivieren, müsste man den Kernel patchen. Der entsprechende Parameter heisst "CONFIG_SERIAL_CONSOLE".
Alternativ kann man das Echo per Befehl deaktivieren:
sudo stty -F /dev/ttyACM0 -echo
cat /dev/ttyACM0
Falls sowohl der Mikrocontroller als auch der Kernel ein Echo zurück senden, entsteht eine Endlosschleife, die zu völlig erratischen Ausgaben führt. In einem Terminalprogramm (wie z.B. Cutecom oder Hammer Terminal) sieht hingegen alles gut aus.