[Fli4l_dev] fli4l (4.0.0-r59480) und serielle Console
Thomas Grunenberg
tho_gru at gmx.de
Do Dez 24 22:20:22 CET 2020
Am 24.12.2020 um 10:53 schrieb Thomas Grunenberg:
> Moin, moin,
>
> Ich betreibe meinen fli4l seit vielen Versionen auf Embedded Hardware
> (erst Soekris 5501 und 6501, aktuell PC Engines - apu) mit einer
> seriellen Console.
>
> Dafür habe ich folgende Zeilen in der Config:
> ###################################################
> SER_CONSOLE='yes'
> SER_CONSOLE_IF='0'
> SER_CONSOLE_RATE='115200'
> SYSLOGD_DEST_1='*.* /dev/console'
> ###################################################
>
> Mit dieser Konfiguration gab es in allen bisherigen fli4l Versionen
> keine Probleme: Wenn ein Terminal an der seriellen Schnittstelle hängt,
> geht alles langsam (Zeichenübertragung braucht seine Zeit). Wenn kein
> Terminal angeschlossen ist, geht alles schnell.
>
> Diese Zeilen habe ich auch in die config für meine aktuelle 4.0.0-r59480
> Software eingetragen. Grundsätzlich funktioniert damit der Router.
>
> Es gibt aber zwei Probleme:
> 1) Das Booten dauert sehr lange, wenn ich an die seriellen Schnittstelle
> ein Terminal anschließe. Nach dem Booten arbeitet die APU wieder normal
> schnell (keine/wenig Ausgabe auf dem Terminal)
> 2) Wenn ich _kein_ Terminal anschließe bleibt der Bootprozess hängen.
>
> Hat jemand eine Idee für eine Lösung? Wieso blockiert die serielle
> Schnittstelle wenn kein Terminal dranhängt (das war bei den 3.10.xx
> Versionen nicht so)? Muss ich nur meine config ändern? Brauche ich einen
> anderen Kernel?
>
> Mit freundlichen Grüßen
> Thomas
Nach langem Testen habe ich herausgefunden, dass der Hänger nicht mit
der fli4l-Version zusammen hängt, da zwischenzeitlich auch meine
ursprüngliche 3.10.18-Version hing. Die Ausgaben von "stty -F /dev/ttyS0
-a" ist in den verschiedenen fli4l-Versionen identisch.
Bevor ich mit 4.0.0-r59480 anfing, habe ich die Firmware des APU von
4.11.0.1 auf 4.11.0.6 gebracht. Aber auch das scheint mir nicht die
Ursache zu sein.
Inzwischen bin ich der Überzeugung, dass eine der beiden folgenden
Ursachen zu dem Hänger mit der seriellen Schnittstelle führen kann:
1) Die serielle Verbindung wird zum falschen Zeitpunkt getrennt
Wenn der Puffer im Terminal voll ist, sendet es ein CTRL-S. Wenn der
Puffer wieder leer ist, ein CTRL-Q. Wenn jetzt nun die Verbindung
getrennt wird, nach dem ein CTRL-S gesendet wurde, erhält der fli4l nie
ein CTRL-Q und hängt.
2) Lange Leitung
Ich nutze eine etwa 7 m lange Verbindung zwischen dem Terminal und dem
fli4l. Die Verbindung habe ich mit LEDs beschaltet, so dass ich die
Pegel auf den Drähten sehen kann. Aus Bequemlichkeit habe ich die
Verbindung am Terminal getrennt, so dass die lange Leitung noch mit dem
APU verbunden war. Ich konnte sehen, dass der fli4l keine Daten gesendet
hat. Nachdem ich die Leitung vom APU getrennt habe und LEDs direkt
direkt neben der APU angeschlossen habe, konnte fli4l auf der seriellen
Leitung senden.
Gruß
Thomas
Mehr Informationen über die Mailingliste Fli4l_dev