Problem mit externem Assembler-code in winAvr

Gast #178283
Lesenswert?
• ▲
▼
Hallo, Danke erstmal für Hilfe...
Ich habe folgendes Problem: Ich möchte ein programm schreiben, das bei
einem 8515 über die Uart zeichen empfängt und auf ein display HD 4478
ausgibt. Die Routine für das display ist in Assembler und funktioniert
für sich wunderbar. Die Routine für die Uart ist in C geschrieben und
funktioniert auch. Nun wollte ich die Displayroutine als externe Datei
in meinen C-code einbinden. Das Problem ist, dass ich es nun nicht mehr
Compiliert bekomme und mit der Fehlermeldung nuchts anfangen kann:
> "make.exe" all

Assembling: LcdInit.S
avr-gcc -c -mmcu=at90s8515 -I. -x assembler-with-cpp
-Wa,-adhlns=LcdInit.lst,-gstabs  LcdInit.S -o LcdInit.o
LcdInit.S: Assembler messages:
LcdInit.S:13: Warning: expression possibly out of 8-bit range

LcdInit.S:13: Error: garbage at end of line // mit dieser meldung kann
ich nichts anfangen!!!???!!!

LcdInit.S:14: Error: number must be less than 64
LcdInit.S:15: Warning: expression possibly out of 8-bit range
LcdInit.S:15: Error: garbage at end of line
LcdInit.S:16: Error: number must be less than 64
LcdInit.S:78: Error: number must be less than 32
LcdInit.S:82: Error: number must be less than 32
LcdInit.S:87: Warning: expression possibly out of 8-bit range
LcdInit.S:87: Error: junk at end of line, first unrecognized character
is `4'
LcdInit.S:94: Warning: expression possibly out of 8-bit range
LcdInit.S:94: Error: junk at end of line, first unrecognized character
is `2'
LcdInit.S:95: Warning: expression possibly out of 8-bit range
LcdInit.S:95: Error: unknown opcode `c9'
make.exe: *** [LcdInit.o] Error 1

> Process Exit Code: 2
Da ich ein ziemlicher Newbie bin ist mein fehler wohl recht doof, aber
ich weiss gerade nicht weiter.
Gibt es evtl. in C Geschriebene Routinen für das Display?
vielen Dank, Richard
Angehängte Dateien:
Gast #178285
Lesenswert?
• ▲
▼
Die ganze Assemblerdatei sieht mir suspekt aus.  Da werden auch
anderswo Konstanten mit $ geschrieben, das ist ganz offensichtlich
wohl kein GNU-Assembler (gas) Code.

Ich würde das Teil in C neu schreiben bzw. auf eine der zahlreich
vorhandenen C-Implementierungen zurückgreifen.  Nicht, daß eine
Einbindung von Assemblerdateien in C-Projekte nicht machbar wäre, aber
sie bringt in diesem Falle keinen einzigen Vorteil, im Gegenteil, der
Aufwand, das auf den gas zu konvertieren (wobei man ja zugleich auch
die teilweise x-fach geschachtelten Makrokonstruktionen verstehen muß)
rechtfertig meiner Meinung nach die Mühe kaum.

<ctoasm.inc> und <macros.inc> sind übrigens kein offiziell
exportiertes Interface der avr-libc.  Wenn Du diese Dateien
,,irgendwoher'' erhalten hast, riskierst Du mithin, daß Deine
Versionen veraltet sind und gar nicht mehr zur aktuellen avr-libc
passen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.