Forum: Compiler & IDEs (AVR) Bestehendes ASM-Hex-File zu neuem C-Projekt hinzufügen


von Lars R. (larsr)


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

von Johann L. (gjlayde) Benutzerseite


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

von Jörg G. (joergderxte)


Lesenswert?

Google findet diesen Thread 
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=33291
  so wird das Hexfile zumindest automatisch gebaut (falls das bei dir 
noch nicht der Fall ist)

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.