Hallo Gemeinde! Ich brauche mal wieder Hilfe. Ich fertige ein Update nach dem anderen für meine Anwendung und die soll auf 12 verschiedenen Megas laufen. Nur 2 davon haben einen Programmieradapter in Reichweite. Da eine SD-Karte angeschlossen ist lag es nahe an den Bootloader von Stefan zu denken. Ich kompiliere den Bootloader und spiele das .hex-file auf. Danach lese ich testweise aus und erhalte ein hex-file was ca. so aussieht: ... 1077B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 :1077C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 :1077D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 :1077E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 :1077F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 :107800000C942A3C0C94473C0C94473C0C94473C09 :107810000C94473C0C94473C0C94473C0C94473CDC :107820000C94473C0C94473C0C94473C0C94473CCC ... Für mich heisst das, das die Anwendung wie gewollt ab 0x7800 in den Mega geschrieben wurde. Fuses im Anhang. Leider macht er nichts. Ich habe Testweise mal gleich zu Beginn der main einen Pin high gesetzt. Er kommt nicht einmal da an. Hat jemand eine Idee, wo der Fehler liegen könnte? Ich danke Euch!
Ich habe nun einmal testweise eine funktionierende Anwendung ab 0 geschrieben. Die wird nicht gestartet. Der Mega sucht also im Bootsektor wie er soll. Der Bootloader ab 0 geschrieben startet (natürlich ohne bootrst) auch nicht. Das Problem scheint also das Kompilat des Bootloaders zu sein. Hier habe ich nur die empfohlenen Dinge im Makefile geändert: MCU = atmega32 F_CPU = 4000000 FORMAT = ihex DEVID = 0x12345678 TARGET = bootloader BOOTLOADERSTARTADR = 0x7800 (bzw. derzeit testweise 0x0000) BOOTLDRSIZE = 0x800 und dann mit make all kompiliert (keine Warnings,Errors oÄ). Das hex-file habe ich dann aus AVR Studio gebrannt. (USBProg mit AVRISP mk II clone). Was kann da falsch gelaufen sein?
Ok, ich bin jetzt weiter. Der Bootloader startet. Nun habe ich ein neues Problem. Mein Programm das aus AVR Studio kompiliert 22k braucht benötigt nun wenn ich das hex mit hex2bin bearbeite über 30k und passt darum nicht mehr. Gibt es ein brauchbareres Tool dafür oder muss ich von Hand aus kompilieren. Ein Makefile für mein doch recht umfassendes Projekt zu erstellen scheint mir sehr aufwändig...
Die Hellseher haben alle unbegrenzten Urlaub genommen. So in den nächsten 10 Jahren kommt der erste wieder.
Ah, ok. Danke, cool. Man braucht also nen Hellseher um zu erfahren ob jemand ein Tool kennt das aus hex-files .bins in anständiger Größe macht. Oder hast Du einfach nur die ersten paar Zeilen gelesen und Dir gedacht: "mann, da muss ich jetzt aber unbedingt austeilen. ich fühl mich heute wieder so klein"?
>Oder hast Du einfach nur die ersten paar Zeilen gelesen und Dir >gedacht: "mann, da muss ich jetzt aber unbedingt austeilen. ich fühl >mich heute wieder so klein"? Nein. Möglicherweise benutzt du sogar mein hex2bin ;) Ich hab jetzt aber keinen Bock mehr dir zu antworten.
Kann ich verstehen ;)
Ich habs mal mit Deinem Probiert. Kann mir jemand die Differenz der angegebenen Bytes zu der Dateigröße erklären? Grüße!
Wer lesen kann ist klar im Vorteil: Fillbytes. Hmm... sollte ich die aus dem Hex einfach entfernen?
HeGr wrote: > Mein Programm das aus AVR Studio kompiliert 22k braucht > benötigt nun wenn ich das hex mit hex2bin bearbeite über 30k und passt > darum nicht mehr. Da hilft kein Tool, zu groß bleibt zu groß. Vermutlich hast Du den Bootloader mit reingemanscht. Der Bootloader darf nie in die Applikation mit rein !!! Entweder verweigert er dann das Programmieren oder er zerstört sich selber. Peter
@ HeGr >Wer lesen kann ist klar im Vorteil: Fillbytes. Hmm... sollte ich die aus >dem Hex einfach entfernen? Nein das geht nicht. Die Bin Datei muß so groß sein (30720 Bytes). Ich frag mich nur was bei dir da jetzt nicht passt? Die höchste eingelesene Adresse ist 0x77FF und passt damit bis aufs Byte genau vor den Bootloader.
Ich suche den Fehler noch ein bisschen. Ich habe halt einfach mal eine Funktion geschrieben die 5 mal einen Pin toggled und ne LED angeschlossen. Den Aufruf habe ich vor den return bei checkfilesize geschrieben. Die Led blinkt also und es passiert weiter nichts. Ich habe das Hex (kompiliert mit dem wie in dem howto manipulierten Makefile) mal selbst aufgespielt und leider einige Probleme. Die Anwendung läuft zwar aber nicht wie gewohnt. Worans da hapert weiss ich absolut nicht aber auf einmal wird nur noch die Hälfte dargestellt oder bestimmte Funktionsaufrufe führen auf einmal zum Reset. Ich wünschte, es gäbe einen deutlich simpleren Bootloader. Alles was mit der Manipulation des Hauptprogramms zu tun hat ist für mich nämlich völlig unnötig. Ich bräuchte was, was überprüft ob es eine Datei bestimmten Namens auf der SD-Karte gibt und diese dann einspielt. Existiert die Datei nicht, startet er an 0x0000. Versioning etc. sind für mich gar nicht wirklich wichtig... Leider bin ich zu unbedarft um das selbst zu realisieren. Ich melde mich wenn ich auf der fehlersuche weiterkomme. Danke!
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.