Forum: Mikrocontroller und Digitale Elektronik 8051 Code mit AVR ausführen


von Peter X. (vielfrass)


Lesenswert?

Ich habe so überlegt und sehe da grundsätzlich zwei Möglichkeiten:

1. Einen 8051-Emulator zu schreiben der zur Laufzeit den 8051-Hex-Code 
interpretiert.(oder aus dem www runterladen, bestimmt hat das schon mal 
jemand gemacht?)

2. Eine Macrobibliothek zu schreiben, die die einzelnen 
8051-Assembler-Befehle in AVR-Assembler nachbildet.

Was haltet ihr davon? Ist das dämlich?

von Benedikt K. (benedikt)


Lesenswert?

Es dürfte teilweise schwer werden, vor allem vom Timing her. Bei den 
meisten Befehlen ist der AVR schneller, aber spätestens beim div a,b, 
ist der AVR eine Weile beschäftigt.

von Detlev T. (detlevt)


Lesenswert?

Vor allem ist die Hardware auch anders. Oder hast du ein Programm für 
einen µC, das keinerlei Hardware-Zugriffe hat? schwer zu glauben.

von Peter X. (vielfrass)


Lesenswert?

Natürlich bin ich mir bewusst, das sich das Timing und die Hardware von 
8051 und AVR wesentlich unterscheiden. Es währe nur eine hübsche Sache, 
einige Teile vom 8051-Assembler-Code für den AVR weiterverwenden zu 
können.
Vieleicht gibt's da eine fertige Lösung, man muss das Rad nicht immer 
neu erfinden wollen...

von Peter D. (peda)


Lesenswert?

Peter X. wrote:
> Es währe nur eine hübsche Sache,
> einige Teile vom 8051-Assembler-Code für den AVR weiterverwenden zu
> können.

Wenn Du das mit einem Programm automatisch machen lassen willst, 
explodiert die Codegröße und es wird schnarchlahm.

Besser Du machst das händisch, nur so erreichst Du eine ähnliche 
Performance.

Am besten aber, Du schreibst Deine 8051-Programme gleich in C, dann muß 
man nur die Hardwarezugriffe anpassen.
Genau darum ist ja C in der MC-Programmierung so weit verbreitet.


Peter

von MC (Gast)


Lesenswert?

>Es währe nur eine hübsche Sache,
>einige Teile vom 8051-Assembler-Code für den AVR weiterverwenden zu
>können.

Dann nimm doch direkt nen 8051er. Die gibts auch schon sehr günstig mit 
single-cycle core. Rein rechnerisch sind sie somit gleichschnell wie die 
AVRs.

von Patrick W. (seennoob)


Lesenswert?

besitzen eigentlich AVR's schon pipelinning ? Meines wissens hat das der 
8051er noch nicht. Außerdem du musst es schaffen einen Hardware acces 
Software Interpreter programmieren usw.
Also ich würd einfach einen modernen 8051er nehmen.

MFG Patrick

von Michael N. (neumi)


Lesenswert?

> besitzen eigentlich AVR's schon pipelinning ?
AVRs haben schon eine Phasenpipeline wenn man so will, allerdings ist 
die "nur" 2-stufig. Ich glaub die erste Stufe ist so eine Art "fetch & 
decode" und die zweite dann das eigentliche "execute". Irgendwo hab ich 
sogar mal gelesen, dass die AVRs dafür beide Taktflanken ausnützen, ich 
weiß allerdings nicht ob das stimmt.

>Meines wissens hat das der 8051er noch nicht.
Der "8051er" ist immer ein wenig relativ zu sehen, da es diese 
Architektur schon eine kleine Ewigkeit gibt. Der originale 8051er-Kern 
benötigt 12 Takte für einen Befehl. Es gibt mittlerweile allerdings eine 
Vielzahl von Derivaten von allen möglichen Herstellern, die wesentlich 
schneller sind (1-4 Takte pro Befehl). Ob es auch schon 8051er mit 
pipelining gibt weiß ich persönlich nicht, denkbar wäre es schon.

von Ralf (Gast)


Lesenswert?

Der C8051F120 von Silicon Labs (www.silabs.com) kann das glaub ich. Es 
gibt noch weitere C8051F-Typen, die es auch können, der F120 ist mir 
halt grad eingefallen.
Kann aber auch sein, dass ich unter Pipelining was anderes verstehe als 
ihr, deswegen einfach Datenblatt lesen :)

Ralf

von Ralph (Gast)


Lesenswert?

Und das ist der Grund warum man C nutzen sollte wenn Assembler nciht 
absolut notwendig ist.
In C reichen dann ein paar Anpassungen(zb Portdefines, Interupthandler) 
und ein neuer Compilerlauf.
Die Logic kann dann wiederverwendet werden.
In Asembler, viel spass beim neu Programmieren.

von MC (Gast)


Lesenswert?

Am besten ist es immer, wenn man sich auf eine µC-Familie einspielt. 
Dann gibt es auch in Assembler keine Probleme. Denn ein µC Wechsel macht 
auch in C schwieriegkeiten, da man sich in eine komplett neue Hardware 
mit neuer Peripherie einarbeiten muss

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.