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
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.
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.
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.
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.
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.
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.
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
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.
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
Dergute W. schrieb: > STM32CubeF4 Rant Thread mit Ankündigung. Muss man nicht weiter kommentieren, kann man so stehen lassen.
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
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
Schau dir mal den Arduino Core von ST an. Der setzt noch einen drauf (in mehrfacher Hinsicht).
Dergute W. schrieb: > Eieiei... Ja, so ein Kackhaufen, hau wech die Scheisse und kauf dir was Gescheites. Bin gespannt wo und was ....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.


