Forum: Mikrocontroller und Digitale Elektronik M1626 Flash Update


von Til Stork (Gast)


Lesenswert?

Hi alle,


Ich entwickel gerade auf einem M16C26 einen Embedded Server. Es wird
möglich sein diesen Server über das Internet mit neuer Software zu
versorgen.

Dazu empfange ich das 64kByte große Bin File aus dem Internet und
speicher es in ein Eeprom, so weit so gut. Jetzt muss das Bin File noch
aus dem Eeprom in den Flash ab Adresse 0x0F0000 kopiert werden.

Leider habe ich keinen RAM mehr frei, um dort mein Flash Kopier
Routinen hin zu kopieren und dort auszuführen. Die einzige Möglichkeit
ist also den beiden Blöcke A und B (0x00F000-0x00FFFF) als Codesegment
zu nutzen. Also hab ich im sect30.inc ein entsprechendes Codesegment
angelegt und sehe dies auch ab Adress 0x00F000 im Bin File. Das doofe
ist jetzt nur, das der M16C Flasher nur die 64kByte ab Adresse 0x0F0000
in den Controller überspielt.

Bin also für alle guten Ideen und Anregungen offen!! Das einzige, was
mir nämlich im Moment einfällt, ist per Hand meine Flash Routinen im
Bin File irgendwo an eine freie Stelle in den 64kByte Block rein zu
kopieren und nachher beim Start wieder in den Block A und B zu
kopieren.

von Peter Kasi (Gast)


Lesenswert?

Kannst du event. einen Teil deines Speichers dynamisch reservieren
(vieleicht hast du ja ein paar große arrays). Wenn du dann in den
Updatemode gehst, brauchst du die Arrays nicht mehr und kannst sie
freigeben. Dann hast du auch wieder genug Speicher um deine
Flashroutine aus dem RAM auszuführen.

von Til Stork (Gast)


Lesenswert?

Ne, das geht leider nicht, solche Speicherbereiche gibt es bei mir im
RAM nicht. Evtl. hab ich jetzt ne Lösung gefunden, ich versuche gerade
soweit Segmente hin und her zu schieben, das ich einen Flash Block
komplet frei bekomme, dann kann ich darin mein Eeprom->Flash Kopier
Routine halten.

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.