Hallo, ich habe mir für den PIC24HJ128GP504 einen Bootloader, basierend auf der AppNote 1094 von Microchip, gestrickt. Um den Bootloader an die richtige Stelle im Speicher des µCs zu bekommen habe ich im Linker-Skript-File folgendes stehen: <schnip> MEMORY { data (a!xr) : ORIGIN = 0x800, LENGTH = 0x2000 reset : ORIGIN = 0x0, LENGTH = 0x4 ivt : ORIGIN = 0x4, LENGTH = 0xFC aivt : ORIGIN = 0x104, LENGTH = 0xFC program (xr) : ORIGIN = 0x600, LENGTH = 0x15200 </schnipp> <schnipp> __CODE_BASE = 0x600; </schnipp> <schnipp> .text __CODE_BASE : { *(.init); *(.user_init); *(.handle); *(.libc) *(.libm) *(.libdsp); /* keep together in this order */ *(.lib*); } >program </schnipp> Nun steht da aber auch: /* ** User Code and Library Code ** ** This section must not be assigned to __CODE_BASE, ** because CodeGuard(tm) sections may be located there. ** ** Note that input sections *(.text) are not mapped here. ** The best-fit allocator locates them, so that .text ** may flow around PSV sections as needed. */ Wenn ich das richtig verstehe, wird meine Lösung funktionieren solange ich keinen CodeGuard verwende. Wie müsste ich das denn machen das das "korrekt" gelöst wäre? Nächste Frage: Ich würde gerne den Bootloader zusammen mit dem eigentlichen "Nutzprogramm" in einem Projekt unterbringen, so dass ich nachher mit einem Programmiervorgang sowohl Bootloader als auch Nutzprogramm mit dem ICT in den Controller bekomme. Wenn dann später eine neue Version des Nutzprogrammes fertig ist, soll sie mittels des Bootloaders aufprogrammiert werden können. Wie mache ich das? Ich muss ja irgendwie im Linker-Skript-File angeben können wo das Nutzprogramm hinsoll.
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.