Danke,
ich habe da wohl nicht gründlich genug gelesen. Das reine Programmieren
klappt jetzt.
1 | command[0]=50;
|
2 | command[1]=7;
|
3 | command[2]=7;
|
4 | iap_entry(command, result);
|
5 | DbgTraceLong(30, result[0]);
|
6 |
|
7 | command[0]=51;// copy ram to rom
|
8 | command[1]=0x7000;
|
9 | command[2]=((unsigned long)(&write)&0xFFFFFFFC);
|
10 | command[3]=512;
|
11 | command[4]=70000;
|
12 | iap_entry(command, result);
|
13 | DbgTraceString(0xB, "AfterFlashing");
|
14 | DbgTraceLong(30, result[0]);
|
Jetzt stellt sich noch die Frage, wo sind Konstanten wie
"SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION" definiert?
Aber das Löschen funktionniert noch nicht.
[c]
command[0]=50;
command[1]=7;
command[2]=7;
iap_entry(command, result);
DbgTraceLong(30, result[0]); // gibt 0 zurück
DbgTraceString(0xB, "BeforeEraseSector");
command[0]=52; //erase sector
command[1]=7; // startsector 7
command[2]=7; // endsector 7
command[3]=70000;
iap_entry(command, result);
DbgTraceString(0xB, "AfterErase"); // wird nicht mehr ausgeführt?!?!?
[/c)
Das Vorbereiten mit Prepare wird mit 0 als Ergebnis abgeschlossen, wenn
ich dann allerding Erase Sector (52) mit Startsektor 7 und Endsektor 7
aufrufe, kehrt die Funktion nicht mehr zurück. Die Schreibfunktion (51)
hingegen terminiert nach 1 ms.
Bernd