mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CMSIS: Ich versteh es nicht


Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
irgendwie verstehe ich dieses CMSIS nicht. Ich hatte vermutet, daß z.B. 
ARM im CMSIS quasi vorgibt, wie ein Register heißt, welche Funktion es 
hat, wieviele bits drin sind, wie sie heißen und welche Position sie im 
Register haben. Somit wäre es egal, ob man einen z.B. einen LPC17* oder 
einen STM32* programmiert. Der jeweilige Hersteller kann seinen Chip ja 
basteln wie er will, er muß nur ein Headerfile zur Verfügung stellen, 
damit sein Chip exakt wie im CMSIS vorgegeben angesprochen werden kann. 
Ob ein Hersteller nun ein Register 32 bit weit macht und es intern 
SONSTWIE nennt und ein anderer Hersteller dafür zwei 16 bit Register 
macht und sie SONSTWIE_H und SONSTWIE_L nennt, obliegt ihm. Er muß es 
eben nur im Headerfile nach außen wieder "gerade ziehen".

Das ist aber leider nicht so. Im CMSIS Blinky Example gibt es beim 
LPC17xx z.B. die Funktion
__INLINE static void LED_Config(void) {
  LPC_GPIO1->FIODIR = 0xB0000000;               /* LEDs PORT1 are Output */
}
beim STM32* die äquivalente Funktion
__INLINE static void LED_Config(void) {
RCC->APB2ENR |=  1 <<  3;                /* Enable GPIOB clock          */
GPIOB->CRH    = 0x33333333;              /* Configure the GPIO for LEDs */
}

Daher erschließt sich mir irgendwie nicht, wie man dadurch übergreifend 
Code wiederverwenden soll. Bitte erklärt es mir, da CMSIS ja wohl 
ziemlich grundlegend beim CM3 sein (bzw. werden) soll.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred schrieb:

> ARM im CMSIS quasi vorgibt, wie ein Register heißt, welche Funktion es
> hat, wieviele bits drin sind, wie sie heißen und welche Position sie im
> Register haben.

CMSIS definiert bislang nur ein einheitliches Interface für die 
Core-Komponenten. Also hauptsächlich Prozessor und Interrupt-Controller. 
Die sind nämlich von ARM und daher überall sehr ähnlich.

> Somit wäre es egal, ob man einen z.B. einen LPC17* oder
> einen STM32* programmiert.

Eben. Woran diese Hersteller kein gesteigertes Interesse haben. Die 
wollen die Kunden binden, nicht mit ihnen um jeden Cent feilschen.

> Bitte erklärt es mir, da CMSIS ja wohl
> ziemlich grundlegend beim CM3 sein (bzw. werden) soll.

Das was ich vom CMSIS bisher gesehen habe entspricht nicht so ganz 
deinen Vorstellungen. Aufs Hardwarebit runter wird es das sicher nicht 
geben, und ein API mit gleichem Interface nach oben hin wäre ein 
Komitteeentwurf (viele Köche...), der aufgrund der "Dynamik" solcher 
Institutionen erst dann verabschiedet werden würde, wenn es niemanden 
mehr interessiert und dafür mehr Speicher bräuchte, als das grösste 
Modell bietet.

Herrje, das hat ja nicht einmal ein Hersteller allein für sich selbst 
geschafft. ST hat zwar für allerlei Controller jeweils eine 
Periphierielib gebastelt, aber die sieht bei jeder Controller-Familie 
anders aus. Sogar bei den 3 ARM-Familien (STR7, STR9, STM32).

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.