mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NXP P89LPC920 Bootloader


Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Belegt der Bootloader die oberen 256Byte (0700 - 07FF) oder 512Byte 
(0600 - 07FF) des FLASH-Bereiches? Dann steht da noch im User Manual, 
dass generell auch der Bereich von FF00 - FFFF "okupiert" wird.

Ich werde aus dem Datenblatt nicht ganz schlau. Kann mir jemand das 
genaue Verhalten erklären, ich brauche jedes Byte?

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Beschreibung im Datenblatt ist wirklich etwas unverständlich. Ich 
habe eben mal in einem Buch zu den LPC900 nachgelesen. Dort wird das 
ganze etwas verständlicher erklärt.

Der Controller besitzt einen 256Byte großen IAP-BootFlash, welcher die 
eigentlichen Programmierroutinen besitzt und vom Benutzer überhaupt 
nicht überschrieben werden kann. Dieser Bereich liegt im Adressbereich 
0xFF00-0xFFFF.

Dieser Bereich braucht dich also gar nicht zu interessieren.

Interessanter dagegen wird es bei dem ISP-Bootloader. Dieser belegt 512 
Byte und befindet sich am oberen Ende des internen Flahs Speichers. 
Somit liegt er im Adressbereich 0x600-0x7FF. Diesen Bereich solltest du 
also freihalten, insofern du den ISP Bootloader zum flashen benutzen 
willst. Falls du per Programmiergerät oder ICP oder mit selbst 
geschriebenen Software-Routinen (per IAP) den Flash programmieren 
willst, kannst du diesen Bereich natürlich auch für dein eigenes 
Programm verwenden.

Ich hoffe ich konnte dir damit etwas weiterhelfen.

Ciao,
     Rainer

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der Controller besitzt einen 256Byte großen IAP-BootFlash... Dieser
>Bereich liegt im Adressbereich
>0xFF00-0xFFFF.

Jetzt wird mir der Zusammenhang klar. Dort liegen die Routinen, z.B. zur 
Programmierung von einzelnen Flash-Zellen, wie hier:
//**********************************************************************
//* flash_write_byte()
//* Input(s) : Memory address to write to.
//* Returns : bit, flash write succes or fail.
//* Description : write databyte to flash
//**********************************************************************
bit flash_write(char addresshigh, char addresslow, char databyte)
{ 
  FMCON = LOAD;              // set up load command
  FMADRL = addresslow;          // set up low databyte
  FMADRH = addresshigh;          // set up high databyte
  FMDATA = databyte;          // set up databyte
  FMCON = ERASEPROGRAM;          // erase program command
  if (FMCON&0x8F) return FAIL; else return OK;
}

In dem Zusammenhang steht noch eine Verständnisfrage: Wenn ich es 
richtig verstehe, ist eine Page 64 Byte groß. Um ein einzelnes Byte zu 
programmieren, wird immer automatisch eine Page gelöscht und dann neu 
beschrieben. Um die nicht betroffenen Bytes der Page in Ruhe zu lassen, 
müssten die 64 Byte ja irgendwo zwischen gespeichert werden. Wo passiert 
das, doch nicht etwa im interen RAM?

>Interessanter dagegen wird es bei dem ISP-Bootloader. Dieser belegt 512
>Byte und befindet sich am oberen Ende des internen Flahs Speichers.
>Somit liegt er im Adressbereich 0x600-0x7FF.

Ich benutze Fashmagic über die Uart, was auch funktioniert. Der 
Bootloader darf nicht gelöscht werden.

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut dem Buch von mir kann der interne Flash auch mit einzelnen Bytes 
beschrieben/gelöscht werden, nicht nur ganze Pages.

Ciao,
     Rainer

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das geht. Man kann während der Laufzeit jedes Byte (auch einzeln) 
des Flash neu programmieren. Dauert ca. 4ms pro Page. Der MC geht dabei 
kurz in IDLE-Mode und kommt anschließend automatisch wieder zurück.

Was ist das für ein Buch?

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Buch ist von http://www.c51.de/c51.de/Dateien/LPC900.php und 
behandelt speziell die LPC900 samt aller Eigenarten und ich bin damit 
sehr zugrieden. Ich habe auch noch zwei weitere Bücher von dieser 
Webseite die ebenfalls sehr gut sind.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.