AVR bin-datei via bluetooth senden

Gast #6194918
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.
Gast #6194941
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?
Gast #6194946
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.
Gast #6194964
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?
Gast #6194996
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.
Gast #6195021
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.
Gast #6195022
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.
Gast #6195028
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.
Gast #6195031
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.
Gast #6195036
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren