mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR bin-datei via bluetooth senden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte gerne meine MCU via Bluetooth updaten. Dazu möchte ich die 
aus Atmel Studio generierte BIN Datei via Blueooth zur MCU senden und 
mit ElmChan FatFS auf einer SD-Karte speichern, von der ich das Update 
dann ausführe.

Das Update von der Karte funktioniert, wenn ich die BIN Datei am PC 
drauf kopiere. Aber beim senden via Bluetooth geht das nicht. Die Datei 
auf der Sd-Karte sieht dann auch anders aus wie das original. Ein 
kleines Programm zum senden habe ich in Visual Studio geschrieben, wo 
man direkt binary daten einlesen kann. Aber man muss noch ein Encoding 
angeben, ich weiß jedoch nicht welches das sein könnte. mit UTF-8 und 
UTF-32 hatte ich kein Erfolg.

Kann mir da jemand helfen oder geht das ganze so nicht, da FatFS oder 
die USART des ATXMEGA256A3U (die MCU wird verwendet) mit den Zeichen 
nicht klar kommt?

Hoffe es kann jemand Helfen.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Wobei sollen wir denn helfen? Du solltest vorzeigen, was du gemacht 
hast.

von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich sende vom Visual Studio über den Serial Port an dem via BT die MCU 
verbunden ist die binary file welche ich einlese und diese wird an der 
MCU am UART empfangen und mit FatFS auf die SD-Karte gespeichert. Was 
möchtest du da jetzt sehen?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Ich möchte deine Quelltexte sehen. Ist das so abwegig?

Wie kommt denn die Datei auf die Funkschnittstelle und wie kommt sie von 
dort auf die SD Karte?

Was das Encoding (UTF-8, UTF-32) angeht: Das hat mit Zeichensätzen für 
Text zu tun. Bei der Verarbeitung von Binärdateien darf das keine Rolle 
spielen, da gibt es kein Encoding. Offenbar verwendest du die falschen 
Datentypen.

Des Weiteren kann ich dir nur dringend raten, nicht zwei Programme 
gleichzeitig zu entwickeln. Denn wie du siehst weißt du jetzt nicht, 
welches davon das fehlerhafte ist. Verwende lieber ein 
Übertragungsprotokoll, dass du mit bewährten Programmen an der 
Kommandozeile testen kann. Zum Beispiel Y-Modem 
(https://linux.die.net/man/1/sz 
http://textfiles.com/programming/ymodem.txt), das ist einfach 
umzusetzen. Habe ich damals sogar als Teenager auf einem C64 
hinbekommen.

: Bearbeitet durch User
von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also der Zugriff auf die SD Karte gerade beim Update, wenn die BIN-Datei 
direkt am PC drauf kopiert wird geht ja. Auch die Kommunikation mit 
Bluetooth geht, es wird die Datei anleget wie ich will usw.

Direkt m VisualStduio gibt es einen BinaryReader welchen ich dafür 
verwenden wollte um die binary datei über die Serielleschnittstelle zu 
senden. Dieser BinaryReader möchte aber ein Encoding haben. Vielleicht 
ist das aber auch einfach nur türicht das so machen zu wollen?

von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also ist die Frage wohl mehr, kann ich meine "firmware.bin" einfach über 
uart senden um diese dann als update zu speichern?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Auch die Kommunikation mit
> Bluetooth geht, es wird die Datei anleget wie ich will usw.

Aber der Inhalt ist nicht Ok, sagst du.

> Dieser BinaryReader möchte aber ein Encoding haben.

Das ergibt für mich keinen Sinn. Text Reader haben ein Encoding.

Womöglich benutzt du einfach nur die falsche Read() Funktion. Ich habe 
jetzt aber keine Lust hier unqualifiziert weiter zu raten, bloß weil du 
deinen Quelltext nicht zeigen willst.

> Also ist die Frage wohl mehr, kann ich meine "firmware.bin"
> einfach über uart senden um diese dann als update zu speichern?

Eben deswegen habe ich ein einfaches bewährtes Übertragungsprotokoll 
(Y-Modem) empfohlen. Jedes ordentliche Terminalprogramm unterstützt es, 
und für Linux (auch CygWin) gibt es ein entsprechendes 
Kommandozeilen-Tool.

: Bearbeitet durch User
von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja von welchemd er beiden Programme möchtest Du denn den Queltext?

von Heinz B. (Firma: Privat) (hbrill)


Bewertung
-1 lesenswert
nicht lesenswert
Ich denke, das hat eher was mit ANSI und ASCII zu tun.
Kopierst du vom PC einfach mit Explorer oder mit Konsole
mit Zusatz Binär (Copy test.bin /b SdKarte:) ?

Die ser. Schnittstelle kann nur ASCII.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Ja von welchemd er beiden Programme möchtest Du denn den Queltext?

Ich komme mir langsam verarscht vor. Natürlich von beiden!

Außerdem möchte ich die Analyse der Daten sehen, die übertragen werden. 
Irgendwie musst ja geprüft haben, welches der beiden Programme 
fehlerhaft ist. Wenn du das versäumt hast, dann hole es jetzt nach, 
bevor es peinlich wird.

Du musst liefern, sonst ist hier schon Ende im Gelände.

von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
>> Auch die Kommunikation mit
>> Bluetooth geht, es wird die Datei anleget wie ich will usw.
>
> Aber der Inhalt ist nicht Ok, sagst du.

Genau der ist auf der SD Fehlerhaft. Weiß aber nun nicht ob diese 
richtig raus geht und falsch gespeichert wird oder bereits falschr aus 
geht.

>
>> Dieser BinaryReader möchte aber ein Encoding haben.
>
> Das ergibt für mich keinen Sinn. Text Reader haben ein Encoding.
>
> Womöglich benutzt du einfach nur die falsche Read() Funktion. Ich habe
> jetzt aber keine Lust hier unqualifiziert weiter zu raten, bloß weil du
> deinen Quelltext nicht zeigen willst.

Leider habe ich das Visual Studio nicht programmiert um du entscheiden 
ob BinaryReader ein Encoding verlangen soll oder ob nicht.

von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Heinz B. schrieb:
> Ich denke, das hat eher was mit ANSI und ASCII zu tun.
> Kopierst du vom PC einfach mit Explorer oder mit Konsole
> mit Zusatz Binär (Copy test.bin /b SdKarte:) ?
>
> Die ser. Schnittstelle kann nur ASCII.

Am PC arbeite ich einfach mit Copy und Paste.

Dass die ser. Schnittstelle nur ASCII kann ist mir klar, deshalb ja auch 
meine Frage ob ich da überhaupt die binary empfangen kann.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Heinz B. schrieb:
> Ich denke, das hat eher was mit ANSI und ASCII zu tun.
> Kopierst du vom PC einfach mit Explorer oder mit Konsole
> mit Zusatz Binär (Copy test.bin /b SdKarte:) ?

Er hat doch geschrieben, dass die Daten der SD Karte in ordnung sind, 
wenn er sie direkt mit dem PC beschreibt.

> Die ser. Schnittstelle kann nur ASCII.

Das ist totaler Unsinn. Die Serielle Schnittstelle des PC überträgt 
Binärdaten in 7, 8 oder 9 Bits. Der TO braucht 8 Bits.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Leider habe ich das Visual Studio nicht programmiert

Aber du hast hoffentlich dein Programm selbst programmiert und kannst 
die Dokumentation dieser Klasse lesen. Wenn nicht ist der Fall 
hoffnungslos.

Willst du dich immer noch weigern, deine Quelltexte zu zeigen?

: Bearbeitet durch User
von Diopter  . (diopter)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Das ist totaler Unsinn. Die Serielle Schnittstelle des PC überträgt
> Binärdaten in 7, 8 oder 9 Bits. Der TO braucht 8 Bits.

Richtig, aber man muss auch noch darauf achten, dass nicht XON/XOFF als 
Handshaking eingestellt ist.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Diopter  . schrieb:
> Richtig, aber man muss auch noch darauf achten, dass nicht XON/XOFF als
> Handshaking eingestellt ist.

Von alleine schaltet sich das nicht ein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.