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?
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.
Vor allem ist die Hardware auch anders. Oder hast du ein Programm für einen µC, das keinerlei Hardware-Zugriffe hat? schwer zu glauben.
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...
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
>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.
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
> 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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.