Hallo liebe Gemeinde, ich habe einen Bootloader in C geschrieben mit der Anfangsadresse 0xF000 (Word). Flashen tue ich das ganze mit dem Sercon2-Mini und AT-Prog. Nach dem Flashen zeigt er mir beim Vergleich der Daten an Position 0x7000 2 Fehler an und weitere so ziemlich am Ende des Bootloaders. So ab 0x7600. Das HEX-File scheint in Ordnung zu sein, das habe ich mit einem IHEX-Editor angeguckt und die Adressierung geht bei 0x1E000 (Byte) los. Was 0xF000 (Word) entspricht. Ich versteh nicht wie er auf die Adresse 0x7000 kommt. Hatte jemand von euch schon ähnliche Erfahrungen? Ich habe das HEX-File angehängt falls jemand die Möglichkeit hat es eventuell zu testen. Danke erstmal =) Gruß, Alex
Peter Danegger hat mal hier im Forum einen sehr genialen Bootloader veröffentlicht; evtl. poste Ihn mal an, er weiss bestimmt eine Antwort...
Vermutlich hast Du ein Problem mit RAMPZ, da der M128 ja mehr als 64kB adressieren muß. Schau mal ins Assemblerlisting, ob es überhaupt gesetzt wird. Ein Hex-File nützt da nichts. Peter
Nabend, das Problem ist, dass ich nicht mal den Bootloader per SPI flashen kann. Habe eine Datei mit 128kByte generiert. Die Fehler beim wieder auslesen waren einmal das erste Wort 0x000 und weitere folgten von 0x7FA0 bis 0x7FFF. Danach ist der Zähler von AT-Prog wieder auf 0x000 gegangen. Ich vermute einen Hardwaredefekt des Mikrocontrollers. Bzw sein RAMPZ Bit. Das Merkwürdige ist, wenn ich die Firmware drauflade mit ca 28kByte, dann ist diese i.O. Werde morgen eine andere Leiterplatte ausprobieren. Ich bedanke mich für die Antworten und wünsche noch ne gute Nacht. Alex
Alex D. wrote: > das Problem ist, dass ich nicht mal den Bootloader per SPI flashen kann. Dann ist was faul mit Deinem Programmer. Ich benutze das STK500 und hatte noch nie Probleme. > Merkwürdige ist, wenn ich die Firmware drauflade mit ca 28kByte, dann > ist diese i.O. Dann ist der M128 o.k. Von nem halb kaputten Flash habe ich noch nie was gehört. Peter
Hallo, wäre bei dem ATmega128 denkbar, wenn das RAMPZ-Bit defekt ist. Habe ausgerechnet, dass der Bootloader beim flashen in den 0x7000 bereich kommt, wenn das RAMPZ-Bit beim flashen nicht auf 1 schaltet. Naja, genug der Theorie. Werde morgen einen anderen ATmega128 testen und über das Ergebnis berichten.
Nabend, ich habe heute eine andere Leiterplatte mit einem anderen ATmega128 ausprobiert, aber der selbe Effekt ist aufgetretten. Vermute, dass die Programmiersoftware mit dem RAMPZ Bit nicht klar kommt. Habe mir die Seite 304 von der Atmega128 Doku angesehen wo die einzelnen Befehle für die SPI-Programmierung aufgelistet sind. Mir ist bisher schleierhaft mit welchem Befehl das RAMPZ-Bit geändert wird. Weiß, ob es eine andere Software wie AT-Prog gibt, die den Sercon2-Mini unterstützt? :( Gruß, Alex
Das RAMPZ ist nur nötig für den SPM-Befehl, also für den Bootloader. Mit dem SPI-Programmer hat das nichts zu tun. Vielleicht ist ein Bug in Deiner Programmiersoftware und die wertet den Segmentrecord nicht aus. Das Intel-Hexformat kann ja direkt nur bis 64kB adressieren, deshalb muß mit einem Segmentrecord (02 oder 04) auf die nächste 64kB-Seite umgeschaltet werden Peter
Nabend, also es scheint tatsächlich ein Bug zu sein. Habe meinen Programmier-Adapter umgebaut um ihn mit PonyProg nutzen zu können. Bei dem Sercon2-Mini muß nur eine Brücke umverlegt werden. Den Bootloader rauf geladen und verifiziert. Ist alles i.O. Gruß, Alex
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.