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