Forum: Compiler & IDEs Segger Embedded Studio, SAM-C und CMSIS 5


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 Rudolph R. (rudolph)


Bewertung
0 lesenswert
nicht lesenswert
Ich spiele gerade ein wenig mit Segger Embedded Studio herum (4.30c).
Als Target habe ich einen ATSAMC21E18A.

Im Package Manager habe ich das SAM-C CPU Support Package installiert.
Ebenso habe ich das "CMSIS 5 CMSIS-CORE Support Package" installiert.

Wie bringe ich dem Segger Embedded Studio jetzt bei, dass es CMSIS 5 
nutzen soll und nicht das ebenfalls installierte CMSIS 4 Package?
Wenn ich versuche das CMSIS 4 Package zu entfernen, dann geht das nicht 
ohne das "Atmel SAM-C CPU Support Package" ebenfalls zu entfernen.

Ich könnte auch __CM0PLUS_CMSIS_VERSION_MAIN auswerten, nur ist das in 
CMSIS 5 als deprecated geflagged.
Eigentlich würde ich mich mit CMSIS 4 gar nicht erst anfreunden wollen.

Nach etwas Graben in den Strukturen könnte man vielleicht noch die 
"project_templates.xml" in \AppData\Local\SEGGER\SEGGER Embedded 
Studio\v3\packages\SAM-C\XML von Hand anpassen.
Nur, naja, eigentlich sollte sowas ja einstellbar sein ohne die Packages 
von Hand manipulieren zu müssen.


Und noch eine Frage, setzt das Segger Embedded Studio irgend einen 
Define den man zur Compile-Zeit abfragen könnte?
#if defined (__Segger__)
 #include <SAMC.h>
#else
 #include "sam.h" // AS7
#endif

von Rudolph R. (rudolph)


Bewertung
0 lesenswert
nicht lesenswert
Okay, ich habe die "project_templates.xml" von Hand geändert, das 
CMSIS_4 taucht dort an drei Stellen auf.

Dann habe ich eine neue Solution erstellt und jetzt wird CMSIS 5 
verwendet.

Das muss doch aber noch anders gehen??


Naja, mein Projekt compiliert zwar jetzt komplett ohne Warnungen durch 
und ich musste dafür nur zwei Mal "sam.h" in <SAMC.h> ändern.
Optimierungslevel ist 2, wie auch im Atmel Studio 7.
Enable All Warnings: Yes
Enforce ANSCI Checking: Yes

In AS7 habe ich -Wall, -Wextra und -pedantic an.

Der Ausgabe vom Build nach ist das im ES in etwa das gleiche.

Nur, das was aus dem ES fällt läuft noch nicht, ist auch etwas kleiner 
als das Programm aus dem AS7:

AS7: 17800 bytes
ES: "14.6KB"

Hmm, CMSIS, zwei Funktionen die ich benötige sind NVIC_SetPriority() und 
NVIC_EnableIRQ() - aber nur wenn ich den SPI per DMA bediene.

Also DMA per Define ausgeschaltet, ES: "14.5KB" und funktioniert.

-> Die "project_templates.xml" von Hand zu ändern war so für sich wohl 
nicht besonders erfolgreich.

Wenn das schon "läuft", schauen wir mal nach der Ausführungszeit.
AS7 / GCC 6.3.1 : 395µs
ES / GCC "arm-8-2019-q3-update : 400µs

Hmm, okay, das ist eher kein Grund zum Umsteigen.

Edit: ES mit CMSIS 4: 391µs und "13.6 KB"

Seltsam, vor allem ist in der ausgemessenen Funktion überhaupt nichts 
drin was auf CMSIS zugreifen sollte.

Mit DMA und CMSIS_4 läuft das Programm auch nicht.

-> wo auch immer der Fehler ist... grr

Edit2: ach so, mit DMA ist die Funktion nur 142µs unterwegs, das ist 
etwa 230 Mal weniger warten auf den SPI..

: Bearbeitet durch User

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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