Forum: Mikrocontroller und Digitale Elektronik STM32CubeF4 Rant


von Dergute W. (derguteweka)


Angehängte Dateien:

Lesenswert?

Moin,

Muss hier mal meinem Entsetzen Luft machen.
Hab' mir grad dieses Zeugs hier:
https://github.com/STMicroelectronics/STM32CubeF4
gecloned und fang' an mich da durchzuwurschteln.

Da muss ich mich aber doch mal fragen - was sind das fuer Leute, die so 
Software schreiben und in dieser Form abliefern?

Haben die schon mal was davon gehoert, dass man "trailing whitespaces" 
auch weglassen kann? Oder sind da satanische Botschaften per 
whitespace-steganographie drinnen versteckt, wenn man den code 
rueckwaerts liest?
Das ist doch so nervig, wie wenn du im Grossraumbuero einen Kollegen 
hast, der sich andauernd raeuspern muss.

Was soll diese bescheuerte Pseudo-doxygen-dokumentation ueber den 
Funktionen?
Und auch die Kommentare in den Funktionen sind doch voellig 
ueberfluessig. Genau solche Kommentare, die nur nochmal wiederholen, was 
da dann eh' eine oder ein paar Zeilen spaeter in C steht, sind doch ein 
Negativbeispiel, wie man gerade nicht coden soll.

Ganz grosses Kino auch die Schreibweisen: Bei Src und Inc natuerlich den 
ersten Buchstaben gross. Ganz wichtig auch, dass die lokalen 
popel-includes natuerlich immer in einem eigenen Unterverzeichnis 
stehen. Warum nicht gleich eine eigene Partition jeweils fuer Src und 
Inc? Gaaaah!
Dafuer wird dann natuerlich das makefile mit kleinem m am Anfang 
(mutmasslich vom dusseligen STM32CubeIDE) erstellt und nicht mit grossem 
M.
Und includiert natuerlich auch im simpelsten Projekt Unmengen andere 
makefileartige Dateien.

Dann muss man natuerlich immer streng zwischen Applications, Examples, 
und Demonstrations unterscheiden. Ist ja logo...

Ich hatte echt versucht, diesen Kackhaufen zu umgehen. Aber dummerweise 
siehts so aus, als wuerde an der libopencm3 schon seit Jahren nichts 
mehr gefixt und USB-Host ist da auch nur ein grosses, schwarzes Loch :-(

So, das musste mal raus...

Gruss
WK

von Rahul D. (rahul)


Lesenswert?

Dergute W. schrieb:
> Moin,
>
> Muss hier mal meinem Entsetzen Luft machen.
> Hab' mir grad dieses Zeugs hier:
> https://github.com/STMicroelectronics/STM32CubeF4
> gecloned und fang' an mich da durchzuwurschteln.
>
> Da muss ich mich aber doch mal fragen - was sind das fuer Leute, die so
> Software schreiben und in dieser Form abliefern?
You get what you paid for...

> Haben die schon mal was davon gehoert, dass man "trailing whitespaces"
> auch weglassen kann? Oder sind da satanische Botschaften per
> whitespace-steganographie drinnen versteckt, wenn man den code
> rueckwaerts liest?
Das dürfte an Editor liegen, wenn man ein Tab gesetzt hat, und sich dann 
für einen Zeilenumbruch entschieden hat.

> Das ist doch so nervig, wie wenn du im Grossraumbuero einen Kollegen
> hast, der sich andauernd raeuspern muss.
Soll er halt was trinken.

> Was soll diese bescheuerte Pseudo-doxygen-dokumentation ueber den
> Funktionen?

> Genau solche Kommentare, die nur nochmal wiederholen, was
> da dann eh' eine oder ein paar Zeilen spaeter in C steht, sind doch ein
> Negativbeispiel, wie man gerade nicht coden soll.
Nö, es ist eine Überschrift für das was danach kommt.
Was ist einfacher zu lesen / zu verstehen? Kryptischer Quellcode oder 
ein Satz in prosa?

> Ich hatte echt versucht, diesen Kackhaufen zu umgehen. Aber dummerweise
> siehts so aus, als wuerde an der libopencm3 schon seit Jahren nichts
> mehr gefixt und USB-Host ist da auch nur ein grosses, schwarzes Loch :-(

Wie wäre es, das Repo zu forken, die Macken zu beheben und es der 
Allgemeinheit zur Verfügung zu stellen?!

In dem Quellcode fehlen noch auskommentierte oder nicht verwendete 
Riesen-Funktionen.

Keil bietet für sein mdk eine USB-Host-Lib an.
Kostet zwar was, entspricht aber wohl eher deinem Geschmack.

von Wastl (hartundweichware)


Lesenswert?

Dergute W. schrieb:
> Ich hatte echt versucht, diesen Kackhaufen zu umgehen.

Wenn du diesen Kackhaufen erst mal richtig kennengelernt hast
wirst du vielleicht merken wie dir das Programmieren in der
CubeIDE erleichtert wird. Dazu hast du noch die freie Wahl
entweder LL- oder HAL-Libraries zu verwenden. Frei nach Ge-
schmack sogar wild gemischt.

Oder redest du nur von den vielen Beispielen die dir in der
Cube-Firmware mitgeliefert werden?

Ansonsten kommt mir noch der Spruch in den Sinn: Wasch mir den
Pelz aber mach nicht nasss.

von Hans W. (hanswieland)


Lesenswert?

Dergute W. schrieb:
> Da muss ich mich aber doch mal fragen - was sind das fuer Leute, die so
> Software schreiben und in dieser Form abliefern?

Das sind Leute, denen man nicht genug Zeit für ein perfektes Denkmal 
gibt. Das ganze muss billig produziert werden, da es kaum messbaren 
Gewinn abwirft.

von Mi N. (msx)


Lesenswert?

Dergute W. schrieb:
> So, das musste mal raus...

Das ist ja völlig in Ordnung ;-)

Warum STM32Cube? Wenn man möchte, kann man die Controller auch mit 
direkten Zugriffen auf die Register programmieren.
Einzig zum Einstellen der internen Takte nimmt es einem etwas an Arbeit 
ab, solange diese im weiteren Programmablauf unverändert bleiben sollen.

von Hans W. (hanswieland)


Lesenswert?

Mi N. schrieb:
> Einzig zum Einstellen der internen Takte nimmt es einem etwas an Arbeit
> ab, solange diese im weiteren Programmablauf unverändert bleiben sollen.

Der ganze Code für USB und Ethernet nimmt einem viel Arbeit ab. Man muss 
das Rad nicht neu erfinden oder zukaufen. Man kann aber.

von Hans W. (hanswieland)


Lesenswert?

Dergute W. schrieb:
> Was soll diese bescheuerte Pseudo-doxygen-dokumentation ueber den
> Funktionen?

Muss halt automatisch nebenbei entstehen. Die Firma könnte einen 
Buchautor in Vollzeit gebrauchen, aber der kostet ja Geld.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Hans W. schrieb:
>
> Muss halt automatisch nebenbei entstehen. Die Firma könnte einen
> Buchautor in Vollzeit gebrauchen, aber der kostet ja Geld.

Nee, das ist Quatsch. Bei den schwachsinnigen Doxygenueberresten (siehe 
mein Bild im 1. Post) kommt eh' keine verwertbare Doku raus. 
Genausowenig wie bei schwachsinnigen Kommentaren im Stil von:
1
/* inkrementiere i */
2
i++;
Und nicht recht viel anders ist das ja, was mir da auffaellt.
Also spart da simples, komplettes Weglassen auch Zeit und minimiert 
Tastaturabnutzung ;-)
Im uebrigen gibt's ja durchaus auch Doku, die mir jetzt auf den 1. Blick 
ganz vernuenftig vorkommt, z.b. UM1720 (User manual STM32Cube USB host 
library).
Genialerweise ist die natuerlich nicht im repository, sondern man darf 
sie sich dann separat runterladen und gucken, ob das dann irgendwie zu 
den sourcen passt...auch seeehr clever. Und die sieht so ueberhaupt 
nicht aus, als ob da mit doxygen oder anderen Generatoren gearbeitet 
worden waere, sondern eher, als haette das ein "Buchautor in Vollzeit" 
geschrieben.

Das rausschmeissen von trailing whitespaces kann man automatisieren, 
kostet also auch nicht wirklich Zeit. Muss man einmal machen, dann ist 
Ruhe.

Und jaaaa, ich weiss, kost' nix, darf man auch nicht meckern. Doch. Darf 
ich. Tu' ich auch. Macht mich rot.

Gruss
WK

von Nick (b620ys)


Angehängte Dateien:

Lesenswert?

Dergute W. schrieb:
> Das rausschmeissen von trailing whitespaces kann man automatisieren,
> kostet also auch nicht wirklich Zeit. Muss man einmal machen, dann ist
> Ruhe.

Kann man den Editor auch gleich so konfigurieren, dass er es, mit Null 
Aufwand, automatisch rauswirft. Incl. trailing spaces.

Dergute W. schrieb:
> Nee, das ist Quatsch. Bei den schwachsinnigen Doxygenueberresten (siehe
> mein Bild im 1. Post) kommt eh' keine verwertbare Doku raus.

Naj, selbst bei sowas kommt was raus (auch wenn die Kommentare nicht 
wirklich sinnvoll sind).
Das ( incrementiere i ) ist natürlich die Krönung einer erfolgreichen 
code-review. :-)

Ja, ich mag Doxygen.

von Dergute W. (derguteweka)


Angehängte Dateien:

Lesenswert?

Moin,

Nick schrieb:
> Ja, ich mag Doxygen.

Ja, finde ich auch super. Aber nicht, um richtige Dokumentation zu 
bekommen, sondern um ahnungslose Projektkasper in Sicherheit zu wiegen 
(Ja, sicher - wir verwenden doxygen, damit ist sichergestellt, dass die 
Dokumentation immer zum aktuellen Code passt <harhar>).
Und mal ehrlich - z.B. die Doku von der libopencm3  ist bestimmt mit 
guter Absicht so entstanden. Aber das Bild - auch mit dem Kontext von:
https://libopencm3.org/docs/latest/stm32f4/html/group__CM3__systick__file.html
hilft doch wirklich nicht weiter, oder?
(Was mir da viel mehr weiterhalf, war libopencm3-examples.)

Gruss
WK

von Alexander (alecxs)


Lesenswert?

Dergute W. schrieb:
> STM32CubeF4 Rant

Thread mit Ankündigung. Muss man nicht weiter kommentieren, kann man so 
stehen lassen.

von Dergute W. (derguteweka)


Lesenswert?

Alexander schrieb:
> Dergute W. schrieb:
>> STM32CubeF4 Rant
>
> Thread mit Ankündigung. Muss man nicht weiter kommentieren, kann man so
> stehen lassen.

Tja, offensichtlich und natuerlich ganz ueberraschend bist du ja dazu 
nicht in der Lage, das so stehenlassen zu koennen...

scnr,
WK

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Weitere tolle Features, die man sich auch unbedingt als Profi-C-Coder 
angewoehnen sollte:

In diversen usbh_conf.c aus der Abteilung 
Applications/Examples/Demonstrations steht:
1
/* Private variables --------------------------------------------------------- */
2
HCD_HandleTypeDef hhcd;

keine 10 Zeilen weiter dann sowas:
1
void HAL_HCD_MspInit(HCD_HandleTypeDef * hhcd)
2
{

Was natuerlich sinnvollerweise zu einer Warning fuehren kann (und bei 
mir im Gegensatz zur Standardeinstellung in der CubeIDE auch tut):
1
warning: declaration of 'hhcd' shadows a global declaration [-Wshadow]
Und was natuerlich komplett gelogen ist, denn hhcd ist alles, aber keine 
"Private variable", sondern heftigst global(, wie der gcc im Gegensatz 
zum STM32-Coder weiss).
Das wird dann auch im Interrupthandler (10 files weiter und wo ganz wo 
anders) ausgenutzt:
1
void OTG_FS_IRQHandler(void)
2
{
3
  HAL_HCD_IRQHandler(&hhcd);
4
}

Interrupthandler, die mit Argumenten aufgerufen werden muessen. Das nenn 
ich mal ein weiteres innovatives Konzept. Hut ab!

Eieiei...

Gruss
WK

: Bearbeitet durch User
von Hans W. (hanswieland)


Lesenswert?

Schau dir mal den Arduino Core von ST an. Der setzt noch einen drauf (in 
mehrfacher Hinsicht).

von Wastl (hartundweichware)


Lesenswert?

Dergute W. schrieb:
> Eieiei...

Ja, so ein Kackhaufen, hau wech die Scheisse und kauf dir was
Gescheites. Bin gespannt wo und was ....

von Rahul D. (rahul)


Lesenswert?

Wastl schrieb:
> Ja, so ein Kackhaufen, hau wech die Scheisse und kauf dir was
> Gescheites.

ja, das schrieb ich auch schon:
Rahul D. schrieb:
> Keil bietet für sein mdk eine USB-Host-Lib an.
> Kostet zwar was, entspricht aber wohl eher deinem Geschmack.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.