Forum: Mikrocontroller und Digitale Elektronik At89s52 flash memory erweitern, möglich?


von David W. (welkin)


Lesenswert?

Hallo Leute

Ist es möglich das 8k Flash Memory eines At89s52 zu erweitern?

Ich brauch für ein Projekt ziemlich viel Speicher. 128k werden es 
mindestens.
Ist das überhaupt noch mit dem At89s52 zu packen?

Ich frag so blöd weil ich Softwaremäsig ziemlich eingeschränbkt bin.
Ich hab FreeBSD, Linux und FreeDOS am laufen, aber kein Windows (auch 
keine CD mehr). Ich muss also immer erst abchecken ob es für eine 
bestimmte MCU Programmiersoftware gibt .

Ich hab zu Hause auch ein At89s52 rumliegen und als Compiler würd ich 
SDCC benutzen. Als Flash Programmer uisp
http://www.nongnu.org/uisp/

von Sigint 112 (sigint)


Lesenswert?

Hallo Karim,
  den Flashspeicher wirst du erweitern können, da der AT89S52 ein 
externes Speicherinterface besitzt. Mit Banking kannst du auch weit mehr 
als 64KiB ansprechen, ABER in C wirst du den Speicher nicht nutzen 
können. In Assembler kannst du den gesamten Speicher mit ein paar Tricks 
verwenden.
Der 8051er kann den externen Speicher sowohl als Programm- als auch 
Datenspeicher nutzen. Schau im Netz einfach mal nach... da gibts genug 
Infos.

Gruß,
  SIGINT

von Matthias (Gast)


Lesenswert?

Hallo,

erste Frage ist, ob es nicht besser wäre, gleich einen anderen µC aus 
der 8051 Familie einzusetzten. Es gibt welche mit reichlich internen 
Flash, sogar recht preiswert. Externer Speicher ist auch nicht ganz 
billig, dazu kommt noch ein Latch (74HCT573) und ggf. eine CS-Logik. 
SDCC kannst Du ja weiter verwenden.

Wenns unbedingt der 89S52 bleiben muss, geht das natürlich auch mit 
externen Speicher. Es gehen Dir aber mind. 2 komplette Ports sowie 
einige zusätzliche Steuerleitungen verloren.

Noch komlizierter wirds, wenn Du in den FLASH nicht nur Dein 
Programmcode ablegen willst, sondern auch noch den FLASH als 
Datenspeicher nutzen willst. Das würde nur mit einigen Aufwand gehen.

Gruß
Matthias

von Peter D. (peda)


Lesenswert?

Karim Forsthofer wrote:

> Ich frag so blöd weil ich Softwaremäsig ziemlich eingeschränbkt bin.

Wenn Deine Software einen 8051 kann, dann kann sie alle. 8051 sind 
softwaremäßig 100% kompatibel.
Das fehlende Include (SFR-Definitionen) schreibt man sich notfalls 
selber.


Du kannst den Flash erweitern oder gleich nen größeren 8051 nehmen, z.B. 
AT89C51RE2 (128kB).
Der hat sogar nen Bootloader (kein Programmiergerät nötig, nur UART 
dranpappen und los).


Um über 64kB Flash anzusprechen, brauchst Du allerdings nen Compiler mit 
Banking-Linker.


Peter

von holger (Gast)


Lesenswert?

Das ist durchaus zu packen. Es kommt darauf an
wie deine 128kB zustande kommen. Wenn der reine
Programmcode in die 8kB passt und der Rest aus Daten
wie Bitmaps, Soundsamples usw. besteht, kannst du
dir ein serielles SPI Dataflash wie AT45DB161D dranhängen.
2MByte in SO8 Gehäuse. Oder eine SD Karte.

Wenn du mehr als 8kB Programmcode hast geht es
wie Sigint schon sagte über das externe Memoryinterface.
Das wird aber schon schaltungsmässig extrem anspruchsvoll.
Ganz zu schweigen davon wie du das Programm in den
externen Memory bekommst. Da brauchst du so was wie
einen Bootloader (oder einen Flash-Eprombrenner !)
Wenn der Programmcode größer als 64kB wird ist es fraglich
ob SDCC so was noch hinbekommt.

@ Sigint
>ABER in C wirst du den Speicher nicht nutzen
>können.

Solange es sich nicht um Programmcode handelt geht
das auch in C recht einfach. Ich hatte mal nen 29F040
als Datenspeicher an einem AT89S8252. No Problem ;)

von Joe (Gast)


Lesenswert?

> Wenn der Programmcode größer als 64kB wird ist es fraglich
> ob SDCC so was noch hinbekommt.

Warum ? Ich sehe keinen Grund warum das mit dem SDCC nicht gehen sollte.

von David W. (welkin)


Lesenswert?

>erste Frage ist, ob es nicht besser wäre, gleich einen anderen µC aus
>der 8051 Familie einzusetzten. Es gibt welche mit reichlich internen
>Flash, sogar recht preiswert.

Ist mir schon klar, aber der At89s52 ist der einzige welchen ich unter 
Linux programmieren kann, da es einfach zu wenig tools gibt für Linux.

Von Atmel gibt es schon mcu`s mit 128k Flash aber die kann ich unter 
Linux nicht beschreiben. Ist halt wirklich ein Problem. Ich muss zuerst 
schauen ob es Brennprogramme für eine bestimmte MCU unter Linux gibt.

At89s52 sollte durch uisp beschreibbar sein (steht auf jeden fall auf 
der homepage).
http://www.nongnu.org/uisp/

8k sind natürlich wenig, aber das ist das grösste was ich unter Linux 
gefunden habe. Gut man könnte jetzt zu AVR wechseln, da gäbe es keine 
Probleme, für den mega128 gibts avrdude.


Welchen Speicherstein käme da in Frage?

von holger (Gast)


Lesenswert?

1.7 Wishes for the future
better code banking support for mcs51

von David W. (welkin)


Lesenswert?

>Wenns unbedingt der 89S52 bleiben muss, geht das natürlich auch mit
>externen Speicher. Es gehen Dir aber mind. 2 komplette Ports sowie
>einige zusätzliche Steuerleitungen verloren.

Wow, das wusste ich nicht. Gleich zwei komplette Ports für den 
Speicherchip opfer? Dann hab ich ja nur noch 2 übrige Ports. Das reicht 
nicht.
Ich muss noch 4 buttons, ein LCD Display, 2 Schrittmotoren Treiber an 
die MCU hängen, das passt nicht.

>Noch komlizierter wirds, wenn Du in den FLASH nicht nur Dein
>Programmcode ablegen willst, sondern auch noch den FLASH als
>Datenspeicher nutzen willst. Das würde nur mit einigen Aufwand gehen.

Also im 8k flash des 89s52 möchte ich den Programmcode speicher und im 
externen Speicher Koordinaten (einige Hundert)
Geht das?


>Wenn Deine Software einen 8051 kann, dann kann sie alle. 8051 sind
>softwaremäßig 100% kompatibel.

Das Problem ist ja nicht der Compiler, sondern die Software mit welcher 
ich die Hex datei auf den Chip bringen will. Davon gibts unter Linux 
nicht so viele wie bei Windows. Für den At89s52 gibts eben eine, darum 
will ich ihn benutzen.

von Peter D. (peda)


Lesenswert?

Karim Forsthofer wrote:

> Ist mir schon klar, aber der At89s52 ist der einzige welchen ich unter
> Linux programmieren kann, da es einfach zu wenig tools gibt für Linux.

Nö.

Flip (Atmel) gibts auch für Linux und damit kannst Du die Atmel 8051 mit 
Bootloader proggen.



Peter

von David W. (welkin)


Lesenswert?

>Flip (Atmel) gibts auch für Linux und damit kannst Du die Atmel 8051 mit
>Bootloader proggen.

Muss ich auf eine grössere MCU wechseln?



von Matthias (Gast)


Lesenswert?

>Also im 8k flash des 89s52 möchte ich den Programmcode speicher und im
>externen Speicher Koordinaten (einige Hundert)
>Geht das?

Das ist dann aber kein Programmcode, den Du in den externen Speicher 
ablegen willst(?) entgegen der urspünglichen Anfrage...

Dazu kannst Du vorzugsweise Speicher mit serieller Schnittstelle 
(SPI,I2C o.ä.) verwenden, Schnittstelle musst Du ggf. beim AT89S52 
emulieren. Alternativ wäre der Einsatz von FLASH-Karten ein Ansatz. 
Diese lassen sich relativ einfach vom µC ansprechen. Anleitungen und 
Software dazu findest Du hier im Forum regelmäßig.

Gruß
Matthias

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.