Aktivieren Sie den virtuellen COM-Anschluss, serielle Verbindung (Update)

863
Michael

Ich arbeite mit einem IMX6-Board, das einen Linux-Kernel, U-Boot und Rootfs ausführt, die aus Yocto generiert wurden. Ich habe eines der Kernbilder verwendet. core-image-minimal-dev zum Erstellen des Kernel-Images. Ich habe in usbutils als image_install im Core-Image-Minimal-Dev-Rezept hinzugefügt.

Ich habe bereits eine Frage gestellt, in der ich Unterstützung für die Stromversorgung des USB2.0-Anschlusses gesucht habe. Diese Frage wurde nun angesprochen. Was ich jetzt erreichen möchte, ist, das Gerät als VCP erkennbar zu machen. Ich muss ein externes Gerät an den USB 2.0 anschließen und als tty-Verbindung erkannt werden. An diesem Punkt, wenn ich das Gerät in alles stecke, was ich bekomme ist.

new full-speed USB device number 5 using ci_hdrc  usb 2-1: New USB device found, idVendor-10c4, idProduct=ea60 usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 2-1: Product: CP2104 USB to UART Bridge Controller usb 2-1: Manufacturer: Silicon Labs usb2-1: SerialNumber: 013C2C09 

In / dev / directory gibt es keine Änderungen, wie es sollte. Ich hoffe etwas in der Richtung von / dev / ttyUSB0 zu sehen. Wo kann ich dann eine Anwendung schreiben, die über diesen Port seriell kommuniziert.

Durch meine Recherchen stieß ich auf mehrere Hinweise, dass virtuelle COM-Port-Treiber im Linux-Kernel vorinstalliert sind. Ich habe auf der FTDI-Chip-Website eine Reihe von Anweisungen mit einigen Anweisungen gefunden.

http://www.ftdichip.com/Support/Documents/AppNotes/AN_220_FTDI_Drivers_Installation_Guide_for_Linux.pdf

Ich ging die Schritte durch, um eine neue Regel für das FTDI-VCP hinzuzufügen.

Ich habe mir die ID-Produktnummer und die ID-Lieferantennummer aus dem Gerät entnommen, als das Gerät angeschlossen wurde. Da ich den Befehl udevcontrol_reload-Regeln nicht in das Betriebssystem geladen habe, habe ich nur einen Neustart durchgeführt. Leider hatte es kein Glück.

Als Nächstes habe ich den Kernel über die Menükonfiguration geändert.

bitbake -c menuconfig virtual / kernel USB_SERIAL_CONSOLE war auf der Karte bereits aktiviert. USB-Serial Converter-Unterstützung wurde beschriftet. Also habe ich USB_SERIAL_CP210X aktiviert, das als USB-CP210x-Familie von UART Bridge-Controllern bezeichnet wurde. Wenn ich drückte, erhielt ich ein Popup.

Diese Funktion hängt von einem anderen ab, der als Modul konfiguriert wurde. Daher wird diese Funktion als Modul erstellt.

Nachdem der USB CP210x mit einer aus dem Menü verlassenen Konfiguration markiert worden war, kompilierte er den Kernel mit bitbake -f -c compile virtual / kernel gefolgt von bitbake core-image-minimal-dev

Ich sehe immer noch kein Vcp in / dev /

Ich besuchte die Linux-Kernel-Treiberdatenbank, und die Berichterstellung der UART Bridge Controller-Familie USB CP210x hat keine Abhängigkeiten. Ich verstehe also nicht, warum das Popup sagte, es habe andere Abhängigkeiten.

Das nächste, was ich in meiner Forschung fand, war die Notwendigkeit, das Modul entweder über insmod oder mknod in Linux zu laden. Also habe ich mir das angesehen. Jede der Referenzen, die ich gefunden habe, forderte mich auf, einige .ko-Dateien zu kompilieren, die sich im Verzeichnis lib / modules / ... / serial / befanden. Beim Durchlaufen der rootfs für das Betriebssystem kann ich jedoch kein Modulverzeichnis finden. entweder von ~ / lib / oder von / usr / lib

(AKTUALISIEREN)

Also habe ich die defconfig so konfiguriert

config_usb_serial  config_usb_serial_ftdi_sio 

sind beide zu laden und nicht als Module.

Ich habe einige hilfreiche Informationen gefunden, die das Erstellen eines mknods und dann von insmod umfassen.

$ mknod /dev/ttyUSB0 c 188 0 $ insmod /lib/modules/4.1.15-1.0.0+g3924425/kernel/drivers/usb/serial/usbserial.ko vendor=0x067b product=0x2303 

für mich würde ich den cp2104-Treiber anstelle des generischen verwenden. Was ich jetzt mit Problemen habe ist, dass ich kein Modulverzeichnis habe. Innerhalb des Verzeichnisses / lib /, in dem ich ein Modulverzeichnis haben sollte, gibt es kein Verzeichnis. Gibt es einen Einblick in das Modulverzeichnis?

Irgendwelche Vorschläge?

0

1 Antwort auf die Frage

0
djsmiley2k

Erstens, wenn es zum Laden keinen Grund ist (oder es ist deps) als Modul, würde ich auf den Aufbau sie statisch in den Kernel aussehen, damit Sie sie nicht geladen werden müssen, oder sehen Sie die Distro Sie verwenden und wie diese Lasten Module .

Wenn Sie der Meinung sind, dass Sie das Modul korrekt geladen haben, aber nicht sicher sind, verwenden Sie lsmod.

Wenn lsmod cp210 anzeigt, ist das Modul bereits geladen, und dies ist nicht Ihr Problem.

djsmiley2k, ich bin neu im yocto und beim Manipulieren von Kerneln. Als ich versucht hatte, cp210 zu laden, musste ich es als Modul tun, als ich drückte und es ist standardmäßig eingestellt . Ich habe versucht, lsmod bei Ihrem Vorschlag und das einzige, was zurückgegeben wurde, sah so aus: "Modulgröße verwendet von" Das war alles. Michael vor 6 Jahren 0