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

OP #1263055
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.