Hallo zusammen, ich habe hier ein älteres Projekt auf einem PIC32MX460F512L. Es ist noch mit MPLab8 und den Microchip Application Libraries vom 14.07.2011 geschrieben. Wir haben den Beispiel USB HID Bootloader verwendet, der über einen externen Taster aktiviert wurde. Das funktionierte soweit gut. Nun soll aber der Bootloader von der Application aus gestartet werden. Gedacht ist folgende Vorgehensweise: 1. Application hinterlegt im Flash ein Flag 2. Application führt Reset aus 3. Bootloader erkennt Flag und empfängt neue Application. Anschliessend setzt er das Flag zurück und startet die Application. Hier bekomme ich nun es aber nicht hin in der Application ein Flag mittels NVMWriteWord zu speichern, welches im Bootloader gelesen werden kann. Ich vermute, dass ich das mit den Virtuellen Adressen und der Config im Linkerscript nicht richtig verstehe. Die Linkerscripts entsprechen denen des Beispiels in der Library. Kann mir hier jemand weiterhelfen ? Grüße Karsten
Woran liegt es denn? a) kannst Du in der Applikation ein Byte ändern? Das kannst Du ja in der Applikation prüfen. b) kannst Du im Bootloader ein Byte lesen? Dazu brauchst Du keine Applikation c) Ob Beide an gleicher Adresse arbeiten, kannst Du mit verschiedenen Mustern testen. d) führt der Reset bei Euch auch zur Spannungsabschaltung? Sonst eigent sich doch praktisch jedes Register, dass beim Startup, aber nicht beim Reset gesetzt wird.
Hallo Achim, danke für die Infos. Also ich kann in der App das Byte ins Flash schreiben und nach einem Neustart in der App auch wieder lesen. Wenn ich im Bootloader ein Byte ins Flash schreibe, kann ich das beim nächsten Start auch wieder problemlos zurücklesen. Versuche ich im Bootloader das Byte aus der App zu lesen, so ist dieses schlicht nicht da. Ich vermute daher, dass irgendwas mit der Adresse nicht stimmt, da im Linkerscript ja unterschiedliche Bereiche für App und Bootloader definiert sind. Ich habe aber leider keine besonders große Ahnung von Mikrocontrollern - ich entwickle seit 20 Jahren Windows Software. Die Idee mit dem Register klingt gut, die Spannung bleibt im Resetfall erhalten. Welches kann ich da nehmen ? Grüße karsten
Karsten M. schrieb: > Wenn ich im Bootloader ein Byte > ins Flash schreibe, kann ich das beim nächsten Start auch wieder > problemlos zurücklesen. Zurücklesen im Bootloader aber nicht in der APP? Hast Du keinen Debugger um den Speicher zu durchsuchen? Für die App mag mancher Speicher tabu sein, aber der Booter sollte doch weitgehend überall schreiben können ;-) Karsten M. schrieb: > Welches kann ich da nehmen Jedes, dass beim Power-On definiert gesetzt wird und das Du nicht brauchst und das beim Umsetzen keine Problem macht, also z.b. ein Control-register für einen ungenutzten Uart oder ein Datenrichtungs-Bit eines ungenutzten Ports.
Achim S. schrieb: > um den Speicher zu durchsuchen? Für die App mag mancher Speicher tabu > sein, aber der Booter sollte doch weitgehend überall schreiben können > ;-) Das dachte ich auch, aber selbst wenn ich über den ICD3 den Speicherinhalt ins MPlab lade, kann ich dort die Daten der App nicht finden, wenn das Bootloader Project läuft. Zudem verwirren mich die Speicheradressen. Ich habe die Linker Scripts mal angehangen. Achim S. schrieb: > Control-register für einen ungenutzten Uart oder ein Datenrichtungs-Bit > eines ungenutzten Ports. Danke für den Tipp. Das werde ich mal probieren.
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.