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.