(AVR) Bestehendes ASM-Hex-File zu neuem C-Projekt hinzufügen

OP #1263055
Lesenswert?

Hallo,

Ich habe zurzeit folgendes Problem:

Für ein bestehendes Gerät, welches zurzeit noch eine Firmware nutzt, die 
rein in Assembler geschrieben wurde, entwickele ich eine neue Version 
der Firmware in C.

Da auch der Bootloader für ein automatisches Softwareupdate daher in 
Assembler geschrieben wurde, kann ich diesen nicht direkt in das 
C-Projekt einbinden, da es erstens zu lange dauern würde, den Code an 
die andere Assemblersyntax anzupassen und sämtliche Definitionen 
umzustellen usw.

Ich würde daher gerne ein Hexfile, welches nur den Bootloader enthält 
(circa 2 Kilobytes) direkt in das C-Projekt integrieren, damit ich 
während der Kompilierung direkt ein vollständiges Hexfile erhalte.

Meine Versuche die .obj-Datei des AVR-Assemblers aus AVR Studio dem 
AVR-GCC-Compiler mitzugeben scheiterten am unterschiedlichen 
Dateiformat. Da ich jetzt nur ungerne jedes Byte als Konstante in einer 
C-Quellcodedatei ablegen würde, frage ich mich, ob es hier nicht eine 
einfachere Möglichkeit gibt.

Wer weiß hier Rat? Momentan kopiere ich die Hexfiles separat zusammen 
und erhalte so mein gewünschtes Ergebnis, dies ist allerdings nicht 
gerade gut gelöst...

Viele Grüße,

Lars
Persönliche Seite #1263351
Lesenswert?

Lars R. schrieb:

> Meine Versuche die .obj-Datei des AVR-Assemblers aus AVR Studio dem
> AVR-GCC-Compiler mitzugeben scheiterten am unterschiedlichen
> Dateiformat. Da ich jetzt nur ungerne jedes Byte als Konstante in einer
> C-Quellcodedatei ablegen würde, frage ich mich, ob es hier nicht eine
> einfachere Möglichkeit gibt.
>
> Wer weiß hier Rat? Momentan kopiere ich die Hexfiles separat zusammen
> und erhalte so mein gewünschtes Ergebnis, dies ist allerdings nicht
> gerade gut gelöst...

IHEX ist der kleinste gemeinsame Nenner, da, wie du bereits gemerkt 
hast, AVR-Studio keine Dateien im ELF-Format erzeugt, die du zu deinem 
C-Projekt hinzulinken könntest.

Immerhin hast du ne funktionierende Lösung. Schöner wird's nicht.

Es sei denn, du portierst den Teil in Atmel-Assembler nach 
GNU-Assembler. Sollte nicht sooo schwer sein. Dann kannst du das 
assemblierte o-Object dazulinken wie compilierte+assemblierte o-Objekte 
aus C-Dateien auch.

Johann

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