Forum: Mikrocontroller und Digitale Elektronik Literaturempfehlung für µC


von Jonas B. (holocron)


Lesenswert?

Hallo,
kommendes Semester muss ich u.a. mit einem µC in einem Projekt arbeiten 
(schwerpunktmäßig embedded systems). Da ich bisher Software nur für den 
PC programmiert hab (Python, C und C++) bzw. meine bisherige 
µC-Erfahrungen "nur" Arduino sind, bin ich momentan auf der Suche nach 
geeigneter Literatur (oder Übungen?). Hat hier jemand Empfehlungen für 
mich?
Zum üben müsste ich ja meinen Arduino nach wie vor verwenden können. 
D.h. natürlich sofern hier Literatur wirklich sinnvoll ist. Die 
Suchfunktion ergab zu ähnlichen Threads eher eine Empfehlung von einem 
Online-Skript und diverser Webseiten.

von Olaf (Gast)


Lesenswert?

> kommendes Semester muss ich u.a. mit einem µC in einem Projekt arbeiten
> (schwerpunktmäßig embedded systems).

Wenn du ein erfahrener Profi waerst ist es natuerlich vollkommen egal 
welchen Mikrocontroller du verwendest weil wir natuerlich innerhalb von 
Stunden oder hoechsten Tagen beliebig die Archtitektur wechseln 
koenntest.

Da du aber noch auf krassem Anfaengerlevel rummachst solltest du 
vielleicht zuerst mal herausfinden welchen Mikrocontroller genau du in 
deinem Projekt verwenden willst. Vielleicht mag es dein Professor ja 
dich mit einem TMS9900 zu belaestigen oder aehnlichem. :-)
Das muss man schon wissen damit man dir irgendetwas empfehlen kann.

Olaf

von Schorschi (Gast)


Lesenswert?

Wenn du mit deinem Arduino lernen willst, kann ich dir folgendes 
empfehlen:

- Das AVR-GCC Tutorial hier vom Forum 
(https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial)
- Die E-Books von Stefan Frings 
(http://stefanfrings.de/mikrocontroller_buch/index.html)
- Das Buch "AVR-Mikrocontroller-Kochbuch" 
(https://www.amazon.com/AVR-Mikrocontroller-Kochbuch/dp/3645651268/ref=sr_1_1?dchild=1&keywords=avr+kochbuch&qid=1594888634&s=books&sr=1-1)

von Adam P. (adamap)


Lesenswert?

Jonas B. schrieb:
> mit einem µC in einem Projekt arbeiten

Meistens bestimmt die Projektgröße bzw. die Leistungsanforderungen den 
µC.

Jonas B. schrieb:
> Zum üben müsste ich ja meinen Arduino nach wie vor verwenden können.

Klar kannst du das machen, vllt. sogar für dein Projekt?!
Sollte es so sein, dass dein µC auf dem Arduino ausreichend ist (für das 
Projekt), du aber nicht mit der Arduino IDE arbeiten solltest/darfst,
dann kannst dir auch das AtmelStudio installieren.

Falls du noch ein bissel Geld in die Hand nimmst, kaufst dir noch ein 
Debugger/Programmer (JTAG, ISP, debugWIRE, ...), das was du für deinen 
µC halt benötigst, bzw. was er unterstützt.
Dann kannst mit dem AtmelStudio eleganter entwickeln, als mit der 
Arduino IDE.

Und dann sind die o.g. Quellen, die Schorschi (Gast) genannt hat ein 
guter Anfang.

: Bearbeitet durch User
von Jonas B. (holocron)


Lesenswert?

Hallo,
sorry das ich mich so spät melde, konnte mich wegen Klausuren und 
Projektabgaben nicht mehr damit auseinandersetzen.

Schorschi schrieb:
> - Das AVR-GCC Tutorial hier vom Forum
> (https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial)
> - Die E-Books von Stefan Frings
> (http://stefanfrings.de/mikrocontroller_buch/index.html)
> - Das Buch "AVR-Mikrocontroller-Kochbuch"
> 
(https://www.amazon.com/AVR-Mikrocontroller-Kochbuch/dp/3645651268/ref=sr_1_1?dchild=1&keywords=avr+kochbuch&qid=1594888634&s=books&sr=1-1)

Danke für die Empfehlungen, das hört sich super an.

Olaf schrieb:
> Da du aber noch auf krassem Anfaengerlevel rummachst solltest du
> vielleicht zuerst mal herausfinden welchen Mikrocontroller genau du in
> deinem Projekt verwenden willst. Vielleicht mag es dein Professor ja
> dich mit einem TMS9900 zu belaestigen oder aehnlichem. :-)
> Das muss man schon wissen damit man dir irgendetwas empfehlen kann.

Ich hab jetzt zwecks Übungen von einem Freund einen atmega328p bekommen.

Adam P. schrieb:
> Falls du noch ein bissel Geld in die Hand nimmst, kaufst dir noch ein
> Debugger/Programmer (JTAG, ISP, debugWIRE, ...), das was du für deinen
> µC halt benötigst, bzw. was er unterstützt.
> Dann kannst mit dem AtmelStudio eleganter entwickeln, als mit der
> Arduino IDE.

Aber AtmelStudio gibt's ja für Linux leider gar nicht, daher kann ich 
das nicht nutzen. Ich dachte daher wie in C/C++ über ein Makefile und in 
clion zu arbeiten, würde das sinnvoll funktionieren? Nur beim Makefile 
bin ich mir unsicher wie ich das erstelle, das scheint ja stark anders 
als das für "PC-Software" zu sein.

Adam P. schrieb:
> Klar kannst du das machen, vllt. sogar für dein Projekt?!

Für das Projekt soll ich einen Teensy verwenden denke ich (zumindest für 
einen Prototypen).

: Bearbeitet durch User
Beitrag #6386325 wurde vom Autor gelöscht.
von MaWin (Gast)


Lesenswert?

Jonas B. schrieb:
> kommendes Semester muss ich u.a. mit einem µC in einem Projekt arbeiten

Tja, kommt ein wenig auf's Modell an.

Für den 68HC05 und auch allgemein nützlich:
http://www.nxp.com/assets/documents/data/en/reference-manuals/M68HC05TB.pdf

von Frank (Gast)


Lesenswert?

Olaf schrieb:
> Vielleicht mag es dein Professor ja dich mit einem TMS9900 zu
> belaestigen oder aehnlichem. :-)

Der hat damals im Ti99/4 richtig gute Arbeit geleistet. Die meisten 
Profs verstehen unter "moderner Architektur" allerdings eher was 
8051artiges...

von Olaf (Gast)


Lesenswert?

> Aber AtmelStudio gibt's ja für Linux leider gar nicht, daher kann
> ich das nicht nutzen.

Das macht nichts...

> Ich dachte daher wie in C/C++ über ein Makefile und in
> clion zu arbeiten, würde das sinnvoll funktionieren?

Kein Problem. Installier dir einen Compiler und alles wird gut.
Allerdings solltest du ueberlegen wie du dein Programm in den 
Mikrocontroller bringst. Gerade als jemand der anfaengt und lernt wuerde 
ich dringenst empfehlen darauf zu achten das du einen Debugger verwenden 
kannst.
Es ist zum Verstaendnis extrem vorteilhaft wenn du im Singlestep durch 
dein Programm gehen kannst und dabei mal einen Blick auf 
Variableninhalten zu werfen. Da gibt es manchmal interessante 
Unterschiede zwischen Glaube und Realitaet. :-)
Jetzt hab ich aber leider keine Ahnung wie die AVR Unterstuetzung unter 
Linux so ist wenn du nicht nur flashen willst!


Ich wuerde dir eher was anderes empfehlen. Besorg dir irgendein 
Demoboard von ST. Je nach Board bist du da mit 10 bis 20Euro dabei. Auf 
dem Board befindet sich gleich ein Debugger. Der ist ST-Kompatible. Das 
ist doof.
Deshalb schaust du mal hier:

https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/

Damit kannst du dann aus dem Debugger auf dem Board einen Jlink machen.
Danach hast du unter Linux keine Probleme mehr, alles funktioniert, es 
gibt bergeweise Anleitungen im Internet die dir den Umgang damit zeigen. 
Debugger geht und Segger hat auch ganz brauchbare PDFs welche die 
Feinheiten erklaeren. Du kannst den Debugger von diesen Boards sogar 
abbrechen und dann mit eigenen Boards nutzen. Ich glaube aber nur mit 
Controllern von ST.
Und das alles fuer 10Euro!



> Der hat damals im Ti99/4 richtig gute Arbeit geleistet.

Das stimmt nicht. Der war grottenlahm weil er die Register im Ram hatte. 
.-)

Aber waer ich Professor wuerde ich einen moeglichst exotischen Core 
waehlen damit die Burschen nicht immer alles abschreiben und weniger 
Leute strammstehen muessten weil ich ihren Source im Internet 
wiederfinde. :-)

Olaf

von J-Link (Gast)


Lesenswert?

Olaf schrieb:
> Du kannst den Debugger von diesen Boards sogar
> abbrechen und dann mit eigenen Boards nutzen. Ich glaube aber nur mit
> Controllern von ST.

Nicht nur das, sondern auch folgende Einschränkung:
"Only debugging on evaluation boards is allowed. Debugging on custom 
hardware is not supported and not allowed"
Das macht es zumindest für mich komplett nutzlos. Wenn man sich an die 
Lizensbedingungen halten will bleibt man wohl lieber bei der normalen 
ST-Link Firmware.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

J-Link schrieb:
> Das macht es zumindest für mich komplett nutzlos. Wenn man sich an die
> Lizenzbedingungen halten will bleibt man wohl lieber bei der normalen
> ST-Link Firmware.

Oder man kauft sich einfach einen J-Link EDU:
https://www.segger.com/products/debug-probes/j-link/models/j-link-edu/

Olaf schrieb:
>> Der hat damals im Ti99/4 richtig gute Arbeit geleistet.
Das war mein erster Rechner als ich so 8 Jahre alt war ;-).
https://en.wikipedia.org/wiki/Texas_Instruments_TI-99/4A

War ich damals happy als ich einen Kassettenrekorder bekam um meine 
Programme auf Musikkassette speichern zu können :-). Der Rechner steht 
noch immer bei mir im Keller. Ob er nach über 30 Jahren noch 
funktioniert?

von Sebastian S. (amateur)


Lesenswert?

Es gibt zwar ein paar prozessortypische Eigenheiten, aber im Großen und 
Ganzen wirst Du in dem Bereich fast nur C (ohne ++) programmieren. Ist 
eine Resourcenfrage.
Interessanterweise ist C/C++ bei uns (UNI) bereits eine aussterbende 
Kunst. "Es gibt ja so viele, viel leistungsfähigere, Alternativen".

Bei den größeren Systemen (Himbeere und Konsorten) kannst Du oft Deine 
Lieblingssprache benutzen. Hier sind die Resourcen aber auch 
beträchtlich größer.
Im Gegenteil: Oft kommst Du schon kaum noch an die Hardware heran. Alles 
in Treibern versteckt und hinter Zugriffsrechten.

Auch bei der normalen "Lehre/Leere" werden die binären Operationen oft 
vernachlässigt. Da solltest Du mal dringend reinschauen.

: Bearbeitet durch User
von Jonas B. (holocron)


Lesenswert?

Sebastian S. schrieb:
> Es gibt zwar ein paar prozessortypische Eigenheiten, aber im Großen und
> Ganzen wirst Du in dem Bereich fast nur C (ohne ++) programmieren. Ist
> eine Resourcenfrage.
> Interessanterweise ist C/C++ bei uns (UNI) bereits eine aussterbende
> Kunst. "Es gibt ja so viele, viel leistungsfähigere, Alternativen".

Wir hatten sowohl die C als auch C++ Vorlesung. Aber C hab ich bisher 
auch noch nicht wirklich auf Register-Ebene programmiert, das ist also 
Neuland für mich (bisher auch nur die reine Software für den PC 
Richtung).

Olaf schrieb:
> Ich wuerde dir eher was anderes empfehlen. Besorg dir irgendein
> Demoboard von ST. Je nach Board bist du da mit 10 bis 20Euro dabei. Auf
> dem Board befindet sich gleich ein Debugger. Der ist ST-Kompatible. Das
> ist doof.
> Deshalb schaust du mal hier:
>
> 
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/

Der Debugger bzw. geschickte Link ist sowas wie ein JTAG, oder? Kann ich 
nicht die gewohnten Debugger (gdb usw.) am PC verwenden?

Ich hab im Internet leider nichts gefunden, wo kauft man denn Demoboard 
von ST?

Til S. schrieb:
> Oder man kauft sich einfach einen J-Link EDU:
> https://www.segger.com/products/debug-probes/j-link/models/j-link-edu/
Der scheint aber recht teuer zu sein.

von Johannes S. (Gast)


Lesenswert?

Jonas B. schrieb:
> Kann ich nicht die gewohnten Debugger (gdb usw.) am PC verwenden?

Der gdb wird meistens auch für die μC verwendet, STLink und Co. sind 
dabei die Brücke zum Controller. Die Cortex-M kommen mit SWD aus, hat 
weniger Leitungen als JTAG.

von Olaf (Gast)


Lesenswert?

> Kann ich nicht die gewohnten Debugger (gdb usw.) am PC verwenden?

Du kannst gdb verwenden, aber gdb braucht ja irgendwie Zugriff auf die
Hardware. Diese Hardware nett man auch gerne "Debugger". Eine relativ
verbreitete Version davon ist der J-Link von Segger. Das Teil ist 
zumindest
in Deutschland relativ verbreitet. Es gibt aber auch welche von anderen 
Firmen.
Es gibt manchmal auch spezielle Teile die ausschliesslich vom Hersteller 
des Mikrocontrollers stammen. Das war frueher ueblicher.

Diese Debugger benutzen irgendeine synchrone oder asynchrone serielle 
Schnittstelle um mit dem Controller zu reden. JTAG ist eine, SWD eine 
andere. Das ist aber nicht so einfach wie du dir das vorstellst weil die 
Hersteller manchmal noch lustige Erschwernisse in ihre Microcontroller 
einbauen. Z.b ICE von TI. Aber irgendwie muss der arme Till ja seine 
Broetchen verdienen.

Das kann die aber egal sein. Wichtig ist nur das der DEbugger deinen 
speziellen Microcontroller unterstuetzt. Deshalb erfahren die auch 
oefters mal ein Firmwareupdate um die neusten Typen da reinzubringen.

Traditionell waren diese Teile sehr teuer. Auch ein voll ausgestatter 
J-Link kann zwischen 600 und 2000Euro kosten. Als aber Segger irgendwann 
merkte das in China die Fliessbaender ganz viele sehr kompatible Clone 
fuer 10Euro herstellten gab es ploetzlich den J-Link EDU. Und als 
mancher Hersteller von Mikrocontroller merkte das es ganz schoen 
kompliziert sein kann einen zuverlaessigen Debugger fuer ihre eigenen 
Controller zu bauen kam es zu der bemerkenswerten Kolaboration zwischen 
diesen Herstellern und Segger. Soweit mal eine unabhaengige 
Zusammenfassung der letzten 20Jahre. :-D

Im Bastlerbereich gibt es auch viele Tools die konnten oft nur flashen, 
aber nicht debuggen. Manche konnten auch debuggen, waren aber dafuer 
etwas unzuverlaessig oder kompliziert in coole Oberflaechen zu 
integrieren.
Deshalb mein Tip, gerade als Anfaenger nimm einen Jlink, egal ob als EDU 
oder
auf einem Board integriert. Das erspart dir viel Stress!

> Ich hab im Internet leider nichts gefunden, wo kauft man denn Demoboard
> von ST?

Ueberrall? Kann ich dir gar nicht so genau sagen. Als Ingenieur musst du 
die
nicht kaufen, Firmen bewerfen dich einfach damit wenn du nicht aufpasst.
Amazon hat aber Dutzende von Anbietern. Ebay sicher auch. Reichelt auch. 
Also doch ueberrall. :-)

Olaf

von Olaf (Gast)


Lesenswert?

> Programme auf Musikkassette speichern zu können :-). Der Rechner steht
> noch immer bei mir im Keller. Ob er nach über 30 Jahren noch
> funktioniert?

Finde es heraus in dem du Unterstuetzung fuer die CPU in den Segger 
einbaust. Ich hab hier noch drei TMS9900 rumliegen falls ich in 20Jahren 
mal Rentner werde und mich langweile. Da waere es dann vielleicht gut 
die debuggen zu koennen. :-D

Olaf

von Jonas B. (holocron)


Lesenswert?


von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Jonas B. schrieb:
>> Oder man kauft sich einfach einen J-Link EDU:
>> https://www.segger.com/products/debug-probes/j-link/models/j-link-edu/
> Der scheint aber recht teuer zu sein.
Der J-Link EDU kostet ~60 Euro:
https://www.ak-modul-bus.de/cgi-bin/iboshop.cgi?showdsearchj-link+edu:11111100!0,690731434725534,J-Link_EDU


Olaf schrieb:
> Aber irgendwie muss der arme Til ja seine Brötchen verdienen.
Die verdiene ich nicht mit dem J-Link...oder sollte ich mal anfangen 
embOS Lizenzgebühren von den J-Link Kollegen zu fordern ;-).

Olaf schrieb:
> Als aber Segger irgendwann
> merkte das in China die Fliessbaender ganz viele sehr kompatible Clone
> fuer 10Euro herstellten gab es ploetzlich den J-Link EDU.

Nope, China Clones gibt es schon sehr viel länger als den J-Link EDU. 
Den J-Link EDU gibt es einfach damit im nicht kommerziellen Bereich mit 
professionellen Tools gearbeitet werden kann. Ist aber natürlich auch 
Marketing weil die Tools dann im kommerziellen Umfeld gekauft werden 
wenn man sie z.B. schon im Studium kennen gelernt hat. Und im 
kommerziellen Bereich hilft dir weder ein illegaler Clone noch ein 
J-Link EDU.

Olaf schrieb:
> Finde es heraus in dem du Unterstuetzung fuer die CPU in den Segger
> einbaust. Ich hab hier noch drei TMS9900 rumliegen falls ich in 20Jahren
> mal Rentner werde und mich langweile. Da waere es dann vielleicht gut
> die debuggen zu koennen. :-D
Oder ich stöpsel, wenn ich in Rente bin, den Rechner einfach mal an die 
Steckdose und schaue was passiert...das dauert aber noch ~26 Jahre ;-).

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.