Habe mir einen Bootloader geschrieben, zum ersten mal. Leider funktioniert das Ganze noch nicht wie gewünscht. Daher einige Fragen: 1) Woher weiss AVR-Studio das es sich um einen Bootloader handelt, respektive, dass das Programm in entsprechenden Speicherbereich geschrieben werden muss? -- Ich habe jeweils bei jeder funktion angegeben, dass das ganze in die entsprechende Section geschrieben werden soll, gemäss meinem *.map File, sieht das ganze schon mal nicht böse aus, oder? 2) Ich habe jetzt die eigentliche Software die ich laufen lassen möcht, und den Bootloader. Die Software funktioniert alleine. Kann ich überhaupt via ISP erst den Bootloader, und dann ebenfalls via ISP die eigentliche Software laden?
Emanuel wrote: > 1) Woher weiss AVR-Studio das es sich um einen Bootloader handelt, > respektive, dass das Programm in entsprechenden Speicherbereich > geschrieben werden muss? Weil die Adressen für die binären Daten mit im Hex-File stehen. > -- Ich habe jeweils bei jeder funktion angegeben, dass das ganze in die > entsprechende Section geschrieben werden soll, gemäss meinem *.map File, > sieht das ganze schon mal nicht böse aus, oder? Gut aber auch nicht. ;-) Wenn du nur die Funktionen "verlegst", hast du immer noch Code im unteren Bereich, z.B. den kompletten Startup-Code (sieht man ja auch im Map-File). Steck die Funktionen nicht in eine separate Section, sondern verschiebe einfach das Text-Segment, dann hast du den kompletten Code im Bootbereich. > Kann ich überhaupt via ISP erst den Bootloader, und dann ebenfalls via > ISP die eigentliche Software laden? Ja.
wie verschiebe ich das Text segment? (ich könnte mir jetzt Vorstellen das sich die Frage saudumm anhört, aber gebe mir wahrscheinlich gerade mühe, den Wald vor lauter Bäumen nicht zu sehen...)
Emanuel wrote:
> wie verschiebe ich das Text segment?
Genau so, wie du auch deine eigene spezielle Section verschoben hast.
Sehe es nicht ganz...
mit den selections hab ich
>>-Wl,--section-start=.bootloader=0x1C00
bei den linker options eingegeben... funktonierte tiptop... wie ich das
so machen kann, dass komplet alles in den speicherbereich verschoben
wird ist mir nicht ganz klar...
supi funktioniert tiptop... hab leider schon ein weiteres Problemchen. Ich kann jetzt zwar von meinem Hauptprogramm in den Bootloader und zurück springen... aber beim booten startet er die normale Applikation, statt dem Bootloader. Gemäss datasheet sollt es jedoch reichen das BOOTRST zu setzten, damit er automatisch in den Bootloaderbereich springt... sehr ich was falsch? meine fuse bits müssten ja richtig sien (siehe anhang)
Die Adresse $1C00 ist eine Word-Adresse, der Linker möchte aber eine Byte-Adresse haben. Das heißt, dein Code liegt im Augenblick nicht im Bootbereich. Also mit 2 multiplizieren.
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.