Forum: Mikrocontroller und Digitale Elektronik Kann assembler file nicht builden


von Laurin (wildatheart)


Angehängte Dateien:

Lesenswert?

Hallo alle

Ich möchte gerne das angehängte File zu einem HEX-File builden. Doch ich 
bekomme Errors.
Ich verwende die neuste Version der MPLAB X IDE. Ich verwende den 
pic-as(v2.5) compiler
Danke für Inputs!

von H. H. (hhinz)


Lesenswert?

Da fehlt die Floating Point Library "FP.TXT".

von Laurin (wildatheart)


Lesenswert?

Nach der hatte ich schon gesucht, kann sie aber nirgends finden im web..

von Laurin (wildatheart)


Lesenswert?

Ich habe das File inzwischen gefunden. Wie muss ich die TXT-Datei in die 
Library integrieren? Wohl nicht als Textdatei, oder?

von Rbx (rcx)


Lesenswert?

Laurin schrieb:
> Ich habe das File inzwischen gefunden.

Ja und sonst noch? wäre ja schon spannend hier.

von Laurin (wildatheart)


Lesenswert?

Wie gesagt habe ich das File FP.TXT gefunden. Ich kenne mich aber noch 
nicht wirklich mit MPLAB IDE aus. Deshalb weiss ich nicht, wie ich 
diesen Text zu einer Library für mein assembler file machen kann.

von Laurin (wildatheart)


Lesenswert?

Ich sehe ja in Zeile 1261:
1
INCLUDE <FP.TXT>

Doch egal, ob ich FP.TXT in Source Files oder in Header Files lege, 
kommen die Errors trotzdem

von H. H. (hhinz)


Lesenswert?

Zeig die Library.

von Laurin (wildatheart)


Angehängte Dateien:

Lesenswert?

Im Anhang findet ihr die library

von Cyblord -. (cyblord)


Lesenswert?

Warum hat ne library eine .TXT Endung?

von H. H. (hhinz)


Angehängte Dateien:

Lesenswert?

Einfach ins selbe Verzeichnis wie deinen Quellcode packen, dann lässt 
sich das problemlos assemblieren.
Ich hab das Hexfile mal angehängt.

Cyblord -. schrieb:
> Warum hat ne library eine .TXT Endung?

Das darf die haben. Die dürfte sogar .CYBLORD heißen, aber das will ja 
niemand.

: Bearbeitet durch User
von Laurin (wildatheart)


Angehängte Dateien:

Lesenswert?

Hab ich gemacht, aber bei mir siehts immer noch so aus:

von H. H. (hhinz)


Lesenswert?

Zeig mal den Anfang des Output-Fensters.

von Laurin (wildatheart)


Angehängte Dateien:

Lesenswert?

Hier den Anfang des Output-Fensters

von Cyblord -. (cyblord)


Lesenswert?

H. H. schrieb:
>> Warum hat ne library eine .TXT Endung?
>
> Das darf die haben.

Nur war das nicht die Frage.

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Laurin schrieb:

> Hier den Anfang des Output-Fensters

Dann würde ich mal vorschlagen, mit der Behebung des allerersten Fehlers 
zu beginnen. Da passt doch etwas ganz grundsätzlich nicht. Gut möglich, 
dass all die anderen Fehler nur Folgefehler sind.

von H. H. (hhinz)


Lesenswert?

Ich kenne die aktuelle MPLAB X zu wenig, verwende noch die schon 12 
Jahre alte MPLAB 8.84, und damit läuft das problemlos.

Haben die einen ganz neuen Assembler mit anderer Syntax eingebaut?

von N. M. (mani)


Lesenswert?

In deinem ersten Bild wird der Assembler mit -mcpu=PIC16F628A, 
vermutlich von deiner Projekt Definition, aufgerufen.
Im .asm-File in Zeile 176 wird der processor auf 16f628 definiert.
Angeblich beißt sich das.

Ich würde einfach mal Zeile 176 auskommentieren und schauen was dann 
passiert :-)

Edit: Und ggf die richtige .inc Datei includen falls sich der A und der 
nicht A unterscheiden.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Cyblord -. schrieb:
> Nur war das nicht die Frage.

Es ist gar keine Library, aber seit der Arduinoisierung können das viele 
nicht mehr differenzieren. Weil es ja den einen kleinen Ausnahmefall 
gibt, daß in C++ tatsächlich Code in einer Headerdatei (*.h) 
untergebracht sein kann, deswegen muss man die bislang klare 
Differenzierung zwischen Sourcedatei, Headerdatei, Objektdatei und 
Library in die Tonne treten.
Hilft ja auch total bei der Fehlersuche, so etwas.

Früher (tm) hätte diese Datei *.inc geheißen.

von H. H. (hhinz)


Lesenswert?

Harald K. schrieb:
> Es ist gar keine Library, aber seit der Arduinoisierung können das viele
> nicht mehr differenzieren.

Die gabs schon als Arduino noch in weiter Ferne lag, und sowas wurde 
auch damals schon Library genannt.


;  RCS Header $Id: fp24.a16 2.7 1996/10/07 13:50:29 F.J.Testa Exp $
;  $Revision: 2.7 $
;       PIC16 24 BIT FLOATING POINT LIBRARY

von Harald K. (kirnbichler)


Lesenswert?

H. H. schrieb:
> und sowas wurde
> auch damals schon Library genannt.

Dann nennen wir doch fortan einfach alles Library. Das macht das Leben 
viel einfacher, und so Nitpickeligkeiten wie das, was ein Linker macht, 
die sind für die KI da, damit muss man sich nicht mehr beschäftigen.

von H. H. (hhinz)


Lesenswert?

Depp.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Harald K. schrieb:

> Weil es ja den einen kleinen Ausnahmefall
> gibt, daß in C++ tatsächlich Code in einer Headerdatei (*.h)
> untergebracht sein kann, deswegen muss man die bislang klare
> Differenzierung zwischen Sourcedatei, Headerdatei, Objektdatei und
> Library in die Tonne treten.

Das ist doch Unsinn. Auch in C kann man "Code" in Headerdateien 
schreiben (bei allem, bei dem man inlining forcieren möchte, muss man 
das sogar). Und in Asm natürlich sowieso.

Wenn schon rummeckern, dann am C-Konzept. Denn das hätte hergeben 
müssen, das in Headern kein Code sein kann und kein Code sein muss. Das 
hat C nicht leisten können, weil es halt nur ein wahnwitzig 
aufgeplusterter Macro-Assembler ist. Und naja: C++ hat's dann von C 
geerbt...

> Früher (tm) hätte diese Datei *.inc geheißen.

Nö. Die hätte einfach *.asm geheißen. Weil: da wird tatsächlich Code 
erzeugt. Das entspricht einer *.c-Datei (du scheinst ja sowieso nix 
anderes zu kennen, deswegen diese Erläuterung für dich).

Das Äquivalent zu einer *.h-Datei im C/C++-Umfeld nennt man im 
Asm-Umfeld dann allerdings tatsächlich bevorzugt *.inc. Das macht klar, 
dass hier eben kein Code erzeugt werden soll. Code-Konstrukte sollten in 
solchen Dateien  nur als Macros auftauchen, was Funktionen mit force 
inline in C entspricht.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Ob S. schrieb:

Alles richtig, aber wohl unwichtig für das konkrete Problem des TO.

Da kommt es darauf an, was diese IDE tut und was der verwendete 
Assembler tut.

Ich kenne beide nicht, aber im Prinzip gibt es zwei Varianten:

1) Der Kram wird in ein linkbares Zwischenformat übersetzt und am Ende 
gelinkt. Dann müsste in der Ausgabe zwei Aufrufe für den Assembler 
sichtbar sein und ein Aufruf für den Linker. Sieht allerdings nicht 
danach aus, als wenn es so wäre.

2) Das ist noch ein old-school-Assembler. Dann muß der Quelltext der 
"Lib" an irgendeiner Stelle im Quelltext des Hauptteils includiert 
werden. Dabei kommt es wieder darauf an, ob das ein OnePass- oder ein 
Mehrpass-Assembler ist. Bei OnePass muß die Include-Direktive zwingend 
vor dem Teil des Quelltextes stehen, der Code erzeugt (zumindest vor dem 
ersten Aufruf einer Subroutine aus dem includierten Code). Bei Mehrpass 
ist es egal, ob davor oder dahinter. Der Assembler dröselt die 
Referenzen in einem späteren Pass alleine passend auf.

von H. H. (hhinz)


Lesenswert?

Ob S. schrieb:
> ein Aufruf für den Linker.

So weit kommt es beim TE ja gar nicht, bei meiner älteren IDE schon. Ich 
hab der aber auch erzählt, dass es um einen PIC16F628 geht, nicht 
PIC16F628A. Allerdings gäbe es da bei der älteren Version nur eine 
Warnung, nicht einen Abbruch.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

H. H. schrieb:
> Ob S. schrieb:
>> ein Aufruf für den Linker.
>
> So weit kommt es beim TE ja gar nicht, bei meiner älteren IDE schon. Ich
> hab der aber auch erzählt, dass es um einen PIC16F628 geht, nicht
> PIC16F628A. Allerdings gäbe es da bei der älteren Version nur eine
> Warnung, nicht einen Abbruch.

Das spricht dann eindeutig dafür, dass der verwendete Assembler keine 
linkbaren Code erzeugt. Der TO sagt:

> pic-as(v2.5) compiler

Was'n das? Gehört das zur IDE? Ist die darauf vorbereitet? Ist das 
überhaupt ein Assembler?

Fragen über Fragen...

von H. H. (hhinz)


Lesenswert?

Ob S. schrieb:
> Der TO sagt:
>
>> pic-as(v2.5)

Assembler


>> compiler

Der TE kennt den Unterschied wohl nicht.

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.