Forum: Compiler & IDEs AVR32 objcopy bin file immer 8MB


von Jens A. (micro)


Lesenswert?

Hallo,

wenn ich einige meiner AVR32 Projekte baue ist meißt das bin file immer 
8MB groß.
Obwohl der Code ledeglich ein paar kB hat.
Warum ist das so. Ich benötige nämlich die bin files für mein
Bootloader. Das verhält sich gabz komisch.

Wenn ich mein Projekt frisch aus dem CVS raushole ist das Bin file immer
8MB nach dem Build. Dann habe ich mal ein Pointer variable 0xC0000000
auf 0 gestellt und dann war das bin file ok. Danach habe ich die 
variable wieder auf die alte Adresse zurückgesetz dann war das bin file 
aber auch noch ok.
Irgendwie hängt das von der Mondphase ab.
Kennt jemand das Problem?

von Jens A. (micro)


Lesenswert?

Achso,

ich nutze die Gnu Toolchain. 2.4.2. AVR Framework 1.6.1.

von Εrnst B. (ernst)


Lesenswert?

für die binutils wird der eeprom-speicher mit in den normalen Adressraum 
gemappt, (z.B. bei 8MB).
beim objcopy musst du diesem mitteilen, dass du nur die "flash" section 
haben willst, bzw die eeprom-section auslassen willst,
1
-R .eeprom

beim Erzeugen des bin-files fürs eeprom genau anders herum, nur die 
eeprom-section wählen, und on-the-fly die startadresse wieder auf 0 
setzen:
1
-j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0

Machen aber die üblichen Makefiles alles selber...

von Jens A. (micro)


Lesenswert?

@Ernst

Nein funktioniert nicht. Ich stehe da echt vor einem riesen Problem.
Z.b

__attribute__((__section__(".userpage")))
volatile static timer timer0;

Sofort wenn ich obiges mache ist mein Binary file egal in welchem 
Projekt exakt 8.388.620 Bytes groß. Somit kann ich es für einen 
Bootloader nicht gebrauchen. Ich verstehe aber nicht warum und wieso.
Das kann doch nicht sein oder?

von Jens A. (micro)


Lesenswert?

Ok,

jetzt habe ich es endlich so gehts

avr32-objcopy test.hex test.bin -R .userpage

Beim AVR32 ist nämlich das .eeprom die .userpage.
Deswegen kommen auch beim compilieren sogar beim Atmel example
sgmentation failed.

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
Noch kein Account? Hier anmelden.