Forum: Mikrocontroller und Digitale Elektronik CMSIS - was ist das genau?


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 oleg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Eine Frage zum CMSIS, das ist ja eine Softwareschicht auf der Hardware. 
Jetzt habe ich gelesen, dass man auch ohne CMSIS auskommen könnte und 
die Register direkt ansprechen kann. Wie ist das gemeint?
Wenn ich mir das Ref.Manual von z.B. dem STM32F0 anschaue, dann werden 
dort direkt Registernamen angegeben. Aber ohne CMSIS müsste ich dann nur 
noch direkt mit Adressen arbeiten anstatt mit Namen, ist das richtig? 
Somit basiert das Ref.Manual auf dem CMSIS?

von Horst (Gast)


Bewertung
0 lesenswert
nicht lesenswert
oleg schrieb:
> Aber ohne CMSIS müsste ich dann nur noch direkt mit Adressen arbeiten
> anstatt mit Namen, ist das richtig?

Ja

oleg schrieb:
> Somit basiert das Ref.Manual auf dem CMSIS?

Nein, andersherum. Cmsis basiert auf refman.

von oleg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Super dann bin ich da schonmal einen Schritt weiter, danke dir.

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
oleg schrieb:
> Aber ohne CMSIS müsste ich dann nur
> noch direkt mit Adressen arbeiten anstatt mit Namen

Nein. Statt CMSIS benutzt du einfach einige 'relativ' einfache 
Definitionen wie z.B. sowas:
1
#define NVIC_ISER     (*((volatile dword *)   (NVIC + 0x100)))  // Interrupt Set Enable Register

Normalerweise sind alle die HW-Register in solcher oder so ähnlicher 
Weise in irgend einer Headerdatei vorgehalten, die meistens in dem 
Schema 'name des chips.h' benannt ist. Entweder du findest selbige bei 
einer vertrauenswürdigen Quelle oder du machst diese Datei dir selber. 
Ist nicht schwer, wenn man das Schema begriffen hat.

Und dann operierst du in deinem Programm nicht mit Adressen, sondern mit 
den Namen, wie sie im Refman stehen (oder wie du sie selber getauft 
hast).

W.S.

von Bernd K. (prof7bit)


Bewertung
-1 lesenswert
nicht lesenswert
W.S. schrieb:
> Entweder du findest selbige bei
> einer vertrauenswürdigen Quelle oder du machst diese Datei dir selber.

Die CMSIS Header sind immer irgendwo in den Downloads vom Hersteller 
zu finden, in irgendwelchen zip-dateien mit Demo-Projekten oder 
dergleichen. Kein Mensch der noch alle Tassen im Schrank hat käme jemals 
auf die Idee die selber zu schreiben, es sei denn er ist auf ner 
einsamen Insel gestrandet und hat alles Werkzeug und Zubehör bis auf die 
Header vom sinkenden Schiff gerettet, aber hat nun leider dort am Strand 
kein Internet.

Von so einer Begebenheit ist mir aber noch nie was zu Ohren gekommen.

von Horst (Gast)


Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Nein. Statt CMSIS benutzt du einfach einige 'relativ' einfache
> Definitionen wie z.B. sowas:#define NVIC_ISER     (*((volatile dword *)
> (NVIC + 0x100)))  // Interrupt Set Enable Register

Das gehört doch schon zu CMSIS oder nicht?

Bernd K. schrieb:
> Die CMSIS Header sind immer irgendwo in den Downloads vom Hersteller zu
> finden, in irgendwelchen zip-dateien mit Demo-Projekten oder
> dergleichen.

Wenn man eine zentrale Anlaufstelle haben will: 
https://www.keil.com/dd2/pack/
Einfach die Dateien entpacken nach dem Download und auch in non-Keil 
Software verwenden.

von Janvi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Zur Orientierung. CMSIS ist von ARM und betrifft nur den CPU Kern. Der 
beinhaltet auch den Interrupt Controller und bereits beim Einlesen in 
dessen Details habe ich das Teil sehr gerne (und problemlos) benutzt. 
(Steht nicht im STM Datenblatt sondern im Arm Architecture Manual). Dazu 
ergänzend sind dann in ähnlicher Weise die Peripherie Libs von ST wo 
produktspezifisch sind. Aber auch die habe ich (als eingefleischter 
Asssembler Programmierer) problemlos benutzt und nur in Sonderfällen 
selbst auf Register zugegriffen. So mal bei einer Trickserei mit Timern 
und Capture die manchmal etwas undurchsichtig sind und es vielleicht 
nicht alle Anwendungen in der Lib vorgefertigt gibt.

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]
  • [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.