Forum: Compiler & IDEs MPLAB-X und ATSAM


von Rudolph R. (rudolph)


Lesenswert?

Die neueste MPLAB-X Beta 5.10 "unterstützt" jetzt auch einige ATSAM 
Devices.
Also habe ich das Ding mal spasseshalber installiert um es 
auszuprobieren.

Komplett frisch installiert ohne Compiler hat das Paket mal eben 3,8 GB 
auf der Platte.
Nach der Installation des XC32 Compilers sind das 8,2 GB.

Mein AS7 hat mit AVR8 und ARM Compilern gerade mal 2,4 GB.


Edit, weniger Rant und Klarstellungen zum GCC:
"Beim Einrichten eines ATSAMC21E18 Projektes fällt als erstes mal auf, 
es muss der XC32 Compiler dafür installiert werden."

Das stimmt nicht ganz, richtiger ist, der GCC wird von der MPLAB-X 
Version noch nicht für den ATSAMC21E18 erkannt den ich testen will.
Für einige andere Devices aber schon, man wird den XC32 Compiler wohl 
doch hoffentlich nicht benutzen müssen.


Das nächste was mir auffällt ist, es wird überhaupt noch kein Debugger 
unterstützt, zumindest ist ausser dem Simulator nichts auswählbar.
Der ATMEL-ICE ist immerhin schon mal gelistet.
Der SNAP wird zwar von Windows erkannt, ist aber in MPLAB-X aus 
irgendeinem Grund nicht nutzbar, auch nicht in MPLAB IPE um damit 
irgendwelche PICs zu flashen.
Oh, jetzt wird es noch besser, ich habe mal meinen Atmel-ICE angeklemmt.
Beim ersten Mal dachte ich noch an Zufall, aber sobald der Atmel-ICE am 
USB erkann wird beendet sich MPLAB-X hier und lässt sich erst wieder 
starten wenn der wieder abgeklemmt ist.
Gibt auch keine Fehlermeldung, das Fenster geht einfach nicht auf.
MPLAB IPE das gleiche Spiel.
Starten, Fenster auf dem Schirm, Atmel-ICE anklemmen, MPLAB IPE ist weg.


Okay, also Debuggen oder Flashen geht noch nicht, aber Compilieren 
sollte ja drin sein.
Das frisch erzeugte leere Projekt enthält nur keinerlei .c Datei.


Rechtsklick auf "Source Files" -> New -> other
"C" Auswählen -> "C Main File"

Das Ergebnis ist:
1
#include <stdio.h>
2
#include <stdlib.h>
3
4
/*
5
 * 
6
 */
7
int main(int argc, char** argv) {
8
9
    return (EXIT_SUCCESS);
10
}

Im Ernst jetzt?
Das compiliert sogar, 2706 Bytes FLASH und 1108 Bytes SRAM.
Hmm? Kein Stack?
Wo ist der Startup-Code?
Das Projekt ist weiterhin leer, es gibt keine davon abhängigen Dateien, 
oder es werden zumindest keine angezeigt.

Wo sind die Optionen? File/Project Properties

XC32 Options -> xc32-ld -> Minimum stack size (bytes) ist leer, wenn ich 
da 4096 eintrage braucht das Programm nach dem Compilieren immer noch 
"nur" 1108 Bytes SRAM.

Wo stellt man ein, wo das Programm liegt damit man einen Bootloader 
benutzen kann?


Okay, mal was anderes.
1
#include <stdio.h>
2
#include <stdlib.h>
3
4
int main(int argc, char** argv)
5
{
6
    REG_PORT_DIRSET0 = PORT_PA27;
7
    
8
    while(1)
9
    {
10
        
11
    }
12
}

Das compiliert nur leider nicht, weil da #include "sam.h" fehlt.
Pack man das dazu geht es, wie soll das jemand raten der die Dinger 
nicht kennt?

Sample-Code gibt es auch noch keinen.

Importieren eines AS7 Projektes schlägt letztlich auch fehl, das 
compiliert dann nicht.


Das überzeugt mich bis hierhin noch nicht so richtig.
Auch das Netbeans nicht, da ist mir Visual Studio lieber.

: Bearbeitet durch User
von soso... (Gast)


Lesenswert?

Rudolph R. schrieb:
> XC32 Options -> xc32-ld -> Minimum stack size (bytes) ist leer, wenn ich
> da 4096 eintrage braucht das Programm nach dem Compilieren immer noch
> "nur" 1108 Bytes SRAM.

Das dürfte daran liegen, dass die Anzeige den dafür benötigten SRAM vom 
Maximalen RAM abzieht.
Und daher dürfte einfach dein Device um die 4kByte "kleiner" geworden 
sein. Mit dem Heap ist das auch so, soweit ich mich erinnere.
MPLABX zeigt (meines Wisssens nach) nur den Verbrauch des verfügbaren 
Rams an, Stack und Heap scheinen nicht dazuzuzählen.

Prüf das doch mal nach.

Was den Startupcode angeht:
Soweit mir bekannt, klatscht den der XC32 einfach direkt einen 
Defaultcode rein. Wenn du den anpassen willst, musst du das in den 
Projekteinstellungen angeben, da gibs ein "use alternative Startupcode" 
oder so (wo genau, weiß ich jetzt auch nicht, sorry). Da kann man, 
soweit ich weiß, einen eigenen angeben.
Zumindest ist das bei PIC32 so. Und wenns der gleiche Compiler ist, 
wirds hier wohl auch so sein.
Bin immer damit klargekommen, weil die Defaults bei PIC32 recht sinnvoll 
sind.

Wichtig wäre noch:
Das ist Microchip.

Man verwendet deren Software erst, wenn es aus dem Beta-Support 
entwachsen ist.

Microchip-Nomenklatur:
- Alpha : Konzept exisitiert im Kopf des Marketing-Leiters
- Beta : Das was mit Müh und Not läuft (Bei normalen Herstellern:Alpha)
- Serie : eine frühe Beta
mehr wirds nicht.
https://www.microchip.com/mplabx-ide-release-notes

Schau beim Devicesupport in den Release-Notes nach.
Findest du hier:
Solange dein Device nicht "grün" ist: Finger weg - das ist nur Ärger.

MPLABX ist nicht jedermanns Sache, das ist mal sicher ;-)

von Rudolph R. (rudolph)


Lesenswert?

Vor zwei Tagen wurde MPLAB® X IDE v5.15 veröffentlicht.

Der GCC wird jetzt erkannt für ein frisch erstelltest ATSAMC21E18A 
Projekt.
Der Atmel-ICE wird auch unter den Hardware-Tools gelistet.

Nach dem (obligatorischen?) hinzufügen einer main.c zum Projekt und dem 
Editieren auf:

int main(void)
{

    while(1)
    {

    }
}

Führt ein Build nur zu einer Fehler-Meldung.
"No rule to make target .....system_samc21.c"

Warum wird sowas eigentlich ohne jeden Test auf Funktion veröffentlicht?

Aber wenigstens lässt sich MPLAB-X v5.15 immer noch zuverlässig durch 
Anschliessen eines Atmel ICE an den USB beenden...

Edit: mit einem SAMC21 Xplained Pro passiert das Gleiche und MPLAB-X 
startet nicht mal solange das am USB hängt.

Edit2: Ich habe gerade bemerkt das mir die Installtion sogar "Atmel 
Driver Files" untergeschoben hat, Version 8.1.35

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Bei mir scheint das keine Probleme zu machen.
Pack doch mal dein Projekt und poste es.
(packen -> http://microchipdeveloper.com/mplabx:projects-package )

: Bearbeitet durch User
von Rudolph (Gast)


Lesenswert?

Was soll ich da packen, da ist nichts drin, einfach nur ein neues 
Projekt über MPLAB-X erstellt und eine main.c über MPLAB-X hinzugefügt.
Und das baut nicht mal den Startup-Code.

Solange sich MPLAB-X zuverlässig beendet sobald ich den Atmel-ICE 
anstecke, erübrigen sich auch weitere Experimente.

von Volker S. (vloki)


Angehängte Dateien:

Lesenswert?

Dann eben nicht ;-)
Muss mal bei mir ein ICE anstecken und schauen was passiert.
(Hatte PICkit4 ausgewählt)

<edit>auch mit ICE hier alles gut!



Rudolph schrieb:
> Was soll ich da packen, da ist nichts drin, einfach nur ein neues
> Projekt über MPLAB-X erstellt

Da sind zum Beispiel Pfade drin, die unter Umständen verbotene Zeichen 
enthalten...

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Liegt zwar alles hier rum und scheint auch zu funktionierten, aber 
selber habe ich bisher weder einen Arm, den GCC Compiler noch den ICE 
benutzt. In der Hilfe von MPLABX gibt es einen Eintrag:

ARM® GNU Toolchain and MPLAB X IDE

Vielleicht hilft das ja weiter. Ist auch ein Beispiel dabei.
Das scheint sogar schon bei MPLABX v4.20 so drin gewesen zu sein.

Hilft natürlich alles nichts, wenn die IDE sich verabschiedet, sobald 
man den ICE einsteckt ;-)

von Rudolph (Gast)


Lesenswert?

Okay, ich habe mir MPLAB-X v5.15 gerade noch mal hier auf dem Rechner 
installiert und hier funktioniert es.

Weder beendet sich MPLAB-X wenn ich den Atmel-ICE oder das C21 Xplained 
anstecke, noch gibt es irgendein Problem beim Build.

Keine Ahnung was zu Hause anders ist.
Bestenfalls mein USB-Hub.
Die Installationspfade fasse ich nicht an, der USB-Treiber ist auch 
installiert.

Der Projekt-Pfad ist soweit sauber, da ist nur ein "!" drin, das stört 
hier aber auch nicht, sonst keine komischen Zeichen, Umlaute oder 
Leer-Zeichen.
Den ARM-GCC aus dem AS7 benutze ich ja auch die ganze Zeit.

Da muss ich nachher wohl doch noch ein wenig was ausprobieren.
Zum Glück gib es noch keinen Grund wirklich auf MPLAB-X umzusteigen, 
aber langsam sieht das so aus als wäre das möglich.

Was mir gerade noch aufgefallen ist, mit MPLAB-X wird mir nicht 
angezeigt wie viel Speicher das Programm im Controller belegt.

von Rudolph R. (rudolph)


Lesenswert?

Okay, das gestern angelegte Projekt baut auch nicht wenn es unter 
D:\Microchip liegt.

Ein neu angelegtes Projekt baut allerdings ohne zu Murren, auch wenn ich 
das in den anderen Unter-Ordner mit dem längeren Pfad verschiebe.

Ohne das ich seit gestern was an der Installation geändert hätte.
Und wenn jetzt einer das Argument mit dem Windows Neustart bringt, dann 
hätte das auf dem anderen Rechner ohne Neustart auch nicht klappen 
dürfen.
Mal davon ab, daß wir nicht mehr 1995 haben.

Und mit dem Atmel-ICE / C21 Xplained, der Unterschied ist wirklich mein 
USB-Hub.
Wenn ich den Atmel ICE oder das C21 Xplained direkt an den Rechner 
anschliesse, dann hat MPLAB-X v5.15 kein Problem.
Schliesse ich eines von beiden über den USB-Hub an - weg ist MPLAB-X.

Das ist ein USB3 Hub mit dickem Netzteil dazu.
Und ich benutze sowohl den ICE als auch das Xplained schon die ganze 
Zeit an dem Hub aus Atmel Studio heraus.

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.