Gast
#661480
Hallo allerseits,
ich habe ein kleines Problem dabei, ein bestehendes Projekt (komplett in
C geschrieben) um einen in Assembler geschriebenen Bootloader zu
erweitern. Am Ende soll also ein hexfile herauskommen, das sowohl den
Bootloader als auch eine erste Version der Betriebssoftware enthaelt.
Ich habe es nach langem umherprobieren nun endlich hinbekommen, eine
C-Funktion in die Bootloader-section an 0x0c00 zu verschieben -
funktioniert soweit. Dies bringt mir jedoch noch dann etwas, wenn ich
aus dieser C-Funktion heraus eine ASM-Funktion inline aufrufen kann
(sonst liegt diese Funktion ja unter Umstaenden nicht im
Bootloaderbereich des Flashs). Leider scheitert es daran, denn die
Funktion wird immer ueber ein Rcall aufgerufen und liegt sonstwo.
Praktisch waere es nun, wenn ich die ganze Geschichte mit der die
ASM-Funktion aufrufenden C-Funktionbleiben lassen und dem GCC
stattdessen mitteilen koennte, dass er die nackte ASM-Funktion direkt an
die Startadresse des Bootloaders im Flash schreiben soll. An diesem
Punkt bin ich dann jedoch leider gescheitert, da ich "__attribute__
((naked, section (".bootloader")));" nicht in die .S einbauen kann. Die
.S schaut bisher so aus (dient vorerst nur dazu, den ganzen Compilerkram
ueberhaupt ans Laufen zu bekommen):
.global asmbl
.func asmbl
asmbl:
nop
nop
nop
.endfunc
Hat fuer dieses Problem irgendwer eine Loesung parat?
Vielen Dank und beste Gruesse,
André