Danke für den Hinweis mit dem Linker. Hat mich auf den richtigen weg gebracht.
Ich habe nun mittes __attribute__ ((section (".bootloader"))) eine neue section eingeführt die ich anschliessend mittels der Option -Wl,--section-start=.bootloader=0x1C00 beim linken an die entsprechende Stelle platziere.
Nun habe ich aber dennoch folgendes Problem. Der Eigentliche Code ist zwar an der gewünschen stelle, nur wird auch ein code erzeugt der (habe den flash mittels pony prog ausgelesen) an 0x0000 gespielt wird.
Ich erzeuge ein srec file das folgendermaßen aussieht
Der dazugehörige quellcode meines kleinen Programms sieht so ausCode:S0130000626F6F746C6F61646572432E73726563A3 S11300000C942A000C9445000C9445000C94450073 S11300100C9445000C9445000C9445000C94450048 S11300200C9445000C9445000C9445000C94450038 S11300300C9445000C9445000C9445000C94450028 S11300400C9445000C9445000C9445000C94450018 S11300500C94450011241FBECFE5D4E0DEBFCDBF14 S113006010E0A0E6B0E0EEE8F0E002C005900D92EA S1130070A036B107D9F710E0A0E6B0E001C01D92A8 S1110080A036B107E1F70C94000E0C940000BA So hier beginnt das eigentliche Programm S1131C00CFE5D4E0DEBFCDBFF8948FEF80933400EE S10B1C108FEA80933500FFCF39 S9030000FC
Also nur Leds einschalgten und dann nix mehr tun. Meine frage ist, was ist der code der an den Anfang geschrieben wird? Ist das die Interrupt vector tabelle??Code:#include <avr/io.h> #include <avr/boot.h> int main(void) __attribute__ ((section (".bootloader"))); int main(void) { __asm("cli;"); DDRC = 0xFF; PORTC = 0xaf; while(1) { } }
Eine weitere frage ist, ob ich wenn ich nur __attribute__ ((section (".bootloader"))); schreibe die foglenden Anweisungen automatisch in die bootsection gespielt werden?
PS: Bin a ein Wiener







Zitieren

Lesezeichen