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.
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];
}
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...
> 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'
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.