Ich kaufte mir das Bundle, weil ich mir erhoffte eine gute Vorstellung des Boards zu bekommen.
Die Enttäuschung nach dem Lesen ist groß!
Der Autor veröffentlicht hier zahlreiche Bücher zu diesem Thema, scheint aber nicht wirklich erfahren zu sein.
Beispiel: Er zeigt ein Beispiel, bei dem dedizier ein Bit in einer Maske gesetzt werden soll. Dabei wählt er nicht einfach einen bitshift, sondern zwei Wege, die maximal umständlich sind: Einmal (Seite 97) wählt er umständliche eine Schleife, bei der eine binäre ‚1‘ schrittweise durch Multiplikation mit 2 nach links geschoben wird. Ja, das funktioniert, aber warum nicht ‘1U << pos‘ gewählt wird, bleibt das Geheimnis von Herrn Ibrahim.
Damit aber nicht genug! Es kommt die Krönung: Er verwendet an andere Stelle für die selbe Aufgabe sogar DOUBLE PRECISION FLOATING POINT Operationen! pow(2, pos)! Meine Güte! Wozu? Wir arbeiten hier mit Integer Arithmetik und id ALU hat doch schon einen Barrell-Shifter, der solche Dinge in nur einem Taktzyklus erledigen! 😩
Zudem strotzen die Codebeispiele nur vor Fehlern!
Meine Güte Leute, wer hat denn das Manuskript nur gegengelesen?! Beispiel: die Operation pow(2, 0x1F080408) (Seite 93 und 95) soll angeblich alle LEDs ausschalten! 2 hoch 0x11F080408 ergibt eine verdammt große Floatingpointzahl. Warum die dann auf einen Ausgabeport angewendet alle LEDs ausschalten sollen, bleibt das Geheimnis des Autors.
Dann In der Tabelle 7.2, Seite 150 ist die erste I2C Adresse mit 0x40 falsch angegeben. Die muss 0x20 lauten…
…doer kommen wir zum Beispiel, bei dem ein Taster abgefragt werden soll (Seite 204.ff). Hier wird auf das wichtige Thema Kontaktprellen gar nicht eingegangen! Der Autor tut so, als ist das Signal eines mechanischen Schalters ideal. Dabei Steuer er sogar mit diesem als Beispiel einen Zähler an. Ich nehme ihm nicht ab, dass der, so wie das Codebeispiel ist, bei jedem Tastendruck um jeweils eins sauber hochgezählt hat.
Warum werden solch wichtige Aspekte in einem LEHRBUCH(!) nicht diskutiert?! Kurzum, dieses Buch strotzt nur so, vor Fehlern und extremen Schlampigkeiten. Man merkt deutlich, dass der Autor alles Andere als gewandt in der Programmiersprache C ist und vor allem er nicht wirklich Embedded Programmierer ist. Da werden teure Modulo Operationen (die implizit Divisionen mit vielen Clock sind) bei Operanden, die Vielfache von 2 hoch n sind, verwendet. (n % 8, n % 4) Warum nicht stattdessen n & 7, n % 3?
Da wird mit float gearbeitet, dann aber teure noble precision Funktionen wie log(n) anstatt logf(n) verwendet… Der Code wirkt unaufgeräumt und auch die Namensvergabe der Variablen folgt überhaupt nicht ihrer Semantik.
Das Buch diskutiert öfter das Szenario, bei dem LEDs, die an einem Port über verschiedene *PINS* angeschlossen sind. Die Pins hinterlegt der Autor in einer Lookup-Table (einem Array von PIN Indices) was eine gute Massnahme ist. ABER, warum nennt er dann dieses Array PORTS und nicht PORT_PINS[]?
Array, (wie diese Lookup-Table) werden nicht als Konstant definiert und belegen später im Datensegment (.data Section) unnötig SRAM Speicher. Warum? const hinzugeschrieben, und die liegen im FLASH!
Ja, das Buch ist mit seinen 371 Seiten imposant ****. Aber ich habe den Eindruck, dass Herr Ibrahim hier oft versucht, Seiten zu schinden. Beispiel: Das Kapitel 3 „Simple Program Examples and Debugging“ (startet bei Seite 43) behandelt bis Seite 67 lediglich Trivialbeispiele, die man auch auf einem PC laufen lassen kann. (Matrix-Multiplikation, Celsius in Fahrenheit umrechnen, diverse „wir erreichen eine simple Tabelle bei der Werte mit einem Faktor multipliziert erden“ oder das prüfen, ob eine Zahl eine Primzahl ist…. Was hat denn das mit dem Board zu tun? Verschwendetes Papier und Lebenszeit fürs Lesen! Wo ist hier der Lektor?
Fazit an potentielle Interessierte: Spart Euch lieber diesen Schinken und kauft Euch das tolle Board ohne ihn hier im Shop. Studiert die Codebeispiele von NXP und lernt so.
Dies war leider das letzte Buch von Herrn Prof. Dr. Dogan Ibrahim, das ich mir antat. Es ist eine große Enttäuschung! Da hilft auch nicht seine vollmundige Aussage hinweg, er habe schon mehr als 60 technische Bücher und weit über 200 technische Artikel verfasst. Der Nutzen ist gering.