mikrocontroller.net

Forum: Compiler & IDEs Assembler Code in C einbinden


Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du solltest mal den makefile posten,
dann kann man vielleicht was dazu sagen ...

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wenn du schon dabei bist auch den ganzen output beim make

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.