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.
Wobei sollen wir denn helfen? Du solltest vorzeigen, was du gemacht hast.
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?
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.
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?
Also ist die Frage wohl mehr, kann ich meine "firmware.bin" einfach über uart senden um diese dann als update zu speichern?
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.
Ja von welchemd er beiden Programme möchtest Du denn den Queltext?
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.
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.
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.
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.
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.
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?
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.