mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2148 - IAP - Copy Ram To Flash


Autor: Andreas Weschenfelder (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin dabei verschieden iap-funktionen zu implementieren.

das auslesen der part-id, der boot-code-version, blank-check und erase 
funktioniert bereits.

mit der funtktion "copy_ram_to_flash" habe ich probleme. als rueckgabe 
erhalte ich immer "SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION" obwohl, ich 
die dazugehörige funktion erfolgreich aufrufe...

vielleicht habt ihr ja ne idee.

Autor: LightCo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die write Funktion so gelöst:
vielleicht hift es:

INT8U write_flash(INT32U Start, INT32U Stop, void* dest, void* source, 
INT32U size)
{
    INT32U cpsr;
    MEMMAP = MEMMAP_FLASH;
    cpsr = disableIRQ();    // disable global interrupts
    iap_entry=(IAP) IAP_LOCATION;
    //prepare sector
    command[0] = 50;
    command[1] = Start;
    command[2] = Stop;
    iap_entry(command, result);
        if(result[0])
            return result[0];
    //write sector
    command[0] = 51;
    command[1] = (unsigned int)dest;
    command[2] = (unsigned int)source;
    command[3] = size;
    command[4] = CCLK/1000;
    iap_entry(command, result);
        if(result[0])
            return result[0];

    #if defined(RAM_RUN)
  MEMMAP = MEMMAP_SRAM;                 // map interrupt vectors space 
into SRAM
  #elif defined(ROM_RUN)
  MEMMAP = MEMMAP_FLASH;                // map interrupt vectors space 
into FLASH
  #else
  #error RUN_MODE not defined!
  #endif
    enableIRQ();
    return result[0];
}

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du den zu beschreibenden Sector vorher gelöscht ?

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja habe ich... daran liegts definitiv nicht.

Autor: Andreas Weschenfelder (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zur info:

lag tatsächlich am nicht gelöschten sektor. meine sektor-berechnung aus 
der adresse war falsch, sodass ich den falschen sektor gelöscht bzw. mit 
blank-check überprüft habe...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> lag tatsächlich am nicht gelöschten sektor. meine sektor-berechnung aus
> der adresse war falsch, sodass ich den falschen sektor gelöscht bzw. mit
> blank-check überprüft habe...
wenn man vorher nicht löscht, kann man trotzdem schreiben, allerdings 
nur die 0-bits ;)
aber du meinst sicher das 'prepare command'

Autor: Andreas Weschenfelder (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sry hast natürlich recht... prepare wurde auf den falschen sektor 
ausgeführt, sodass ich auf copy_ram_to_flash immer not_prepare erhalten 
hatte...

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.