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.
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
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
Danke Johnny. Werd mich dann mal einlesen. Ich hab ja jetzt die Zeit (is gut wenn sowas beruflich is :-))
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...
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.
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
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.
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.