Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Über UART gesendete Dateilänge zu kurz

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jun 2017
    Beiträge
    2

    Über UART gesendete Dateilänge zu kurz

    Hallo zusammen,

    ich entwickle unter embedded Linux Software für den Freescale iMX6 Prozessor in C.

    dabei ich habe folgendes Problem: wenn ich unter embedded Linux eine ganz normal ASCII-Datei mit einer Größe von ca 100 kB über eine serielle Schnittstelle und Linux an ein Terminalprogramm (hterm) auf einen Windows-PC senden will, wird die Übertragung nach 6143 bzw 4095 Bytes mit der Meldung 'File sent successfully, 6143 Bytes...' abgebrochen. Ich verwende keine Handshake-Signale, sondern übergebe die ASCII-File direkt über den 'write'-Befehl an die Schnittstelle.
    Das Programm stürzt hierbei nicht ab, sondern macht so weiter, als wäre die Datei nur 6 kB lang gewesen. Die Schnittstelle funktioniert ansonsten sende- und auch empfangsmäßig einwandfrei. Ich habe schon versucht, die verschiedensten Parameter des UART zu ändern, alles erfolglos.

    Deshalb meine Frage:
    Kann es sein, dass Linux intern einen eigenen (UART)-Sendepuffer mit ca 6 kB hat, auf den man keinen direkten Zugriff hat? Wenn ja, wie kann ich den verändern? Oder gibt es eine andere Möglichkeit, den UART anderweitig zum richtigen fumktionieren zu überreden?

    Ich bin ziemlicher Linux-Neuling und tue mich manchmal schon noch schwer. Auch habe ich über Google nichts gefunden, was mir weiterhelfen könnte.
    Deshalb hoffe ich, dass ich hier im Forum evtl. eine vernünftige Antwort erhalte.

    Bei Fragen hierzu bitte melden!

    Für eure Antworten bedanke ich mich schon mal im Voraus.

    LG

    Roland

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.061
    Ich fürchte, in einem Programmier-Forum wärst Du besser aufgehoben. Zudem wäre ein Code-Beispiel hilfreich.

    Mein Google findet aber:
    * http://www.tldp.org/HOWTO/html_single/Serial-HOWTO/
    * http://www.linuxquestions.org/questi...kernel-279038/
    auf beiden Seiten wird für mein Empfinden auf die Problematik eingegangen.
    Ich bin root - ich darf das.

  3. #3
    Elefantenversteher Avatar von florian0285
    Registriert seit
    Jun 2016
    Beiträge
    1.054
    wenn du über diese https://linux.die.net/man/3/write Write-Funktion sprichst würde dort stehten:

    If the value of nbyte is greater than {SSIZE_MAX}, the result is implementation-defined.
    Wenn SSIZE_MAX eben 4096 Bytes ist würde ich das auf Etappen <4096 Bytes in ne while Schleife packen und schreiben.
    Mal so als Ansatz.

    Sonst wäre Kot interessant.
    Matthäus 7:3 Was siehst du aber den Splitter in deines Bruders Auge, und wirst nicht gewahr des Balkens in deinem Auge?

  4. #4
    Registrierter Benutzer
    Registriert seit
    Jun 2017
    Beiträge
    2
    Hallo zusammen,

    möchte mich kurz für eure Unterstützung bedanken. Die Links von marce hatte ich selbst schon gefunden, da steht leider kaum etwas verwertbares drin, außer den Hinweis auf den Parameter 'SERIAL_XMIT_SIZE'. Den habe ich in der Datei 'serial.h' unter '/include/linux/' gefunden. >> #define SERIAL_XMIT_SIZE PAGE_SIZE.
    Habe dann versucht, 'PAGE_SIZE' durch 'PAGE_SIZE*10' zu ersetzen, leider erfolglos. Ich bin mir auch nicht sicher, ob dies die richtige Stelle ist.

    Es ist eigentlich auch nicht Sinn und Zweck, wegen so einer Sache gleich den Kernel neu kompilieren zu müssen.

    Ich habe dann den Ratschlag von florian0285 befolgt, und das ganze in 4096-Chunks aufgeteilt und jeden Teil für sich gesendet. Funktioniert einwandfrei und ich kann mit dieser Lösung leben.

    Nochmal vielen Dank an euch beide!

    Roland

  5. #5
    Elefantenversteher Avatar von florian0285
    Registriert seit
    Jun 2016
    Beiträge
    1.054
    Zitat Zitat von kurol Beitrag anzeigen
    Habe dann versucht, 'PAGE_SIZE' durch 'PAGE_SIZE*10' zu ersetzen, leider erfolglos. Ich bin mir auch nicht sicher, ob dies die richtige Stelle ist.
    Für die Nachwelt

    Das ist keine gute Idee, da noch andere Programme davon leben müssen. Das könnte negative Seiteneffekte hervorrufen. Übertrieben gesagt "wenn ping aufeinmal das Internet ausknipst"

    Dir dann noch viel Spass mit den Chunks
    Matthäus 7:3 Was siehst du aber den Splitter in deines Bruders Auge, und wirst nicht gewahr des Balkens in deinem Auge?

Ähnliche Themen

  1. UART RTS pin im ändern
    Von ArmLinux im Forum Selbstgebaute Elektronik
    Antworten: 1
    Letzter Beitrag: 19.12.17, 19:47
  2. Tunnel für UART
    Von rennreh im Forum Selbstgebaute Elektronik
    Antworten: 1
    Letzter Beitrag: 16.09.13, 18:23
  3. EUG 100 UART gateway - nur wirre Zeichen?
    Von jay-t im Forum Selbstgebaute Elektronik
    Antworten: 7
    Letzter Beitrag: 09.06.12, 08:40
  4. AtMega8 und UART-Problem
    Von jimmy0815 im Forum Selbstgebaute Elektronik
    Antworten: 4
    Letzter Beitrag: 02.05.10, 10:59
  5. Endlich Online über DSL aber nur Kurz
    Von Enterprise im Forum Anbindung an die Aussenwelt
    Antworten: 2
    Letzter Beitrag: 29.12.03, 20:20

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •