Forum: Mikrocontroller und Digitale Elektronik Programm kopieren von AT90S4433 nach ATmega8


von Sebastian (Gast)


Lesenswert?

Guten Morgen.

Hänge seit 3 Tagen an einem Problem fest.
Ich wollte mit dem STK500 ein Programm von einem AT90S4433 auf einen
ATmega8 kopieren. Auslesen klappt wunderbar, schreiben auch. Nur läuft
die Schaltung (Uhr des Düsseldorfer Fernsehturms) mit dem ATmega8
nicht. Ich habe meiner Meinung nach alles übernommen (Fuses, Lockbits,
Flash, EEPROM). Vielleicht kann mir ja jemand helfen.

Danke im Voraus an alle.

von johnny.m (Gast)


Lesenswert?

Du hast die Uhr des Düsseldorfer Fernsehturms abgeschossen? Schäm
Dich:-)

Spaß beiseite, ob die direkte Code-Portierung von AT90S4433 nach Mega8
überhaupt funktioniert, weiß ich nicht, es gibt aber von ATMEL eine
AppNote, die vielleicht Hinweise enthält (AVR081):

http://www.atmel.com/dyn/resources/prod_documents/doc2515.pdf

Hoffe, dass Dir das hilft. Hab jetzt nur keine Zeit, mir das selber
durchzulesen.

Ich tippe aber auf Unterschiede in der Speicherverwaltung.

Gruß

Johnny

von Markus Wentker (Gast)


Lesenswert?

Hi!

Das einfache "rüberkopieren" wird nicht funktionieren.
Du wirst den Quellcode schon neu kompilieren müssen, da z.B. schon das
EEPROM nicht dieselbe Größe hat und beim Mega8 über 2 Register
angesprochen wird (4433: 1 Register).
Zum anderen - was noch viel "schlimmer" ist - ist die
Interruptvektor-Tabelle anders.
(Findet sich alles im Datenblatt-Link meines Vorredners.)

Gruß
Markus

von Sebastian (Gast)


Lesenswert?

Danke Johnny.
Werd mich dann mal einlesen. Ich hab ja jetzt die Zeit (is gut wenn
sowas beruflich is :-))

von Rahul (Gast)


Lesenswert?

Wenn du keinen C-Quellcode für das Programm hast, wird es anstrengend...
Bei vorhandenem Assembler-Quellcode könnte es mit ein paar Änderungen
gehen, sofern das Programm gut kommentiert ist.
Wenn du nur das Hex-File, also die Daten aus dem 4433, hast, dann wird
es richtig anstrengend...
Wenn das Programm in einer Hochsprache wie C vorliegt, kümmert sich
überwiegend der Compiler um die Portierung, und spuckt beim Compilieren
ein paar Fehlermeldungen aus...

von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

hm...
Assemblercode is da. Auch gut kommentiert. Ich hab den mal angehängt.
Leider bin ich nich wirklich Programmierbegabt. Könnte also was dauern
bis ich das alles selber RICHTIG geändert hab. Gibts denn sonst noch ne
Methode hex-Code in C-Code umzuwandeln. Suche sowas noch für ein anderes
Projekt zu dem einfach nix existiert.
Danke schonmal für die Tips.

von johnny.m (Gast)


Lesenswert?

Hex- oder Assembler-Code in C-Code ist beinahe unmöglich. C ist eine
strukturierte Programmiersprache, Assembler nicht. Aber das
Assembler-File in diesem Fall sieht ganz gut aus. Du müsstest
'lediglich' die entsprechenden Bezeichnungen ändern (z.B. GIMSK heißt
beim Mega8 GICR, MCUSR heißt MCUCSR...), die Interrupt-Sprungtabelle
ändern, die Initialisierung des Stack Pointers erweitern,...

Wenn Du die Application Note durcharbeitest, sollte das recht fix
gehen. Und wenn Du dafür bezahlt wirst, um so besser:-)

Bei dem anderen Projekt wirds natürlich schwieriger.

Gruß

Johnny

von Sebastian (Gast)


Lesenswert?

Sehr gut.
Vielen vielen dank an euch.
Werd dann jetzt mal loslegen. Hab die passenden stellen auch bereits
entdeckt.
Dann kann ich das andere Projekt wohl abblasen. Dabei handelt es sich
nämlich um einen AT90S2333 der is laut Datenblatt baugleich zum 4433.
Und für hex-code "überstezten" ist meine Bezahlung auf jeden Fall
nich gut genug ;-)

Danke nochmal.

von johnny.m (Gast)


Lesenswert?

In Assembler kannste es glaub ich konvertieren (Müsste eigentlich mit
AVRStudio gehen, sicher weiß ich es aber nicht). Nur hättest Du dann
keine Kommentare und keine Registernamen (was allerdings eher besser
ist, weil Du da dann z.T. nix ändern musst). Ist aber schon ein Stück
Arbeit.

Gruß

Johnny

von Rahul (Gast)


Lesenswert?

Das nennt sich dann "disassemblieren"...

von Sebastian (Gast)


Lesenswert?

Zu disassemblern befrage ich dann mal google, bzw. hab ich bereits. Gibt
einige Programme mal sehen was die taugen. Habt mir auf jedenfall
geholfen. Mal sehen ob dann noch eine Chance für Projekt 2 besteht.
THX

von Rahul (Gast)


Lesenswert?

Wenn du dir das Programm (hex-file) im AVRStudio anguckst, wird es dir
disassembliert.
Naja, so würde ich es zumindest nennen...
http://de.wikipedia.org/wiki/Disassembler
Man kann den Assemblercode betrachten. Schöne wäre dann natürlich, wenn
der Disassembler dann auch gleich noch die Registernamen anzeigen würde.

von Sebastian (Gast)


Lesenswert?

also ich hab jetzt drei Tools ausprobiert und keins arbeitet so wie ichs
gern hätte.
Registernamen wären natürlich überaus praktisch. Aber das scheint es
nich zu geben.
Werd mich einfach mal weiter damit auseinander setzten. Jetzt hab ich
erstmal Feierabend :-)
Und wenn es nich klappt... auch egal. Bedeutet nur weniger arbeit für
mich :-)
Euch noch nen schönen Tag.

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.