mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmel ASF4 Pro / Kontra?


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.
Autor: Torsten R. (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
für ein Projekt, in dem ein ATSAM4SD32CA Controller eingesetzt wird, 
stelle ich mir gerade die Frage, ob ich die ASF(4) einsetzen soll. Auf 
dem ersten Blick scheint die Architektur ganz vernünftig zu sein, auf 
dem 2. Blick ist die Dokumentation auf jeden Fall schon mal sehr 
dürftig.

Auch die Notwendigkeit, ein Web-Tool zu nutzen, damit man überhaupt an 
die Sourcen heran kommt (was ist wenn ich in 10 Jahren von mal was an 
dem Projekt ändern muss, gibt es da dieses Web-Tool noch?), flößt nicht 
gerade Vertrauen ein.

Hat jemand von euch Erfahrung mit der Library gemacht (evtl. sogar mit 
einem SAM4)? Lieber Finger weg? Woher bekäme man Beschreibungen der 
Peripheral Registers?

Schönen Grüße,

Torsten

Autor: Rudolph R. (rudolph)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Torsten R. schrieb:
> Auch die Notwendigkeit, ein Web-Tool zu nutzen, damit man überhaupt an
> die Sourcen heran kommt (was ist wenn ich in 10 Jahren von mal was an
> dem Projekt ändern muss, gibt es da dieses Web-Tool noch?), flößt nicht
> gerade Vertrauen ein.

Du meinst also https://start.atmel.com/ und nicht AFS4?
Das sind erstmal zwei getrennte Dinge, auch wenn Atmel Start dann AFS4 
verwendet.

Die ganze Atmel Software-Basis ist schon länger am dahin vegetieren und 
wird von Microchip nicht mehr gepflegt.
Die ARM GNU Toolchain 6.3.1 ist inzwischen zwei Jahre alt und der GCC6 
da drin noch ein Jahr älter.
Das bedeutet ja nicht, dass die nicht mehr funktioniert, aber ARM ist 
inzwischen bei GCC 8.


Und das Start hat erhebliche Macken.
Zum Beispiel ist es mir im Start noch nicht gelungen den Takt-Vorteiler 
der PLL zu verwenden um einen ATSAMC21 oder ATSAME51 mit einem 16MHz 
Quarz zu verwenden ohne den Takt über eine der GCLCK Units runter teilen 
zu müssen.
Und man kann die SERCOM Units im Start problemlos so konfigurieren das 
die Hardware nachher nicht laufen würde.
Also zum Rumspielen sehr nett, aber mit Vorsicht zu geniessen.


Microchip will auf MPLAB-X umziehen und dort deren MPLAB-XC Compiler 
promoten, dagegen ist an sich erstmal nichts zu sagen.
In Zukunft soll Start wohl durch Harmony ersetzt werden.

Mit all dem kann ich mich bisher aber nicht anfreunden,
vor allem weil Microchip bisher nur Beta-Ware raus haut aber so tut, als 
ob das alles schon fertig wäre.
Und man kann bei der Installation nicht mal auswählen was man haben will 
und bekommt so das volle PIC Paket mit serviert.

Mir passt auch nicht das ich plötzlich einen XC32-GCC entweder kastriert 
benutzen soll, oder für viel Geld kaufen darf, obwohl nicht klar wird wo 
jetzt der Vorteil gegenüber dem freien GCC ist.
Und im Job darf man die "Free" Version von den XC Compilern gleich gar 
nicht benutzen.
Immerhin ist es (noch) möglich die Atmel AVR/ARM Toolchains zu benutzen.

An der Stelle hat Microchip leider so gar nichts von Atmel oder auch 
anderen Herstellern gelernt.


Torsten R. schrieb:
> Woher bekäme man Beschreibungen der Peripheral Registers?

Äh?
Wie wäre es denn mit dem Datenblatt?

https://www.microchip.com/wwwproducts/en/ATSAM4SD32C

Und das hier ist hilfreich:
https://microchipdeveloper.com/32arm:sam-bare-metal-c-programming

Wäre nur mal nett, wenn Microchip einen Mitarbeiter abstellen würde der 
sich um die ATSAM kümmern darf und da mal etwas mehr Tiefe rein bringt.

Aber Microchip hat es zum Beispiel nach mehreren Jahren noch nicht 
geschafft in deren eigenem Forum mal AVR und ATSAM Unter-Foren 
anzulegen.
https://www.microchip.com/forums/Forums

Ich hatte zum Beispiel auf der Embedded World am Stand von Microchip 
durchaus den Eindruck, dass die AVR und ATSAM in der Familie integriert 
sind.
Aber jenseits vom Marketing fehlt mir da noch einiges an sichtbarem 
Fortschritt.

Ich frage mich zum Beispiel, warum gibt es immer noch keine B-Revision 
von dem ATSAMD51/ATSAME51 bei der wenigstens einige der Errata gefixt 
sind?

Autor: Torsten R. (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Rudolph,

Rudolph R. schrieb:
> Torsten R. schrieb:

> Du meinst also https://start.atmel.com/ und nicht AFS4?

Ich meine AFS4. Start muss ich wohl aber verwenden, um überhaupt an die 
Sourcen heran zu kommen.

> Die ARM GNU Toolchain 6.3.1 ist inzwischen zwei Jahre alt und der GCC6
> da drin noch ein Jahr älter.
> Das bedeutet ja nicht, dass die nicht mehr funktioniert, aber ARM ist
> inzwischen bei GCC 8.

Wir haben im Projekt noch einen anderen ARM Controller und werden von 
daher den gleichen arm-none-eabi-gcc einsetzen (version 8).

Ich habe nun meine Anforderungen umzusetzen und bevor ich anfange das 
Rad neu zu erfinden, gucke ich mich mal um, um zu sehen, was es bereits 
so gibt. ASF3, ASF4 gibt es. Alles von Hand schreiben würde für UART / 
GPIO bestimmt noch gehen, aber z.b. USB CDC oder MSD wären schon eigene 
Projekte.

> Torsten R. schrieb:
>> Woher bekäme man Beschreibungen der Peripheral Registers?
>
> Äh?
> Wie wäre es denn mit dem Datenblatt?

Bei anderen Herstellern, wie ST oder Nordic bekommst Du mit deren SDK, 
auch header, in denen die Peripherals als structs definiert sind und mit 
Makros für die einzelnden Bit-Positionen in Registern etc.

Das nimmt zumindest ein wenig Arbeit ab und eliminiert noch mal eine 
Fehlerquelle. Gibt es soetwas bei Atmel nicht?

>
> Und das hier ist hilfreich:
> https://microchipdeveloper.com/32arm:sam-bare-metal-c-programming

Ah, das scheint genau das zu sein, wovon ich oben sprach :-) Vielleicht 
sind diese header in dem ASF3 mit drinnen.

Schönen Dank für Deine hilfreichen Einblicke!

mfg Torsten

Autor: Rudolph R. (rudolph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Torsten R. schrieb:
>> Du meinst also https://start.atmel.com/ und nicht AFS4?
>
> Ich meine AFS4. Start muss ich wohl aber verwenden, um überhaupt an die
> Sourcen heran zu kommen.

Für das AFS4 gibt es wohl keinen anderen Weg da ran zu kommen.
Ich gehe auch nicht davon aus, dass da noch Arbeit rein gesteckt wird.

>> Torsten R. schrieb:
>>> Woher bekäme man Beschreibungen der Peripheral Registers?
>>
>> Äh?
>> Wie wäre es denn mit dem Datenblatt?
>
> Bei anderen Herstellern, wie ST oder Nordic bekommst Du mit deren SDK,
> auch header, in denen die Peripherals als structs definiert sind und mit
> Makros für die einzelnden Bit-Positionen in Registern etc.
>
> Das nimmt zumindest ein wenig Arbeit ab und eliminiert noch mal eine
> Fehlerquelle. Gibt es soetwas bei Atmel nicht?

Ah, Includes suchst Du.
Da ist zum Beispiel das Atmel-Studio 7:
https://www.microchip.com/mplab/avr-support/atmel-studio-7

Nach der Installation liegen unter anderem die Includes dann hier:

C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel

Updates für die Packs bekommt man hier: http://packs.download.atmel.com/

Das System hat Microchip inzwischen wohl auch für MPLAB-X übernommen.

Wenn ich mir mal so meine MPLAB-X Installation ansehe findet sich das 
hier:
C:\Program Files (x86)\Microchip\MPLABX\v5.15\packs\Microchip
Aktuell wäre MPLAB-X ssv5.20.

Wie man die Includes mit einem aktuellen GCC benutzt, müsste ich 
vielleicht irgendwann mal heraus finden.
Vielleicht habe ich schon zu lange kein Makefile mehr editiert, aber 
vermisst habe ich das auch nicht. :-)

Autor: Torsten R. (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudolph R. schrieb:
> Updates für die Packs bekommt man hier: http://packs.download.atmel.com/

Fine, da scheint alles drinnen zu sein (ist nur eine umbenannte 
zip-Datei, die unter anderem eine umbenannte zip-Datei enthält).

> Wie man die Includes mit einem aktuellen GCC benutzt, müsste ich
> vielleicht irgendwann mal heraus finden.

Sieht aus wie ganz gewöhnliches C (und sogar an uns C++-User haben sie 
gedacht).

> Vielleicht habe ich schon zu lange kein Makefile mehr editiert, aber
> vermisst habe ich das auch nicht. :-)

Guck Dir CMake an!

Autor: fop (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Wo wir schonmal bei Atmel Start sind :
Was ich noch gar nicht kapiert habe, wie ich vorgehen muss, wenn ich per 
Atmel Start etwas konfiguriere, dass dann herunterlade, mit meinem Atmel 
Studio öffne, das ganze umfangreich mit meinem Code ergänze und dann 
merke, dass in der per Start getätigten Konfiguration noch ein Fehler 
ist.
Kurz gesagt, wie bekomme ich die veränderte Start Konfiguration in mein 
bestehendes Studio Projekt ?

Autor: Rudolph R. (rudolph)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mir kam das gerade ein wenig seltsam vor, dass der Packs-Download noch 
von Atmel.com läuft.
Und es gibt in der Tat ein https://packs.download.microchip.com/ wo man 
auch Packs für PICs findet sowie für die Serien von ehemals Atmel die 
bereits von MPLAB-X unterstützt werden.

Seltsamerweise hat die neue Packs Seite ein CMSIS 5.0.1 von 2017,
die Atmel.com Seite aber ein 5.4.0 von 2018.

Was mich aber so richtig stört sind die neuen Includes.
Zum Beispiel beim ATSAMC21:
3.0.22 (2019-04-11)   Removed legacy headers

Da fehlt jetzt der komplette Ordner include/instance.
Da sind die Einzel-Register Defines drin, sowas wie "REG_ADC0_CTRLA".

Warum zum Geier macht man sowas ohne Vorwarnung, kann man das nicht 
erstmal auf "deprecated" setzen und Warnungen generieren, bevor man das 
einfach so raus wirft?
Und ohne die "Doku" dafür anzupassen.
Und wieso ist das auf einmal "legacy"?

Ganz toll, da habe ich mich gerade dran gewöhnt das hier zu benutzen:
REG_PORT_OUTTGL0 = PORT_PA27;

Da kann ich mich schon wieder drauf einstellen das in Zukunft nur noch 
so benutzen zu können:
PORT->Group[0].OUTTGL.reg = PORT_PA27;

Oder "TC4->COUNT16.CTRLBSET.reg = TC_CTRLBSET_CMD_READSYNC;" statt 
"REG_TC4_CTRLBSET = TC_CTRLBSET_CMD_READSYNC;".

Warum auch immer das nicht PORT0->OUTTGL.reg ist, sondern an der Stelle 
inkonsistent sein muss.

Aber wenigstens kann ich mein Projekt im Atmel Studio 7 nicht mal öffnen 
solange Microchip.SAMC21_DFP.3.0.22.atpack installiert ist.

: Bearbeitet durch User
Autor: Torsten R. (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt zumindest so, als sollte man Deiner Erfahrung nach die Finger von 
Atmel für Neuentwicklungen lassen...

Autor: Rudolph (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Naja, so auch nicht, mit dem was da ist kann man ja sehr gut arbeiten. 
:-)

Nur was Microchip als Vorwärtsbewegung ansieht ist für mich bestenfalls 
seitlich oder gar rückwärts.
Wenn es darauf ankommt kann man sich damit sicher auch arrangieren und 
da ich jetzt weiss wo die Reise mit den Includes hingehen wird kann ich 
das ja langsam mal umstellen - solange mich nichts dazu zwingt.

Das ist jetzt alles im Umbruch.
Auf der einen Seite ist der Support für die alte Atmel Software offenbar 
schon eingestellt, auf der anderen Seite nimmt der neue Support durch 
die Microchip Software erst langsam Fahrt auf.

Das Start/AFS4 wirkt unfertig und hat Bugs, wird aber wahrscheinlich so 
bleiben bis es ganz verschwindet.
In MPLAB-X gibt es aber bisher praktisch nur Support für aktuellere 
Serien wie C21 und D5x/E5x.

Woanders hingehen ist mitunter dann auch nicht so leicht, ich wüsste 
nicht womit ich den ATSAMC21E18A ersetzen könnte.
Der ist niedlich und kann iso CAN-FD.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.