Forum: Compiler & IDEs Assembler Code in C einbinden


von Matthias (Gast)


Angehängte Dateien:

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

von Walter (Gast)


Lesenswert?

du solltest mal den makefile posten,
dann kann man vielleicht was dazu sagen ...

von Walter (Gast)


Lesenswert?

und wenn du schon dabei bist auch den ganzen output beim make

von Matthias (Gast)


Angehängte Dateien:

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> No rule to make target `assembler_in_C_implementieren_Test.o'

Es gibt keine Datei mit dem Namen assembler_in_C_implementieren_Test.S.
Dein Bild ganz oben zeigt auch nur eine namens
assembler_in_C_implementieren.S.

Auf Groß-/Kleinschreibung achten!

von Matthias (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?


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.