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/
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
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
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
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 ;)
> 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.
>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?
1.7 Wishes for the future better code banking support for mcs51
>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.
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
>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?
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.