Forum: Mikrocontroller und Digitale Elektronik MPLABX XC16 Start Assembler Programmierung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Hallo.

Habe viele Jahre mit Atmel Tiny, Mega und XMega in Assembler rum 
gemacht. Jetzt ist mir ein PIC24FJ64GB002 in die Hände gekommen und 
wollte mal mit MPLABX 5.40 ausprobieren, wie man einen PIC in Assembler 
programmieren kann.
Ich habe zusätzlich zu dem MPLABX den XC16 Compiler und auch den zum 
PIC24FJ64GB002 passenden Pack "PIC24F-GA-GB-DFP 1.7.214" installiert. 
Habe auch bei Microchip gelesen das ASM30 für diesen Typ nicht verwendet 
wird, sondern der Assembler innerhalb des XC16 verwendet werden muss.
Auf dem Bild im Anhang ist ein kleines Testprojekt zu sehen, welches ich 
so erstellt habe:
1. "Standalone Project" ausgewählt
2. 16bit PIC24 ausgewählt
3. PIC24FJ64GB002 ausgewählt
4. Tool Simulator ausgewählt
5. neues Assemblerfile unter "Source Files" angelegt

Das nötigste für den Assemblercode eingegeben und versucht das 
Assemblerprogramm zu erstellen. Dann kommt aber folgender Error:
"Keine Regel vorhanden, um das Ziel 
„build/default/debug/newAsmTemplate.o“ usw."

Weil ich keine Lösung finde, möchte ich hier mal anfragen, was habe ich 
denn falsch gemacht? Ich habe doch ein neues Projekt erstellt, habe ein 
Quellenfile als ASM angelegt und habe auch benötigten Assembler Code 
eingegeben. Warum ist MPLABX dann nicht in der Lage daraus das HEX-File 
zu erstellen? Was fehlt denn noch?

Danke für eure Hilfe.
Tom

von Franko P. (sgssn)


Lesenswert?

Hallo
schau mal, ob du das Beispiel aus dem Forum übersetzen kannst:

https://www.microchip.com/forums/tm.aspx?m=361820&mpage=1&key=&#361899

Gerhard

von Tom (Gast)


Lesenswert?

Franko P. schrieb:
> schau mal, ob du das Beispiel aus dem Forum übersetzen kannst:

Danke für deinen Tipp. Habe das Ganze kopiert und in das ASM File 
eingefügt. Allerdings noch immer der gleiche Error:

"make[2]: *** Keine Regel vorhanden, um das Ziel 
„build/default/debug/newAsmTemplate.o“,
  benötigt von „dist/default/debug/Test16Bit.X.debug.elf“, zu erstellen. 
Schluss.
make[1]: *** [nbproject/Makefile-default.mk:91: .build-conf] Fehler 2
make: *** [nbproject/Makefile-impl.mk:39: .build-impl] Fehler 2
"

Laut Microchip soll es ausreichend sein, den XC16 Compiler beim 
Erstellen eines neuen Projektes auszuwählen und ein Assemblerfile zu 
erstellen. Der MPLABX soll dann automatisch an der Extension des 
File-namens erkennen, das es sich auch um ein Assemblerfile und nicht 
C-File handelt und dementsprechend den Textinhalt innerhalb dieses Files 
auch als Assemblercode umsetzen. Funktioniert aber leider nicht so. Das 
die Fehlermeldung besagt, das verschiedene Files wie z.B. das File mit 
der Extension .o  und .elf noch fehlen habe ich soweit schon mal 
erkennen können. Aber werden diese denn beim Assembler überhaupt 
benötigt? Und wenn ja, kann MPLABX diese auch selber erstellen, oder 
muss ich diese noch per Hand erstellen und wenn ja wie und wohin?

Tom

von Franko P. (sgssn)


Lesenswert?

Dann bleibt vieelciht noch die Frage im Microchip-Forum zu stellen. 
Grundlegende Fragen und probleme bei 16-Bittern scheinen da öfter 
aufzukommen.

von Tom (Gast)


Lesenswert?

Franko P. schrieb:
> Dann bleibt vieelciht noch die Frage im Microchip-Forum zu stellen.

Danke für deinen weiteren Tipp. Da du ja vorhin schon einen Link zu 
diesem Forum gegeben hattest, habe ich auch schon mal darin nach 
Antworten gesucht. Aber wie immer ist es bei Microchip die Suche der 
Nadel im Heuhaufen... und sehr erschwerend sich durch die niemals 
endenden Verweise auf weitere Datasheets durchzukämpfen.

Habe nun auch schon das XC16 Compiler Datenblatt und das Datenblatt zum 
XC16 Assembler runter geladen und schon mal ein paar Stellen gelesen. 
Soviel ich darin verstanden habe kann man kein reines Assembler Projekt 
erzeugen, sondern muss ein C-Projekt starten und darin dann den 
Assemblercode einbetten. Das Ganze sieht im Vergleich zu dem Atmel 
Studio doch sehr viel komplizierter aus...

Mal sehen, ein bisschen werde ich noch versuchen mich da durchzukämpfen. 
Ansonsten hat sich die Geschichte mit den PICs halt erledigt, was auch 
kein Problem ist...

Gruß Tom

von Ron T. (rontem)


Lesenswert?

Tom schrieb:
> Soviel ich darin verstanden habe kann man kein reines Assembler Projekt
> erzeugen, sondern muss ein C-Projekt starten und darin dann den
> Assemblercode einbetten.

Das darf doch wohl nicht wahr sein!
Ich habe umgekehrt mal versucht, mit dem 6er MPLABX ein Asm-Programm für 
AVR zu erstellen. Das läuft prima wenn man weiß, wie Programm und ggf. 
inkludierte Dateien ins Projekt einzubinden sind.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Ron T. schrieb:
> Ich habe umgekehrt mal versucht, mit dem 6er MPLABX ein Asm-Programm für
> AVR zu erstellen.

Wie du im beigefügten Bild sehen kannst, habe auch ich bereits versucht 
einen ATmega8 mit MPLABX in Assembler zu programmieren und wie du im 
Bild auch sehen kannst, ist das auch bei mir Erfolgreich verlaufen! 
"BUILD SUCCESSFUL"
Auch hier habe ich nur ein neues Projekt im MPLABX gestartet und ein 
Assembler File anlegen müssen. Das war alles und hat super funktioniert 
wie du sehen kannst! Nur bei dem PIC selbst funktioniert es halt nicht 
so einfach.

Ron T. schrieb:
> Das läuft prima wenn man weiß, wie Programm und ggf.
> inkludierte Dateien ins Projekt einzubinden sind.

Wenn du dich mit Assemblerprogrammierung mit XC16 auskennst, dann teile 
mir doch bitte mit, wie man die benötigten Dateien und vor allem welche 
Dateien man in ein Assembler Projekt für einen 16-Bit PIC einbinden 
muss, um einfach mal mit einfachen Assembler Instruktionen anfangen zu 
können.
Das würde mir dann schon sehr viel weiter helfen.

Danke und Gruß Tom

von Ron T. (rontem)


Lesenswert?

Tom schrieb:
> Das würde mir dann schon sehr viel weiter helfen.

Sorry, mit PIC fang ich selber gar nicht erst an. Dennoch halte ich

Tom schrieb:
> Soviel ich darin verstanden habe kann man kein reines Assembler Projekt
> erzeugen, sondern muss ein C-Projekt starten und darin dann den
> Assemblercode einbetten.

für Nonsens.

von neuer PIC Freund (Gast)


Lesenswert?

Als "newAsmTemplate.s" läuft dein Code bei mir fehlerfrei durch. 
Möglicherweise mag er .asm für AVR und .s für PIC24.

von Ron T. (rontem)


Lesenswert?

Der Trick bei inkludierten Dateien war bei AVR-Projekten in MPLAB-X, 
diese zwar ins Projekt aufzunehmen aber sie in den File-Properties des 
Programms von "Configurations" zu excluden. Bei AVR-Studio wie auch 
MPLAB-X sind ja manchmal völlig unplausibel die unmöglichsten 
Fehlermeldungen zu beobachten wenn einzelne Details nicht stimmen.

: Bearbeitet durch User
von neuer PIC Freund (Gast)


Lesenswert?

XC16_Asm_Link_Users_Guide.pdf:

Kapitel 1.4.1:
Microchip Technology strongly suggests an .s extension for assembly
source files. This will enable you to easily use the C compiler driver 
without having to specify the option to tell the driver that the file 
should be treated as an assembly file.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

neuer PIC Freund schrieb im Beitrag #7080815:
> Möglicherweise mag er .asm für AVR und .s für PIC24.

Manchmal zeigt sich das Ganze sehr problematisch und liegt letztendlich 
doch nur an einem Fitzelchen... GENAU DAS WARS!

Ich habe jetzt ein neues File im Projekt mit der Extension .s erzeugt 
und wie man im Bild sehen kann, beinhaltet dieses sogar schon Beispiele 
von benötigten Assembler Befehlen für den PIC24. Wie auch im Bild zu 
sehen ist, steht jetzt auch hier kein Error mehr, sondern "BUILD 
SUCCESSFUL". So jetzt kann ich Dank der Hilfe auch mal 
Assemblerprogrammierung am PIC ausprobieren. Genug Datenblätter über die 
PIC Assemblerbefehle usw. habe ich ja bereits... Da kann ich mich jetzt 
Stück für Stück mal einarbeiten und sehen, was so ein PIC alles kann.

Danke euch für eure Hilfe.
Gruß Tom

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.