mikrocontroller.net

Forum: Compiler & IDEs WinAVR: Assemblercode in C einbinden


Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,
ich habe eine Anwendung bei der ich versuche einen Assemblercode in
einen C-Code ein zu binden, aber irgendwie habe ich meine
Schwierigkeiten damit!!

Kann mir vielleicht mal jemand relativ schnell erklären, wie dies
funktioniert??

Danke schon mal!!

Gruß
Benjamin

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

Bewertung
0 lesenswert
nicht lesenswert
Kannst du uns mal deinen Stand und deine Schwierigkeiten
erläutern?

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe mir den Code von dem Cristian Kranz aus der Codesammlung,
zur Ansteuerung des Siemens S65 Displays herunter geladen. In der
Software wird auf ASM code zugegriffen. Aber ich bekomme
Fehlermeldungen!! ich habe mal einen Screenshot gemacht. Vielleicht
kann mir ja jemand weiterhelfen!?

Gruß
Benjamin

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

Bewertung
0 lesenswert
nicht lesenswert
hier mal das bild!!

;o) .........

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Protoyp fuer die Funktion
lcd_init()
wurde vom Compiler nicht gesehen.

Das kann mehrere Ursachen haben. Mach mal
die includes so:

  #include "eigene\disp.h"
  #include "eigene\lcd.h"

< wird bei includes verwendet um anzuzeigen, dass die gesuchte
  Header-Datei irgendwo im compiler-systemspezifischen Teil zu
  suchen ist

" wird bei includes verwendet um anzuzeigen, dass es sich um eine
  benutzerdefinierte Header-Datei handelt.

Wenn's dann noch immer nocht geht, dann ueberpreuf mal, ob
die Header-Dateie tatsaechlich dort liegen wo sie
sollen. Alternativ kannst Du auch den vollstaendigen
Pfad zu den Include dateien angeben (ist aber nicht so gut,
sowas sollte man nur zu Testzwecken machen).


Und nein: Das ganze hat ueberhaupt nichts mit Assembler zu tun.
Da geht es rein um Dateien, auf welchen Pfaden sie liegen, ob
die Pfadeinstellungen des Compilers richtig sind und wie man
den AUfsuchpfad der Dateien im C-Source Code spezifiziert.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
undefined reference
bedeutet einfach nur, dass der Compiler ein 'Wort' im
Quelltext entdeckt hat, dass syntaktisch eine Variable
oder ein Funktionsaufruf sein kann, aber weder eine Variable
noch eine Funktion dieses Namens wurde definiert. Also
ein Name, auf den sich der Compiler keinen Reim machen kann.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist, Heut ist nicht mein Tag:

Wer da meckert ist nicht der Compiler, sondern der Linker.

Ich vermute mal, dass zur lcd.h auch eine lcd.c gehoert.
Nimm sie mit in das Projekt auf und alles ist gut.

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

Bewertung
0 lesenswert
nicht lesenswert
Nein, undefined reference heißt, dass der Linker das nicht
gefunden hat.  Offenbar wird also die entsprechende Objektdatei
mit der Definition der genannten Funktion gar nicht erst
gelinkt.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlanzeige, da gibt es kein lcd.c

Allerdings gibt es ein lcd.asm
Du musst die Datei umbenennen in  lcd.s
in dann ganz einfach als neues Source File in
das Projekt mit aufnehmen.

Habs grade probiert: Funktioniert

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure netten Tipps. Die Datei um zu benennen hat den Erfolg
gebracht. Aber jetzt hängt sich der Simulator beim Aufruf der Routine
lcd_init(); auf. Ich verstehe das aber nicht. Denn irgendwie sagt der
Compiler doch das alles stimmt und der ASM läuft doch auch bei
anderen!?

Wenn jemand das selbe Problem hat, bitte melden. Vielleicht gibt es ja
auch schon eine Lösung!!

Gruß

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.