M16C Daten im Flash

Gast #34626
Lesenswert?

Hi alle,

ich will Daten im Flash speichern (ist ja blöde den riesen Flash nur für 
das prg zu nutzen). Ich sowas schon auf einem Fujitsu programmiert, aber 
ich komme ich nicht so richtig weiter.

Zunächst muss ich ja Code im RAM ausführen könn, da ich ja nicht 
gleichzeitig aus dem Flash Code ausführen kann und im Flash rummachen 
kann.

Dann brauche ich noch Routinen, um einen Flashsektor zu löschen  und um 
ein Word in eine Adresse ins Flash zu schreiben oder zu lesen.

Falls jemand dazu etwas hat, wäre ich sehr dankbar.

Gruß

Til
Gast #34628
Lesenswert?

hallo,

da ich das orginal von mitsubishi nicht mehr habb, ist ein vom
mir etwas modifiziertes im anhang.

als erstes "flash_init()" starten, um die routinen in den ram zu 
kopieren.

"void erase_flash()" löscht den flash-block (welcher, ist noch intern 
festgelegt)
write_flash(zieladresse, zeiger auf die 256byte);


ralf
Angehängte Dateien:
Gast #34629
Lesenswert?

Danke erstmal!!!

@ralf

ich verstehe nicht ganz was dies macht:

unsigned char page_program (void)

...

   for (counter = 0; counter < BLOCK_SIZE_WORD; counter++)
   {
      *addr = (data[counter]<<8) + (data[counter]>>8); // !?!?
    *addr++; //?!? muss das nicht addr++ heißen?
   }

...
Gast #34630
Lesenswert?

> *addr = (data[counter]<<8) + (data[counter]>>8); // !?!?

vor der zuweisung werden high-byte und low-byte getauscht.
das war bei mir programmtechnisch bedingt.

> *addr++; //?!? muss das nicht addr++ heißen?

richtig, das enstand beim auseinander nehmen des orginalcodes.
es erzeugt keine fehler, deswegen habe ich es übersehen.

anbei der orginale code.

ralf
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren