mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR-Studio C+Assembler mischen


Autor: Christoph H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

im obigen ZIP-File habe ich ein Projekt mit den Beispielen hier aus dem 
MC-Forum zur Mischung zwischen C und Assembler erstellt.

Leider erhalte ich folgende Fehlermeldung:

../chGCCASM_test.c:13: undefined reference to `ultraFunc'
../chGCCASM_test.c:15: undefined reference to `gigaFunc'

Weis jemand, woran es liegen könnte?

Gruß,
Christoph

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lass das "extern" mal weg. Ein Funktionsprototyp in C braucht das nicht.

Oliver

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war es nicht.

In der test.S scheint soviel falsch zu sein, daß der Assembler es gar 
nicht mehr merkt. Da musst du wohl noch mal in die Grundlagen 
einsteigen.

Oliver

Autor: Christoph H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In der test.S scheint soviel falsch zu sein, daß der Assembler es gar
>nicht mehr merkt. Da musst du wohl noch mal in die Grundlagen
>einsteigen.

Das Beispiel habe ich direkt aus dem AVR-GCC-Tutorial kopiert:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
( siehe Unterpunkt Assembler )

Wenn ich also direkt "noch mal in die Grundlagen einsteigen muss", dann 
stimmt wohl direkt was nicht mit dem Tutorial.

Gruss,
Christoph

Autor: Christoph H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mittlerweile habe ich herausgefunden, dass es am falsch plazierten 
".end" statement lag. Dann funktioniert es.

Was Olivers Aussage betrifft, scheint es hier einige Verwirrung 
bezüglich der Assembler-Typen und deren Syntax zu geben.

Ich habe herausgefunden, dass der ATMEL Assembler im AVR-Studio nicht 
der selbe ist, der bei eine C-Projekt im AVR-Studio verwendet wird. 
Damit ändert sich wohl leider auch die Syntax.

Es gibt folgende Möglichkeiten:

1. ATMEL-Assembler Projekt
2. WIN-AVR mit GCC und GNU-Assembler ( oder auch GAS genannt )

Jetzt versuche ich gerade herauszubekommen, welchen Syntax der 
GNU-Assembler für Makros mit Parameterübergabe verwendet. Das 
funktioniert scheinbar anders als beim ATMEL-Assembler.

Christoph

Autor: Jan S. (jannemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich beschäftige mich erst seit kurzem mit AVR Controllern, vorher PIC 
und 8051.

Mir sind im AVR-Gcc Tutorial bei dem Einbinden von Assembler-Dateien 2 
Dinge unklar 
(http://www.mikrocontroller.net/articles/AVR-GCC-Tu...)

beide Fragen beziehen sich auf die Datei useful.S

1)warum kann hier auf die Register über eine einfache Zahl zugegriffen 
werden? (siehe workreg=16, workreg2=17, ...) udn nicht wie sonst in asm 
mit
.define workreg r16
 oder
equ workreg=$016

2) in der Funktion superfunc:
out  _SFR_IO_ADDR(DDRD), workreg
warum kann ich hier nicht direkt auf das DDRD zugreifen? In Assembler 
würde die zeile doch eigentlich so aussehen:
out  DDRD, r16

Ich habe schon nen bisschen rumgesucht, das ganze scheint nur so zu 
laufen, wenn man asm und c mischen will. Aber gute Literatur, die eine 
gute Beschreibung und erklärung liefert, hab ich leider noch nicht 
gefunden.

Falls die Entwicklungsumgebung relevant ist: Ich nutze AVR Studio 4.18

Danke im voraus!

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leichenschänder, der Thread ist mehr als 4 Jahre alt!

zu 1) keine Ahnung
zu 2) Hängt mit der Architektur der AVRs zusammen. Insbesondere z.B. das 
Register zum Teil über unterschiedliche Adressen angesprochen werden 
können.
Siehe: 
http://www.nongnu.org/avr-libc/user-manual/group__...

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.