Hallo! Ich arbeite für ein Uniprojekt mit einem STM32F051 Discovery Kit. Da dieser später an einer unzugänglichen Stelle sein wird, habe ich mit einem Bluetooth-Chip eine UART Kommunkationsschnittstelle zwischen PC und STM32 eingerichtet. Da ich aber gerne nicht nur Daten via BT austauschen will, sondern gegebenenfalls das STM32 Programm ändern will habe ich mich (zum ersten Mal) in das Thema Bootloader eingelesen. So sollte es ja möglich sein, über Bluetooth den Bootloader mit der UART2 (habe extra die Pins genommen, die der Bootloader auch verwendet) anzusprechen und den neuen Programmcode in den Flash Speicher zu spielen. Die Initialisierung des Bootloaders klappt auch bereits und ich bekomme ein ACK vom Bootloader, dass er bereit für Befehle ist! Jetzt würde ich also gerne mein Programm als HEX File in den Flash Speicher spielen, was ja mit dem Bootloader Write Memory Command gehen sollte. Da dieser allerdings nur max 256 Byte akzeptiert und davon auch eine Checksumme (XOR) haben will, wollte ich mal nachfragen, ob ich hier eh am richtigen Weg bin bzw. ob es da ein Tool dafür gibt?? (Kann mir nicht vorstellen, dass ich händisch mein HEX File zerstückeln und die Checksummen einzeln berechnen und senden muss) vielen Dank schon Mal Robert
Daniel H. schrieb: > dass ich händisch mein HEX File zerstückeln Wieso händisch? Du kannst doch programmieren.
ich meinte mit "händisch" auch "selbst ein Programm am PC schreiben" ;) War nur verwundet, dass ich bis jetzt bei meinen Recherchen kein so ein Tool gefunden habe und daher besorgt, dass mein Weg der falsche ist.
1. Ich würde ein .bin File benutzen, welches genau so groß ist wie dein Flash. Gegebenenfalls mit 0xFF oder so auffüllen. Das musst du dann nur 1:1 einfach ins Flash schreiben. (Bist du dir sicher das der write Befehl .hex frisst und du das .hex nicht vorher selber in .bin wandeln musst? 2. Da du Flash sowieso nur Pageweise, beschrieben kannst nachdem diese vorher gelöscht worden ist, musst du deine Firmware eh in Stücke zerteilen. Am PC liest du das File komplett in ein Array ein sendest dann Pageweise die Datei und berechnest dir noch ne CRC über den Teil den du gesendet hat und hängt den hinten dran. (Vorrausgesetzt eine Page passt komplett in den RAM vom µC, wenn nicht wüsste ich gerade nicht weiter...)
Tuxi schrieb: > 1. Ich würde ein .bin File benutzen, welches genau so groß ist wie > dein > Flash. Gegebenenfalls mit 0xFF oder so auffüllen. Das musst du dann nur > 1:1 einfach ins Flash schreiben. (Bist du dir sicher das der write > Befehl .hex frisst und du das .hex nicht vorher selber in .bin wandeln > musst? Der Bootloader Write Befehl akzeptiert gar keine ganzen Dateien sondern nur einzelne Byte via COM Schnittstelle (Ich verwende dazu momentan HTerm) Schaut so aus, dass ich ein Startbyte (z.b. 0x7F) sende, dann ein ACK bekommen und dann die Adresse und anschließend max 256 Byte Daten senden kann, die an die angegebene Adresse (z.b. Flash) geschrieben werden. (also nichts mit .hex oder .bin Dateien) Primär interessiert mich, ob das der richtige Weg ist, oder ob ich da ein Tool oder so übersehe, dass diese Arbeit für mich macht... (Wie gesagt mein erster Bootloader Versuch und in den STM Datenblättern steht nur diese grundliegende Kommunikation mit dem Bootloader beschrieben)
Es gibt dafür bereits ein fertiges Tool von STM. "Flash loader"ist das stichwort.
Daniel S. schrieb: > Es gibt dafür bereits ein fertiges Tool von STM. "Flash loader"ist das > stichwort. DANKE, genau das hab ich gesucht:)!!
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.