T89C51RD2 und AT24C64

Gast #125844
Lesenswert?

hi leute ich hätte da mal ne frage. und zwar geht es darum, dass ich
einen kompilierten Code (in C51 geschrieben) auf dem T89C51RD2 von
Atmel ausführen möchte, welches ich aber zuvor über eine
I2C-Schnittstelle von dem AT24C64 gelesen habe. Ist dies eigentlich
möglich, oder bekomme ich da probleme mit dem Adressbereich des
kompilierten Codes?
gruss gökkes
Gast #125845
Lesenswert?

Ungefähr so, wird es auch von Monitor-Programmen gemacht. Die kopieren
das ganze in ein ext. Ram.

"Ist dies eigentlich
möglich, oder bekomme ich da probleme mit dem Adressbereich des
kompilierten Codes?"

Dein Problem liegt dann darin, das der T89C51RD2 nur 64kB Code und 64kB
Ram verwalten kann. Und da er ja schon 64kB Flash-Code Speicher
hat.......
Somit müßtest du zur Laufzeit, den /EA Pin umschalten (auf Low) und
einen Reset ausführen. Das ext. Ram muß dann auch mit /PSEN verknüpft
sein.

Mfg Sascha
Gast #125847
Lesenswert?

Der EA-Pin wird nur beim Reset abgefragt, hier hast Du also keine andere
Möglichkeit!

Du könntest aber die ganze Zeit über im externen Programmspeicher
arbeiten: Sprich am Anfang ein kleines Programm, welches einen Teil vom
FLASH ins externe RAM kopiert, dann die EA-Leitung umschalten und nen
Reset auslösen. Hier jetzt das normale Programm ausführen. Teile davon
könntest Du jetzt gegen Codestücke aus dem EEPROM austauschen.

Sollte so gehen,

veil Erfolg,

Markus_8051
Gast #125849
Lesenswert?

Indem Du die PSEN-Leitung als Chip-select-Leitung für den externen
Programmspeicher verwendest!

Wie hast Du das sonst vor, ohne einen externen Programmspeicher? Hat
der T89C51RD2 die Möglichkeit, sich selbst während des Betriebs zu
flashen?

Gruß,
Markus_8051
#125850
Lesenswert?

Du must Dir einen Bootloader schreiben, der überprüft, ob der Inhalt im
Flash schon gleich dem EEPROM ist.
Wenn nicht, überprüft er, ob im EEPROM eine gültige Kennung steht und
die CRC stimmt und dann kopiert er den EEPROM in den Flash.
Zum Kopieren rufst Du dann die API-Funktionen im Factory-Bootloader
auf.

8kB reicht zwar für vieles, aber ich würde gleich einen 24C256 (32kB)
nehmen.


Peter
Gast #125853
Lesenswert?

Das mit EA geht nicht !
Beim AT89C51Rxx ist standartmäßig EA deaktiviert. Er lässt sich nur
durch einen kompletten Chip Erase aktivieren. Chip Erase ist aber nicht
das was Flip macht, sondern anscheinend nur mit einem parallel
Programmer möglich...

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