Forum: Mikrocontroller und Digitale Elektronik MPLABX - Projekt auf mehrere ASM- Files verteilen, und diese einbinden.


von Michael R. (elektr-hobbyist)


Lesenswert?

Hallo alle zusammen,

folgendes möchte ich gerne wissen:

Wie kann ich am besten im MPLABX, den ASM- Code für ein Projekt, auf 
mehrere Files verteilen.
Im Ordner Projects -> "Source Files" einfach mehrere .asm- Dateien 
anlegen, und diese mit #include XY.asm einbinden?

Danke schon mal, für Eure Antworten.

L.G.

Micha

von Meister E. (edson)


Lesenswert?

Mit #include schonmal nicht. Das funktioniert zwar technisch, ist aber 
unnötig und auch kein guter Stil.

Leg die Dateien unter Projects>Source Files ganz normal an, mehr braucht 
es erstmal nicht. Wenn du Einsprungpunkte und/oder Variablen in mehreren 
Dateien benötigst, musst du dich mit den Keywords GLOBAL und EXTERN 
beschäftigen, einfach mal in die Hilfe-Datei von MPLABX schauen.

von Uwe (Gast)


Lesenswert?

Hi,
>#include XY.asm
also ich mache das so, allerdings für AVR. Ob das jetzt kein guter Stiel 
ist kann ich nicht sagen. Für mich wird es übersichtlicher und die 
Position lege ich fest, sonst keiner. Ob das nun bei MPLABX nicht 
sinnvoll ist kann ich nicht sagen, aber mehrere Versionen sind dann 
bestimmt schlecht.

viel Erfolg, Uwe

von Michael R. (elektr-hobbyist)


Lesenswert?

Meister Eder schrieb:
> Leg die Dateien unter Projects>Source Files ganz normal

Hallo,

als .asm oder.inc?
Lege ich sie als .asm an, bekomme ich beim build jede menge 
Fehlermeldingen,

"Executable code and data must be defined in an appropriate section"

Lege ich sie als .inc an, bleiben die Fehlermeldungen schon mal aus.
Mit der Verwendung von "extern" und "global", verschwanden auch die 
Fehlermeldungen, dass das Symbol xy nicht definiert sei.
Nun bleibt nur noch eine Fehlermeldung übrig:

"Error - could not find definition of symbol 'init_lcd' in file 
'build/default/production/DDS_Gen_V0.01.o'."

Hätte da jemand noch einen Rat?

L.G.

Micha

von Chris B. (dekatz)


Lesenswert?

Michael R. schrieb:
> Nun bleibt nur noch eine Fehlermeldung übrig:
>
> "Error - could not find definition of symbol 'init_lcd' in file
> 'build/default/production/DDS_Gen_V0.01.o'."
>
> Hätte da jemand noch einen Rat?

Fehlende EXTERN/GLOBAL Definition von 'init_lcd'.
Schreibweise bei allen 'init_lcd' - Anwendungen überprüfen.

von Chris B. (dekatz)


Lesenswert?

Wie "edson" schon geschrieben, baut man größere ASM-Projekte welche auf 
meherer .ASM Files verteilt sind ganz sicher NICHT mit "Includen" 
irgendwelcher der einzelnen  Sourcedateien auf.

Hier eine Anleitung dafür:

http://www.gooligum.com.au/tut_baseline.html

Kapitel 3: Writing modular code
So richtig los geht es ab Seite 16 mit einem einfachen Beispiel....

von Michael R. (elektr-hobbyist)


Lesenswert?

Hallo Chris,

vielen lieben Dank für den Link!
Da habe ich erst mal ein Bisschen was zu lesen. .-)

L.G.

Micha

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.