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


von Andreas W. (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite


Angehängte Dateien:

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.

von LightCo (Gast)


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];
}

von Ralph (Gast)


Lesenswert?

Hast du den zu beschreibenden Sector vorher gelöscht ?

von Rupplyn (Gast)


Lesenswert?

ja habe ich... daran liegts definitiv nicht.

von Andreas W. (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite


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...

von Peter (Gast)


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'

von Andreas W. (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite


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...

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
Noch kein Account? Hier anmelden.