Mit avr-objcopy ein ELF Production File erstellen

Persönliche Seite #3904024
Lesenswert?

Hi Leute!
Ich möchte folgendes erreichen:
Ein HEX File (Bootloader) und die Fuses zusammen in ein ELF File packen.

Da aber das Bootloader HEX File solche Späße hier enthält (vermutlich um 
ganze 14 Bytes Platz zu sparen):
1
...
2
:0601E000C9F7DB010895E0        // End of File Record
3
:1001F4000D947D010D94B2013ECF0FBF08952AE105 // Neuer Data Record
4
...

generiert folgender Aufruf:
1
avr-objcopy -I ihex -O elf32-avr $bootloader_hex $production_elf

eine ELF Datei mit folgendem Inhalt (avr-objdump):
1
Sections:
2
Idx Name          Size      VMA       LMA       File off  Algn
3
  0 .sec1         000001e6  00020000  00020000  00000034  2**0
4
                  CONTENTS, ALLOC, LOAD, DATA
5
  1 .sec2         000013ee  000201f4  000201f4  0000021a  2**0
6
                  CONTENTS, ALLOC, LOAD, DATA
7
  2 .sec3         00000014  00021fe0  00021fe0  00001608  2**0
8
                  CONTENTS, ALLOC, LOAD, DATA

Meine Frage wäre, mit welcher Option man das verhindern kann? Sprich, 
wie sage ich, dass er die komplette HEX Datei in eine Section packen 
soll?

Was teilweise funktioniert ist
1
avr-objcopy -I ihex -O elf32-avr --add-section .flashdata=$bootloader_hex $bootloader_hex $production_elf

Dann lädt er (neben den 3 .secX) die gesamte HEX Datei in die Section 
.flashdata.
1
Sections:
2
Idx Name          Size      VMA       LMA       File off  Algn
3
  0 .sec1         000001e6  00020000  00020000  00000034  2**0
4
                  CONTENTS, ALLOC, LOAD, DATA
5
  1 .sec2         000013ee  000201f4  000201f4  0000021a  2**0
6
                  CONTENTS, ALLOC, LOAD, DATA
7
  2 .sec3         00000014  00021fe0  00021fe0  00001608  2**0
8
                  CONTENTS, ALLOC, LOAD, DATA
9
  3 .flashdata    00003df0  00000000  00000000  0000161c  2**0
10
                  CONTENTS, READONLY

D.h. mir wäre geholfen, wenn ich den Pflichtparameter "in-file" für 
avr-objcopy irgendwie ignorieren lassen könnte und nur mit add-section 
arbeite.
1
Usage: avr-objcopy [option(s)] in-file [out-file]

EDIT: Ich sehe gerade, .text ist eigentlich für den Programmcode da. 
Egal, es geht ums Prinzip ;-)
Gast #3904325
Lesenswert?

* ELF-Files werden vom Linker (ld) aus Object-Files zusammengebaut.
* Object-Files sind ELF-Files.
* Das ihex-File war auch mal ein ELF.
* Die Fuse-Daten kann man bestimmt auch im ELF-Format erzeugen.
= man könnte versuchen, Bootloader und Fuse-Daten mittels ld zusammen zu 
bauen.
Persönliche Seite #3904467
Lesenswert?

Schaulus Tiger schrieb:
> * ELF-Files werden vom Linker (ld) aus Object-Files
> zusammengebaut.
> * Object-Files sind ELF-Files.
> * Das ihex-File war auch mal ein ELF.
> * Die Fuse-Daten kann man bestimmt auch im ELF-Format erzeugen.

Das ist mir alles durchaus bewusst. Jedoch kann ich nicht an das ELF der 
HEX Datei herankommen, da das Binary ein Bootloader von Atmel ist.

> = man könnte versuchen, Bootloader und Fuse-Daten mittels ld zusammen zu
> bauen.
Hmm, mit ld? Das könnte ich mal versuchen. Glaube das wird aber 
schwierig, wenn mir nur die HEX Datei zur Verfügung steht.
Gast #3904548
Lesenswert?

Eigentlich müsste es doch ganz einfach gehen, so ungefähr:
1
avr-objcopy -I ihex -O elf32-avr $bootloader_hex bootloader.o
2
avr-gcc -m... -o poduction.elf bootloader.o fuses.o
vielleicht erstmal ohne fuses.o
Beitrag #7769927 wurde von einem Moderator gelöscht.
Beitrag #7771961 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren