Assembler Code in C einbinden

Gast #552499
Lesenswert?

Hallo,

ich versuche mit eigenem Programm anhand des GCC-Tutorials ein 
Assembler-File in ein C-Programm zu setzen. Dafür habe ich zu aller 
Anfang probieren wollen, das reine, funktionierende(wenn ich die 
Initialisierung zum Assemblieren wieder vornehme) Assembler 
Quellcode-File mit Endung groß S(Bild unten rechts) in mein C Projekt 
einzubauen. Code in C habe ich ansonsten gar keinen. Das Makefile ist 
entsprechend umgeschrieben. Den Fehlercode des Compilers ist unten im 
Bild zu lesen. Leider geht aus dem Tutorial für meinen Kenntnisstand 
nicht eindeutig hervor, wie das "Gesamtbild" meines Projekts auszusehen 
hat. Ich will eigentlich nur ein Assembler Programm in C compilieren, 
dessen Hex-File das gleiche macht wie mein Hex-File vom Assembler - 
nämlich eine LED zum Leuchten bringen, wenn ich eine Taste drücke.
Falls jemand einen sinnvollen Ratschlag hat, ich bitte darum
Vielen Dank, Matthias
Angehängte Dateien:
Gast #553100
Lesenswert?

Vielen Dank fürs reinschauen!
Das Makefile ist im Anhang und nach der WINAVR Vorlage entstanden.
Unten steht der Output.
Ich habe bereits kleine C-Programme anderer Programmierer compilieren 
und auf einem Mikrocontroller zum Laufen bringen können.
Es liegt nur der Verdacht nahe, das ich etwas grundsätzlich falsch mache 
beim Einbinden von Assembler Software - Headerfiles, Syntax oder 
ähnliches





COMPILER OUTPUT:



> "make.exe" all

-------- begin --------
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Size before:
AVR Memory Usage
----------------
Device: Unknown

Program:     152 bytes
(.text + .data + .bootloader)

Data:          0 bytes
(.data + .bss + .noinit)



make.exe: *** No rule to make target 
`assembler_in_C_implementieren_Test.o', needed by `blinkendes.elf'. 
Stop.

> Process Exit Code: 2
Angehängte Dateien:
Gast #553453
Lesenswert?

Es funktioniert jetzt alles. Ich habe ein neues Programm geschrieben in 
dem ich ausschließlich Assembler einbinde, einfach um den Fehler 
einzudämmen.

Aber es funktioniert nur, wenn ich keine Namen wie PORTB verwende, 
sondern den
den entsprechenden Port Namen 0x18. Mein Assembler Include-File wird 
also
nicht akzeptiert. Erst wenn ich

PORTB = 0x18
DDRB  = 0x17

in die Assembler Datei schreibe, ist wieder alles in Ordnung.

Gibt es einen Trick, dem Compiler das mitzuteilen? Wenn ja, wäre mir 
damit
dann vollends geholfen!
Gruß Matthias

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