Hallo, ich weiss nicht mehr weiter. Ich habe einen Bootloader geschrieben der von einer SD Karte (Danke an Stefan Seegel für die mmc_lib.h) ein intel hex file auf den ATMega schreibt. Das funktioniert soweit auch. Mein Problem ist nun: Wenn ich den Bootloader mit avrdude flashe, und dann den Strom wegnehme und wieder anschalte, schreibt der Bootloader das File von der Karte in den Flash, startet den auch, der hängt dann aber irgendwie. Wenn ich nun den gleichen Code manuell mit avrdude flashe dann läuft der tiptop. Den Dump vom Flash (0000 - 3k, so gross ist das Programm) ist beide Male identisch, ob vom Bootloader oder manuell. Der Bootloader wird in beiden Fällen durchlaufen und endet mit einem void (*app_start)(void) = 0x0000; Den einzigen Unterschied den ich sehe ist, dass nach dem Bootloaderflashen nach dem Code alles mit FF aufgefüllt ist, beim manuellen flashen der avrdude nur bis zum Ende des Codes dumpt. Gruss Nik
Niklaus S. schrieb: > Wenn ich den Bootloader mit avrdude flashe, und dann den Strom wegnehme > und wieder anschalte, schreibt der Bootloader das File von der Karte in > den Flash, startet den auch, der hängt dann aber irgendwie. > Wenn ich nun den gleichen Code manuell mit avrdude flashe dann läuft der > tiptop. wenn ich das richtig verstehe: Nach dem Reset Flash't der Bootloader jedesmal das File von der Karte (wenn vorhanden)!? dann teste doch mal folgendes: Flashen von Karte, dann Strom weg, Karte raus und wieder starten ... das währen doch dann die selben Bedingungen wie nach dem flashen mit avrdude da der Inhalt des Flash's ja offenbar identisch ist sollte es eigentlich laufen > Den einzigen Unterschied den ich sehe ist, dass nach dem > Bootloaderflashen nach dem Code alles mit FF aufgefüllt ist, FF sollte bis mindestens zur nächsten Page zu finden sein > beim > manuellen flashen der avrdude nur bis zum Ende des Codes dumpt. beim zurücklesen sollt er doch bis zum Flashende auslesen - oder nicht Sascha
Hast du die Interrupt Vectoren in den Bootloader verlegt und nicht wieder zurück? Die Interruptquellen deaktiviert bevor du in die Applikation springst?
Hallo Sascha, 1. Der Bootloader Vergleicht das File, uns sucht sich einen SysID Tag mit Version, nur wenn die verschieden sind wird geflash't. (Das bracht ca. 1. sec.) 2. Habe ich natürlich auch schon probiert. - Karte raus - Bootloader flashen - dump - Karte rein - dump komplettes Prog. mit folgenden FF hängt aber irgendwie - Strom hin - Strom weg hängt immer noch - Prog flashen läuft - dump (diesmal ohne FF nach dem Prog - könnte am avrdude liegen aber myAVR ProdTool mach das auch so) - dumps verglichen - sind identisch und immer noch das grosse ? Danke
>- dump komplettes Prog. mit folgenden FF > hängt aber irgendwie Wer macht den dump? Avrdude oder dein Programm? Vorschlag: Dein Programm (nicht den Bootloader) flashen mit Avrdude. Dann das geflashte Programm mit Avrdude in eine HEX-Datei auslesen und sichern. Bootloader flashen. Programm von Karte mit Bootloader flashen. Stecker raus, Karte raus. Stecker rein und das geflashte Programm mit Avrdude in eine HEX-Datei auslesen und sichern. Die beiden HEX Dateien stellst du dann mal hier rein.
Hallo Holger, und die anderen .. Habe den Fehler gerade gefunden: Wenn ich das Prog mit avrdude flashe dann finded zuerst ein erase cycle statt, der dann den Bootloader löscht. Wenn kein Bootloader da ist, ist der ATmega so intelligent es bei 0000 zu probieren. Da der Bootloader in den 2k so knapp ist habe ich alle Blinker abgestellt. Das erklärt auch die Dumps: wenn nichts mehr kommt wird abgeschnitten. Mit myAVR ProgTool und avrdude. Das nächste Problem wäre dann rauszufinden warum der mmc_init blockiert wenn ich den 2* aufrufe. Da werde ich dann aber selber weitersuchen müssen. Danke allen. Sollte das mal fertig sein, werde ich dann den Bootloader hier reinstellen. Ist im Prinzip der gleiche wie der von Holger, aber er arbeitet mit unveränderten Intel.hex files, und vergleicht einen SysID-Version String im Code. Den kann man dann einfach via ftp auf das MyEthernet oder den AVR-Net-IO hochladen und gut is. Noch einen schönen Abend. Nik
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.