Forum: Ausbildung, Studium & Beruf Gute Bücher für den Einstieg als Embedded Entwickler


von Matthias Z. (mattox)


Lesenswert?

Hallo,

ich befinde mich gerade im Semester 4 (fast 5) im Bachelor Informatik an 
einer FH. Ich möchte mich im Bereich Embedded Systems spezialisieren und 
habe ab dem 1. August mein erstes Praktikum in der automotive Branche. 
Dort werde ich Systemnahe SW programmieren und auch (natürlich) mit der 
HW in Verbindung kommen. Der Schwerpunkt liegt aber auf der SW 
Programmierung.


Nun möchte ich meine C Kenntnisse verbessern und nochmal mein 
Rechnerarchitektur-Wissen auffrischen. (Theoretische) Erfahrung mit 
Betriebssystemen und Rechnerarchitektur konnte ich bereits während 
meines Studiums sammeln. Ich habe mir einenen Mikroprozssor mit ARM 
Cortex M4 Architektur gekauft und bin nun dabei damit etwas 
rumzuspielen.

Zur eigenetlichen Fragen *(tl;dr)*:
Welche Bücher könnt ihr mir empfehlen um mein 
Mikroprozessortechnik/Betriebssysteme Wissen aufzufrischen oder zu 
erweitern? Wäre super wenn die Bücher sich auf ARM Cortex M4 beziehen, 
ist aber nur optional.

Vielen Dank!

von H05 (Gast)


Lesenswert?

Das beste Buch ist meiner Meinung nach immer das Datenblatt des 
Prozessors, Evalboard whatever selbst. Da steht eigentlich alles drin 
was Du wissen musst.

von Matthias Z. (mattox)


Lesenswert?

H05 schrieb:
> Das beste Buch ist meiner Meinung nach immer das Datenblatt des
> Prozessors, Evalboard whatever selbst. Da steht eigentlich alles drin
> was Du wissen musst.

Das stimmt wohl ;) trotzdessen würde es mich interessieren ob mir jemand 
abseits davon noch ein Buch empfehlen kann auf das er/sie zurückgreift 
oder das im Selbststudium geholfen hat.

von Ingenieur (Gast)


Lesenswert?

Matthias Z. schrieb:
> Das stimmt wohl ;) trotzdessen würde es mich interessieren ob mir jemand
> abseits davon noch ein Buch empfehlen kann auf das er/sie zurückgreift
> oder das im Selbststudium geholfen hat.

Nein, keine Buchempfehlung. Mach dich nicht verrückt und geh dein 
Praktikum locker an, sei motiviert und interessiert, stelle kluge 
Fragen, aber nerve deine Praktikumsbetreuer nicht.

von Kloppo's Barbier (Gast)


Lesenswert?

Matthias Z. schrieb:
> Nun möchte ich meine C Kenntnisse verbessern und nochmal mein

man gcc

von Interpretationskonventionen und Semiose (Gast)


Lesenswert?

Matthias Z. schrieb:
> Dort werde ich Systemnahe SW programmieren und auch (natürlich) mit der
> HW in Verbindung kommen. Der Schwerpunkt liegt aber auf der SW
> Programmierung.
>
> Nun möchte ich meine C Kenntnisse verbessern und nochmal mein
> Rechnerarchitektur-Wissen auffrischen.

Streiche C, was du brauchst ist ein grundsätzliches Verständniss von 
Embedded System. mit dem Fokus auf eine Programmiersprache besteht das 
hohe Risiko das du Dich in "syntaktischen Zucker" und anderen 
Nebensächlichkeiten verlierst.

Empfehlung:
ISBN-13: 9783898646383     ,
ISBN-13: 978-1856176057 (starker Focus auf FPGA7ASIC u.ä.)
ISBN-13: 978-3864901430  (auch im embedded spielen HighLevel_OS wie 
Linux eine grosse Rolle)

von Dr. Sommer (Gast)


Lesenswert?

Interpretationskonventionen und Semiose schrieb:
> Streiche C

Naja, für effektive Embedded-Programmierung auf Mikrocontrollern sollte 
man sich gut mit C auskennen. Aber einfach nur die GCC-Spezifika zu 
lesen ist auch keine gute Idee, denn was macht man wenn man mit dem 
ARMCC arbeiten muss?

Kloppo's Barbier schrieb:
> man gcc

Daher: Mit einem normalen C-Buch standardkonformes C auf dem PC lernen. 
Wenn man das beherrscht, funktioniert das zu großen Teilen auch auf µCs, 
und man hat eine große Problemquelle abgedeckt. Dann kann man sich mit 
den Details von Mikrocontrollern beschäftigen.

von Matthias Z. (mattox)


Lesenswert?

> Streiche C, was du brauchst ist ein grundsätzliches Verständniss von
> Embedded System. mit dem Fokus auf eine Programmiersprache besteht das
> hohe Risiko das du Dich in "syntaktischen Zucker" und anderen
> Nebensächlichkeiten verlierst.
>
> Empfehlung:
> ISBN-13: 9783898646383     ,
> ISBN-13: 978-1856176057 (starker Focus auf FPGA7ASIC u.ä.)
> ISBN-13: 978-3864901430  (auch im embedded spielen HighLevel_OS wie
> Linux eine grosse Rolle)

Vielen Dank für den Tipp!

von Interpretationskonventionen und Semiose (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Daher: Mit einem normalen C-Buch standardkonformes C auf dem PC lernen.
> Wenn man das beherrscht, funktioniert das zu großen Teilen auch auf µCs,

/Zynismus on
Klar weil hello World, bubble sort, GUI aufsetzen,  und sonstige PC-C 
programmiertaktate super relevant für Kaffemaschinensteuerung und andere 
Embedded Applikationen sind ...
/Zynismus off

Neee, ein Buch "C auf dem PC" für Embedded Programmierung zu verwenden 
ist eine Scheiss-Idee. Insbesonders bei den Unmengen 
Controller-Programmierung büchern und erst recht für cand. inf. im 4. 
semester.

von Dr. Sommer (Gast)


Lesenswert?

Interpretationskonventionen und Semiose schrieb:
> hello World

Kommt immer am Anfang.

Interpretationskonventionen und Semiose schrieb:
> bubble sort,

Algorithmen gibt's überall.

Interpretationskonventionen und Semiose schrieb:
> GUI aufsetzen

Kommt in den wenigsten C-Büchern vor. Ist nämlich nicht Teil von C.

Interpretationskonventionen und Semiose schrieb:
> und sonstige PC-C
> programmiertaktate super relevant für Kaffemaschinensteuerung und andere
> Embedded Applikationen sind ...

Ja, die ganzen fiesen Details der Speicherverwaltung & Co lernt man 
besser am PC, wo man komfortable Debugger hat.

Wenn man direkt mit "C auf uC" anfängt, hat man 3 Baustellen 
gleichzeitig: Hardware-Drumherum, der Mikrocontroller selbst und die 
Programmiersprache. Da ist es besser, wenn man in der Programmiersprache 
sattelfest ist.

Interpretationskonventionen und Semiose schrieb:
> und erst recht für cand. inf. im 4.
> semester.

An vielen Hochschulen wird kein C gelehrt - aus gutem Grund, sofern man 
kein Embedded macht.

von Interpretationskonventionen und Semiose (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Interpretationskonventionen und Semiose schrieb:
>> hello World
>
> Kommt immer am Anfang.

Nope, nur dort wo es stdio.h hat.

>Interpretationskonventionen und Semiose schrieb:
>> bubble sort,
>Algorithmen gibt's überall.

Nope, speicherintensive Algos nur dort wo es intensiv speicher hat. Und 
im Embedded geht es selten ums sortieren von Datensätzen, weil es diese 
Datensätze in einer Kaffeemaschine nicht gibt.

>Interpretationskonventionen und Semiose schrieb:
>> GUI aufsetzen

>Kommt in den wenigsten C-Büchern vor. Ist nämlich nicht Teil von C.
Kommt in dem meisten PC-C Büchern vor, insbesonders wenn es um microsoft 
studio und geschiss geht. Weil heutzutage ist GUI-Programmierung Teil 
der PC-programmierung. Aber die wenigsten embedded Anwendungen benötigen 
eine GUI.

>Ja, die ganzen fiesen Details der Speicherverwaltung & Co lernt man
>besser am PC, wo man komfortable Debugger hat.

Oder man nimmt eine dem single purpose/task einer Embedded App 
genügenden Speicherverwaltung und spart sich die Details - "Keep it 
simple, Stupid!"

von Walter T. (nicolas)


Lesenswert?

"The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors" von 
Joseph Yiu in der 4. Auflage. Wenn man die 3. Auflage gelesen hat, meint 
man zwar, daran gäbe es wenig zu verbessern - aber er hat es geschafft.

von Dr. Sommer (Gast)


Lesenswert?

Interpretationskonventionen und Semiose schrieb:
> Nope, nur dort wo es stdio.h hat.

Hat es auf Cortex-M mit Semihosting oder SWO.

Interpretationskonventionen und Semiose schrieb:
> Nope, speicherintensive Algos nur dort wo es intensiv speicher hat

Bubblesort ist unter den Sortieralgorithmen minimal speicherintensiv.

Interpretationskonventionen und Semiose schrieb:
> Und
> im Embedded geht es selten ums sortieren von Datensätzen, weil es diese
> Datensätze in einer Kaffeemaschine nicht gibt.

Bubblesort & Co wird nicht gelehrt, damit man das produktiv so einsetzt, 
sondern damit man ein Gefühl für Algorithmen und Komplexität entwickelt. 
In der Praxis sortiert man sowieso mit qsort(). Komplexität ist gerade 
bei Embedded wichtig, wo Leistung knapp ist. Daher ist das schon ok.

Interpretationskonventionen und Semiose schrieb:
> Kommt in dem meisten PC-C Büchern vor, insbesonders wenn es um microsoft
> studio und geschiss geht.

Meinst du Visual C? Damit man keiner mehr GUIs. Wenn schon in C++, worum 
es hier nicht geht. Außerdem ist es erlaubt, die entsprechenden Kapitel 
zu überspringen oder ein Buch ohne GUI-Programmierung zu wählen. 
Außerdem sprach ich von Standard-C - das kennt keine GUI.

Interpretationskonventionen und Semiose schrieb:
> Oder man nimmt eine dem single purpose/task einer Embedded App
> genügenden Speicherverwaltung

Ja, aber dazu muss man erstmal verstehen, was Stack, Heap, Automatic 
Storage, Zeiger usw sind! Damit haben Anfänger erfahrungsgemäß viele 
Probleme. Das muss man nicht alles auf dem Controller austüfteln.

von Walter T. (nicolas)


Lesenswert?

Walter T. schrieb:
> n der 4. Auflage. Wenn man die 3. Auflage

Korrektur: die 3. ist die aktuelle Auflage, die 2., die als PDF im Netz 
herumgeistert.

von Interpretationskonventionen und Semiose (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Ja, aber dazu muss man erstmal verstehen, was Stack, Heap, Automatic
> Storage, Zeiger usw sind! Damit haben Anfänger erfahrungsgemäß viele
> Probleme. Das muss man nicht alles auf dem Controller austüfteln.

Dazu braucht es aber kein C oder gar PC-C buch sondern einen Grundkurs 
an Hardwarearchitektur. Das hat der TO ja auch erkannt.

von Dr. Sommer (Gast)


Lesenswert?

Interpretationskonventionen und Semiose schrieb:
> Dazu braucht es aber kein C oder gar PC-C buch sondern einen Grundkurs
> an Hardwarearchitektur.

C abstrahiert/generalisiert aber die Hardware und bietet eine andere 
Sichtweise. Wenn man mit C arbeitet, sollte man die C-Sichtweise kennen, 
welche in C-Büchern gelehrt wird.

von H05vv (Gast)


Lesenswert?

Matthias Z. schrieb:
> Nun möchte ich meine C Kenntnisse verbessern und nochmal mein
> Rechnerarchitektur-Wissen auffrischen. (Theoretische) Erfahrung mit
> Betriebssystemen und Rechnerarchitektur konnte ich bereits während
> meines Studiums sammeln. Ich habe mir einenen Mikroprozssor mit ARM
> Cortex M4 Architektur gekauft und bin nun dabei damit etwas
> rumzuspielen.

Datenblätter zu Hand nehmen und sich mal mit den Standardsachen wie 
Timer, Interrupts beschäftigen. Auch mal mit dem ADC getaktet ein paar 
Werte erfassen, vielleicht eine NF- aus einem Cd-Spieler etc., dann 
einen Tiefpassfilter über die Werte jagen (Pointer-Arithmetik!) und auf 
dem DAC wieder ausgeben. Das ganze dann mal in einem Oszi anschauen. 
Eventuell mal ein Display an den STM32 hängen und eine FFT darauf 
zeichnen. Auf der anderen Seite kann man auch mal einen PID auf dem 
STM32 implementieren.  Wenn Du das alles durch hast, dann bist Du 
eigentlich gut gerüstet für Aufgaben in einem Praktikum.

von Interpretationskonventionen und Semiose (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Interpretationskonventionen und Semiose schrieb:
>> Dazu braucht es aber kein C oder gar PC-C buch sondern einen Grundkurs
>> an Hardwarearchitektur.
>
> C abstrahiert/generalisiert aber die Hardware und bietet eine andere
> Sichtweise. Wenn man mit C arbeitet, sollte man die C-Sichtweise kennen,
> welche in C-Büchern gelehrt wird.

Diese in den C-PC propagierte "andere" Sichtweise lenkt aber von einer 
im embedded Bereich hilfreichen weil zweckgerichteten Vorgehensweise ab. 
Deshalb nochmals:

" ein Buch "C auf dem PC" für Embedded Programmierung zu verwenden
ist eine Scheiss-Idee."

Und Basta!

von Dr. Sommer (Gast)


Lesenswert?

Interpretationskonventionen und Semiose schrieb:
> Diese in den C-PC propagierte "andere" Sichtweise lenkt aber von einer
> im embedded Bereich hilfreichen weil zweckgerichteten Vorgehensweise ab.

Wenn man C die hardwarenahe controllerspezifische Sichtweise aufzwängen 
will, wird der Compiler(Optimizer) einem einen Strich durch die Rechnung 
machen. z.B. durch strict aliasing.

Interpretationskonventionen und Semiose schrieb:
> " ein Buch "C auf dem PC" für Embedded Programmierung zu verwenden
> ist eine Scheiss-Idee."

Ohne C-Kenntnisse direkt mit einem Controller rumzufrickeln und 
irgendwie aus der Hardware/Assembler-Sicht auf C-Programme zu schließen 
ist eine schlechte Idee. Da kommen unportable, instabile und unwartbare 
Programme raus. Wenn man in der Lage ist, in Standard-C korrekte 
Programme zu schreiben, funktionieren die auf allen Plattformen. 
Sinnlos, sich mental so auf eine Plattform einzuschießen.

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.