Forum: Mikrocontroller und Digitale Elektronik PIC32 Bootloader


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 Karsten M. (ht47506)


Bewertung
0 lesenswert
nicht lesenswert
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

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karsten M. (ht47506)


Bewertung
0 lesenswert
nicht lesenswert
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

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karsten M. (ht47506)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

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]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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