ARM / STM32 C Programmierung

Gast #3165400
Lesenswert?

Ich spiele mich gerade mit dem UART herum.
Der ist ja nicht sooo kompliziert, und letztlich ist es nicht viel 
anders als beim AVR...

Ich hätte nun, um diesen zu initialisieren einfach die drei Control 
Register befüllt und ab die Post.

Nun sehe ich aber, dass die vom CooCox bereitgestelle "Library" "fertig 
vorverdaute" CMSIS Funktionen zur Verfügung stellt, die das auch machen, 
aber halt auf einem höheren Abstraktionsniveau und eigentlich recht 
"umständlich" und schwerfällig. Es ist alles verständlich und 
nachvollziehbar, jedoch frage ich mich, ob man diesen Code nun verwenden 
soll, oder als Anfänger nicht besser an der Basis bleibt, und die 
Register direkt beschreibt.

Die Frage: was meinen erfahrene ARM Entwickler dazu? Verwendet ihr diese 
CMSIS Funktionen? Irgendwie fühle ich mich um das "Erlebnis betrogen", 
wenn ich die fertig vorgekauten Dinger verwende, andererseits sollte man 
vielleicht gleich von Anfang an kompatiblen und portierbaren Code 
schreiben? Ich bin irgendwie ratlos, welchen Weg ich im Zuge des 
Einstiegs wählen soll...Beides geht nicht.

Bitte um einen Tipp, wie ihr das macht!
Gast #3165498
Lesenswert?

Also: wenn ich mir für den Anfang bloß mal die stm32f4xx.h einziehe und 
alles "selbst" mache, habe ich glaube ich mehr davon, denn schließlich 
will ich den Controller kennen lernen, und nicht eine Library. Ähnlichen 
Beiträgen gemäß scheint es hier eine Glaubensfrage zu sein, welchen 
Ansatz man wählt. Ich wollte nur vermeiden, dass man mir dann später bei 
irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert 
"hättest du doch die CMSIS genommen" oder "so wie du das machst ist es 
doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige 
Libraries gibt", u.s.w.

Wenn ich den Controller dann besser kenne, kann ich ja immer noch 
abstrakter werden, und auf fertigen Code zurückgreifen.
Gast #3165513
Lesenswert?

>dass man mir dann später bei
>irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert
>"hättest du doch die CMSIS genommen" oder "so wie du das machst ist es
>doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige
>Libraries gibt", u.s.w.

Ich denke die meisten benutzen den Code von ST.
Warum auch nicht?
Wenn du alles selber machst ist es sehr wahrscheinlich
das du kaum Antworten bekommst wenn du Probleme hast
und mit eigenem Code daher kommst. Den schaut sich
dann eben kaum noch einer an.
Gast #3165572
Lesenswert?

ARM Einsteiger schrieb im Beitrag #3165498:
> Ich wollte nur vermeiden, dass man mir dann später bei
> irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert
> "hättest du doch die CMSIS genommen" oder "so wie du das machst ist es
> doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige
> Libraries gibt", u.s.w.

Das kannst Du nicht vermeiden. Egal was und wie Du es machst - immer 
wird es einen geben, dem das so nicht passt.

Mach es so, wie Du es machen willst. Im Zweifelsfall muß sich der Rest 
der Welt nach Dir richten :-)
Gast #3165735
Lesenswert?

Patrick B. schrieb:
> Weiter sind die Libs sehr hilfreich, wenn du mit mehreren Controllern
> arbeiten willst.

Das halte ich aber für stark geschmeichelt. Versuch mal, mit dem 
Standard-Lib-Zeuchs vom STM32, auf einem LPC zu Potte zu kommen.

ARM Einsteiger schrieb im Beitrag #3165400:
> Bitte um einen Tipp, wie ihr das macht!

Ich kann hier ja nur für mich schreiben: ich schreib mir schlichtweg 
alles selbst, lediglich die Header-Dateien für die jeweiligen 
Controller, also STM32F10xxxblabla.h oder LPCxyzblabla.h benutze ich, 
wenn es geht. Notfalls mach ich mir die auch selbst zurecht.

Ansonsten schreibe ich strikt modular, also beispielsweise eine 
"serial.c" und dazu eine "serial.h" für's Serielle, wobei ich die .h 
eigentlich zwischen verschiedenen uC nie ändere. So hab ich das gleiche 
Interface bei verschiedenen Typen und Architekturen (NXP, ST, Nuvoton, 
Fujitsu ua.)

Wenn du allerdings den GCC benutzt und Code auch für die ARM7 Typen 
schreibst, dann hast du das Problem, ggf. die Interruptroutinen in ne 
separate Quelle auszulagern, weil der GCC (im Vergleich zum Rest der 
Welt) ARM und THUMB in einer Quelle nicht beherrrscht.

W.S.
Gast #3166044
Lesenswert?

ARM Einsteiger schrieb im Beitrag #3165498:
> Also: wenn ich mir für den Anfang bloß mal die stm32f4xx.h einziehe und
> alles "selbst" mache, habe ich glaube ich mehr davon, denn schließlich
> will ich den Controller kennen lernen, und nicht eine Library.

Du kannst natürlich alles zu Fuss machen. Aber notwendig ist das nicht 
mehr. Der Trend in der modernen Embeddedwelt geht ganz klar in Richtung 
fertiger Komponenten. Dazu gehören, neben diverser Middleware, zu einem 
grossen Teil auch Treiberbibliotheken.
Viele Entwickler schimpfen zwar darauf weil so eine Fremdbibliothek auch 
Einfluss auf den persönlichen Programmierstil nimmt, aber das ist im 
Grunde esotherisch. Faktisch sind gute Bibliotheken wie die von ST 
durchaus geeignet ein sicheres und funktionales System mit einer Menge 
Zeitersparnis zu erstellen. Mit Coocox wirst du sicher kein SIL-2 
erreichen, aber um zeitgemässe Entwicklung moderner Mikrocontroller zu 
erlernen ist es das richtige Prinzip.
Gast #3167090
Lesenswert?

Matthias schrieb:
> Faktisch sind gute Bibliotheken wie die von ST
> durchaus geeignet..

den Anwender in einem Ozean unnützer #define's zu ertränken und den 
Flash vollzustopfen. Kein Wunder, daß man heutzutage schon für ein 
"Hello World" mindestens ein halbes Megabyte Flash benötigt.

Kopfschüttel..

W.S.
Gast #3168756
Lesenswert?

Nach einer kleinen Gewöhnungsphase muss ich zugeben, dass die ST CMSIS 
Library durchaus Vorteile bietet. Das Reference Manual muss man trotzdem 
lesen, genauso muss man anfangs nachsehen, was die Funktionen denn so 
machen und welche Register im Detail beschrieben werden. Man muss sich 
aber nicht mehr um die ganz untersten Details kümmern, z.B. dass man den 
Wert zuerst um 5 Bits nach links schieben muss, bevor man ihn mit dem 
Register verodert...Trotzdem weiß ich, was passiert und lerne die MCU 
genauso gut kennen, als ob ich alles selbst erledige. Vielleicht sogar 
ein wenig besser, da man anhand des Library-Codes gleich sieht, worauf 
es ankommt. Ohne jemals hineingeschaut zu haben würde ich die CMSIS aber 
nicht benutzen wollen, da dies einem totalen Blindflug gleichkäme ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren