Forum: Mikrocontroller und Digitale Elektronik Literatur Funktionsweise uC & uP


von Mirco G. (mirco432)


Lesenswert?

Guten Tag!

Da mir bei meinem aktuellen Projekt aufgefallen ist das mir doch einiges 
an Grundwissen zur Funktionsweise v. uC und uP fehlt wollte ich mal 
fragen ob mir jemand Literatur empfehlen kann.

Habe jetzt schon 2h im Internet gesucht aber etwas richtig knackiges 
konnte ich nicht finden.

Muss jetzt auch nicht total ins Detail gehen. Also ich muss jetzt nicht 
wissen wie ein Flip-Flop genau funktioniert. Die grobe Funktionsweise v. 
uC/uP sollte aber schon erklärt werden. Also zum Beispiel CPU, ALU, 
Adressbus, Datenbus, Takt usw.

Cool wären natürlich auch Beispiele. Was genau macht der uP/uC zum 
Beispiel bei einem Zeigezugriff. ... Andere klassische c Befehle wären 
auf Prozessorebene natürlich auch interessant. Was zum Beispiel macht 
der Prozessor genau wenn ich ne variable Anlege.  Grob weiß ich es 
glaube ich... :D. Aber es wäre schön dafür ein gescheites Buch zu finden 
in dem man bei Bedarf mal nachschlagen kann.

Darf auch ruhig ein paar Euro kosten!

Vielen Dank

Mirco

Beitrag #5851231 wurde von einem Moderator gelöscht.
von Karl M. (Gast)


Lesenswert?

Hallo,

Der Autor Stefan Frings hat dir hier eine Online-Buch geschrieben:

http://stefanfrings.de/

Wenn Du das alles weist, dann geht's weiter.

von Olaf (Gast)


Lesenswert?

> Habe jetzt schon 2h im Internet gesucht aber etwas richtig knackiges
> konnte ich nicht finden.

Probier es mal mit "Buch 1.0"!
Zum Beispiel gibt ist im aktuellen Horrowitz&Hill ein ganzes Kapitel 
darueber. Ausserdem enthaelt das Buch noch mehr das man alles wissen 
sollte wenn man mit Elektronik anfangen will.

Olaf

von Peter D. (peda)


Lesenswert?

Mirco G. schrieb:
> Was genau macht der uP/uC zum
> Beispiel bei einem Zeigezugriff.

Zeiger kennt der MC nicht, er kennt nur Befehle für indirekte 
Adressierung.
Wie Zeiger und Variablen verwaltet werden, ist die Aufgabe des 
C-Compilers/Linkers und nicht des MC.
Wie Compiler intern aufgebaut sind, ist nicht so einfach zu verstehen, 
da muß man schon Assemblerexperte sein. Du kannst Dir ja mal das 
Assemblerlisting des erzeugten Codes ausgeben lassen.

von Einer K. (Gast)


Lesenswert?

Mirco G. schrieb:
> Was zum Beispiel macht
> der Prozessor genau wenn ich ne variable Anlege.  Grob weiß ich es
> glaube ich... :D

Wenn du dich da mal nicht täuscht....
Der Zielprozessor macht nichts.
Es ist der Hostprozessor/Compiler welcher darauf hin Code generiert.

von µC Nutzer (Gast)


Lesenswert?

Hallo

es ist tatsächlich gar nicht so einfach eine gute Beschreibung dazu zu 
finden.

Entweder viel zu Detailliert und auf sehr hohen Niveau oder halt extrem 
Oberflächlich und (zu) sehr vereinfacht.

Eine der besten Erklärungen wie ein  µC im Innern arbeitet habe ich hier 
gefunden:
https://www.amazon.de/Arduino-Elektronik-Programmierung-Benjamin-Kappel/dp/3836236486

Allerdings halt nur über zwei Seiten - nur dafür lohnt es sich nicht das 
ganze Buch zu kaufen.
Also in deiner Bibliothek einfach mal ausleihen, oder online schauen ob 
die relevanten Seiten irgendwo online gesichert wurden.

µC Nutzer

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Peter D. schrieb:
> Wie Compiler intern aufgebaut sind, ist nicht so einfach zu verstehen,
> da muß man schon Assemblerexperte sein.

Naja, der ganze Themenkomplex "Compilerbau" ist erst mal ... recht 
komplex. Parsen, syntaktische Analyse, semantische Analyse, Zwischencode 
etc. Um also zu verstehen, wie ein "Compiler intern_ _aufgebaut ist", 
braucht es keine Assembler-Kenntnisse.

(Genausowenig braucht es Assembler-Kenntnisse, um einen 
Sortieralgorithmus zu beschreiben bzw. zu verstehen.)

Gib in Google (oder eine Suchmaschine deiner Wahl)  einfach mal 
"Compilerbau" ein, und lies dich durch die ersten 10 Links hindurch, 
z.B.

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwiKmpSiyK7iAhVOqaQKHQ7mDVIQFjABegQIBxAC&url=https%3A%2F%2Fwww.tu-braunschweig.de%2FMedien-DB%2Fips%2Fcp.pdf&usg=AOvVaw0mqradVMBkJi27Klkx7vdN

von Erich (Gast)


Lesenswert?

GOOGLE Suche:
compare "microprocessor" vs "microcontroller" example "address bus" 
"data bus"

Vereinfach gesagt ist ein uP "nur" die Rechen- und Steuerungseinheit,
während ein uC etliche (oder viele) Peripherie-Einheiten und Speicher 
beinhält.
Beim klassischen uP (wie dem Z80) sind nach aussen geführt: Adressbus, 
Datenbus und Steuerbus. Intern ist kein Speicher vorhanden, abgesehen 
von den Arbeitsregistern.
Ein uC (wie 8051, PIC, etc.) sind dagegen quasi "Komplettsysteme". Hier 
sind nicht die Bussignale nach aussen geführt, sondern direkt die 
Schnittstellen wie parallel und serielle, Timer und Zähler Ein- und 
Ausgänge usw.

Gruss

von Einer K. (Gast)


Lesenswert?

Mirco G. schrieb:
> uC und uP
Was denn nun?

Dann eben ein µP


Hier mal der gute alte Z80.....
http://www.z80.info/

Nicht weil er sonderlich modern ist, aber seit dem hat sich an den 
Prinzipien "wenig" geändert. So wenig, dass Zeiger immer noch Zeiger 
sind.

Ins besondere dieses Buch handelt die Grundlagen ab:
http://www.z80.info/zip/zaks_book.pdf


-----

von µC Nutzer (Gast)


Lesenswert?

Hallo

auch wenn im µC Bereich sehr viel auf der englischen Sprache basiert, 
bedeutet das nicht das englischsprachige Bücher bzw. Onlineauftritte das 
Verständnis dazu vereinfachen...
Gerade Anfänger die etwas tiefer einsteigen möchten und (wie zu 
vermuten) Hobbyisten oder einfach nur Interessierte sollte so ein 
komplexes, was aber nicht unbedingt kompliziert bedeuten muss,Thema 
nicht unbedingt in einer Fremdsprache erlernen müssen - das englisch was 
nun mal die meisten so einigermaßen beherrschen reicht leider oft nicht 
aus um das doch etwas "verwirrende" Konzept wirklich zu verstehen wie 
ein µC funktioniert.
Schon in Deutsch braucht es eine gute Beschreibung und aktives 
Mitdenken, manchmal auch eigene Skizzen und  Vergleiche im Kopf auch 
ohne das man sich noch Gedanken über genaue Wortbedeutung spezieller 
Begriffe in einer Fremdsprache macht.

Ob es da wirklich englischsprachige Quellen sein müssen?
Ich denke das diese erst sinnvoll sind wenn man dann wirlich ein 
tieferes Verständnis der Materie hat, oder wirklich gut Englisch kann 
(und das können wenn man ehrlich zu sich selbst bist nur die wenigsten - 
irgend eine englischsprachige Onlineseite in etwa zu verstehen bedeutet 
eben nicht das man wirklich gut englisch beherrscht...)

µC Nutzer

von Einer K. (Gast)


Lesenswert?

µC Nutzer schrieb:
> auch wenn im µC Bereich sehr viel auf der englischen Sprache basiert,
> bedeutet das nicht das englischsprachige Bücher bzw. Onlineauftritte das
> Verständnis dazu vereinfachen...

Möglich dass du Probleme hast, englischsprachige Texte zu verstehen.....
Aber was haben deine Einschränkungen mit dem TO zu tun?


Am Rande:
Wer kein Englisch lesen kann, hat in der EDV Welt verschissen.
Hört sich brutal an, ist aber so.

von Olaf (Gast)


Lesenswert?

> Wer kein Englisch lesen kann, hat in der EDV Welt verschissen.
> Hört sich brutal an, ist aber so.

Zumindest in der deutschsprachigen. Zumindest in Japan und China wird 
alles uebersetzt weil es normal ist das Ingenieure zwar einmal den TOEFL 
vor dem Studium bestanden haben, aber echte englische Sprachkenntnisse 
haben da nur eine kleine Minderheit.

Olaf

von Einer K. (Gast)


Lesenswert?

Olaf schrieb:
> und China

Eigentlich ist es noch schlimmer(?).....

Mittlerweile gibt es für einige Chips/Bauteile nur noch Chinesische 
Datenblätter.
Ich befürchte, dass sich der Trend noch verstärken wird.
Die neue Weltsprache wird wohl Chinesisch sein.

Deutsch ist die Sprache einer eher winzigen Minderheit.
Selbst bei in Deutschland ansässigen Firmen ist die Verkehrssprache 
oftmals schon englisch.
Und der Trend, der wird sich auf jeden Fall verstärken.

von BlaBla (Gast)


Lesenswert?


von BlaBla (Gast)


Lesenswert?


von Stefan F. (Gast)


Lesenswert?

Um einen Mikrocontroller (bzw. Prozessor) kennenzulernen, lohnt es sich, 
ein bisschen Assembler zu lernen. Dazu empfehle ich dieses Tutorial: 
http://stefanfrings.de/avr_workshop/index.html

Das Tutorial erklärt nicht wirklich, wie die CPU funktioniert, aber du 
lernst dabei die Grundlagen der Assembler-Programmierung, welche 
hilfreich sein wird ein weiterführendes Buch (oder Datenblatt) über die 
CPU zu verstehen.

Bedenke dabei aber, dass es unterschiedliche Mikrocontroller und 
Prozessorkerne gibt, die unterschiedlich funktionieren. Sie sind sich in 
vielen Punkten ähnlich, aber eben nicht in allen.

Ich habe Assembler zuerst auf einem Commodore 64 (Prozessor: 6502) und 
dann später mit Mikrocontrollern vom Typ AT89C2051 gelernt. Den 
letzteren fand ich sehr angenehm anzuwenden, aber der ist nicht mehr 
Stand der Technik.

Vielleicht findest du einen anderen preisgünstigen Mikrocontroller mit 
MCS51 Kern, der direkt über USB oder USB-UART Adapter programmierbar 
ist. Kann da jemand einen empfehlen?

von Olaf (Gast)


Lesenswert?

> Deutsch ist die Sprache einer eher winzigen Minderheit.

Das war nicht immer so. Fuer die alten MCS51 gab es von Siemens/Philips 
auch mal Datenbuecher in Deutsch.

Olaf

von Stefan F. (Gast)


Lesenswert?

Olaf schrieb:
> Fuer die alten MCS51 gab es von Siemens/Philips
> auch mal Datenbuecher in Deutsch.

Und von Siemens, sogar richtig gute. Ich erinnere ich an den damaligen 
Boliden SAB 80C535, dessen Doku habe ich oft auch beim programmieren 
anderer MCS51 Controller benutzt.

Guck Dir die mal an: 
http://www.keil.com/dd/docs/datashts/infineon/80x515_um.pdf

Der Chip ist zwar Anno-Tobak, aber es gibt immer noch aktuelle 
Mikrocontroller mit dem selben Kern und der ist in diesem Buch sehr gut 
dokumentiert.

Ich habe leider nur die englische Version zum Download gefunden.

von Marek N. (Gast)


Lesenswert?


von $$$ (Gast)


Lesenswert?

Der Klassiker:

Osborne Adam
Mikrocomputer-Grundwissen eine allgemeinverständliche Einführung in die 
Mikrocomputer-Technik

Te-wi Verlag, München, 1978

von W.S. (Gast)


Lesenswert?

Mirco G. schrieb:
> Darf auch ruhig ein paar Euro kosten!

Das ist keineswegs der Punkt. Schmeiß dein Geld nicht weg.

Sondern zum Verständnis, wie ein Mikroprozessor funktioniert, reicht es 
aus, sich die Beschreibungen zu älteren Mikroprozessoren herunterzuladen 
und durchzulesen. Und Mikrocontroller sind auch nut Mikroprozessoren - 
jedoch angereichert mit Speicher und Peripherie.

Ich würde da am ehensten bei Zilog nach den Manuals für den Z80 schauen. 
Die sind nicht sonderlich umfänglich, eben weil dort ja nur die Funktion 
der CPU und der Busansteuerung erklärt wird und nicht die bei 
Controllern weitaus umfängliche Beschreibung der Peripherie.

Aber um Englisch wirst du nicht herumkommen.

W.S.

Beitrag #5852329 wurde vom Autor gelöscht.
von Ronny H. (microprocessor)


Lesenswert?

Wenn Du oben im Betreff "65C02" eingibst und den Beitrag

"Dynamisch visualierbarer Schaltplan eines Mikroprozessors"

auswählst findest Du dort den Schaltplan eines MPs incl.
Beschreibung (in deutsch) und der Möglichkeit, die Schaltzustände
während des Programmablaufs zu betrachten.

Gruß
microprocessor

von Mirco G. (mirco432)


Lesenswert?

Vielen vielen Dank für eure Hinweise. Ich werde mir die ganzen Quellen 
mal anschauen.

Ich war gestern noch in der Bib und habe mir zwei Bücher ausgeliehen.

C für Mikrocontroller von Burkhard Mann hab ich jetzt halb durch. Die C 
Grundlagen wurden super kurz erklärt kann man diesbezüglich also nur 
empfehlen. Der Bezug zur Hardware ist aber eher dürftig.

von Einer K. (Gast)


Lesenswert?

Mirco G. schrieb:
> Der Bezug zur Hardware ist aber eher dürftig.

Was auch bei einem Hochsprachenbuch auch wenig verwunderlich ist.

von Fremdsprachekoppesrondent (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:

> Am Rande:
> Wer kein Englisch lesen kann, hat in der EDV Welt verschissen.
> Hört sich brutal an, ist aber so.

Lesen und verstehen sind 2 verschiedene Dinge. Ich kann zum Beispiel 
türkische oder ungarische Texte lesen. Nur verstehen kann ich sie nicht.
Ich denke aber, daß sich Türken oder Ungarn vor Freude kaum noch 
einkriegen, wenn sie das hören, was ich vorlese.

:))

von Mirco G. (mirco432)


Lesenswert?

Karl M. schrieb:
> Hallo,
>
> Der Autor Stefan Frings hat dir hier eine Online-Buch geschrieben:
>
> http://stefanfrings.de/
>
> Wenn Du das alles weist, dann geht's weiter

Hier kann ich jetzt nichts finden was ich suche. Habe alle Beiträge mal 
überflogen aber konnte jetzt nichts finden was sich konkret auf auf 
Hardware von uC bezieht. Trd sehen viele Artikel sehr interessant aus! 
Danke.

Olaf schrieb:
> Probier es mal mit "Buch 1.0"!
> Zum Beispiel gibt ist im aktuellen Horrowitz&Hill ein ganzes Kapitel
> darueber. Ausserdem enthaelt das Buch noch mehr das man alles wissen
> sollte wenn man mit Elektronik anfangen will.

Art of Electronics sieht sehr sehr vielversprechend aus. Das werde ich 
mir denke als erstes zur Brust nehemn! Danke

Peter D. schrieb:
> Du kannst Dir ja mal das
> Assemblerlisting des erzeugten Codes ausgeben lassen.

Hab ich auch vor. Dafür muss ich mich aber erst noch ein wenig mit 
Assembler Code auseinandersetzten.

Wegstaben V. schrieb:
> Naja, der ganze Themenkomplex "Compilerbau" ist erst mal ... recht
> komplex. Parsen, syntaktische Analyse, semantische Analyse, Zwischencode
> etc. Um also zu verstehen, wie ein "Compiler intern_ _aufgebaut ist",
> braucht es keine Assembler-Kenntnisse.

Ich glaube das Thema Compilerbau führt zu weit. Mir reicht es zu wissen 
was der Compiler grob macht. Wo er welche Speicheplätze anlegt (grob).

BlaBla schrieb:
> 
https://www.thalia.de/suche?filterPATHROOT=&sq=Mikrocomputertechnik+mit+Controllern+der+Atmel+AVR-RISC-Familie

sieht gut aus. Versuche ich mal wenn mich Art of Electronics nicht 
weiter bringt.

Stefanus F. schrieb:
> Um einen Mikrocontroller (bzw. Prozessor) kennenzulernen, lohnt es sich,
> ein bisschen Assembler zu lernen. Dazu empfehle ich dieses Tutorial:
> http://stefanfrings.de/avr_workshop/index.html
>
> Das Tutorial erklärt nicht wirklich, wie die CPU funktioniert, aber du
> lernst dabei die Grundlagen der Assembler-Programmierung, welche
> hilfreich sein wird ein weiterführendes Buch (oder Datenblatt) über die
> CPU zu verstehen.

Wird gemacht ! :)

Ich arbeite eure Hinweise mal durch :)

Vielen vielen Dank für eure Beiträge!

von mukel (Gast)


Lesenswert?

Bezieht sich zwar nicht auf aktuelle Architekturen oder Controller, geht 
aber alle Schichten kurz und gründlich durch, inkl. vieles zum selber 
ausprobieren:

The Elements of Computing Systems
https://www.nand2tetris.org/

Ist auch komplett inkl. aller materialen online zu finden

von Einer K. (Gast)


Lesenswert?

Mirco G. schrieb:
> Wo er welche Speicheplätze anlegt (grob).

Gerade das ist doch völlig Compiler und Hardwareabhängig, und damit:
Erstens: (meistens) Uninteressant
Zweitens: Jederzeit beim konkreten Compiler zu beauskunften

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Mirco G. schrieb:
> Mir reicht es zu wissen was der Compiler grob macht.
> Wo er welche Speicheplätze anlegt (grob).

Was du vermutlich wisssen möchtest, ist die Verarbeitungslogik der 
"Backend-Prozesse": Hier werden Prozessor-spezifische Dinge 
berücksichtigt.

Und genau die Fragestellung "wo welche Speicherplätze angelegt werden" 
ist abhängig von vielen: Prozessorarchitektur, Optimierungs-Schalter, 
debug-evel etc.

über "Compiler  Backend  Synthesephase"
https://de.wikipedia.org/w/index.php?title=Compiler&section=9#Backend_(auch_%E2%80%9ESynthesephase%E2%80%9C)

gehts zur "Codegenerierung":
https://de.wikipedia.org/wiki/Codegenerator


vielleicht helfen dir die referenzierten Artikel erst mal weiter.

: Bearbeitet durch User
von Friedhelm (Gast)


Lesenswert?

Autor: Wegstaben V. (wegstabenverbuchsler)
>Was du vermutlich wisssen möchtest, ist die Verarbeitungslogik der
>"Backend-Prozesse": Hier werden Prozessor-spezifische Dinge
>berücksichtigt.

Auf jeden Fall wird das den Schüler Mirco weiterbringen.

Aus dem Text:

"Das Backend erzeugt aus dem vom Frontend erstellten attributierten 
Syntaxbaum den Programmcode der Zielsprache."

Den Satz werde ich morgen meinen Kollegen um die Ohren hauen.

von Stefan F. (Gast)


Lesenswert?

Es ist aber so korrekt formuliert. Der TO scheint ein gewisses 
Grundwissen aufbauen zu wollen. Leider ist es so: Selbst wenn man sich 
auf aktuelle Produkte beschränkt, gibt es immer noch sehr 
unterschiedliche Mikroprozessor Architekturen und Programmiersprachen. 
Darüber hinaus Programmier-Patterns.

An breites Grundwissen kommt man nur, indem man zahlreiche Architekturen 
mit jeweils unterschiedlichen Programmiersprachen ausprobiert. Ich werfe 
dazu mal ein paar Stichwörter in den Raum, zu jedem gibt es eigene 
Fachliteratur:

- ALU
- RAM
- Register
- Tristate I/O Pins
- FLASH-SPEICHER (oder EEPROM, ist beinahe das Gleiche)
- Adressbus und Datenbus
- Von-Neumann Architektur
- Harvard Architektur (es gibt Mischformen zwischen Von-Neuman und 
Harvard)
- ASIC
- Interrupt
- Stack
- Heap
- Datentypen (Integer, Char, String, Float)
- Zeiger
- Referenzen
- Arrays
- Objekte (OOP)
- Garbage Collector
- Zustandsautomat (Endlicher Automat, State Machine)
- Main Loop
- Multi-Tasking OS (RTOS)
- DMA
- Caches

Programmiersprachen:

- Assembler
- C
- C++
- Java
- VHDL
- Python
- PHP
- BPMN (um eine sehr hardware-ferne Programmiersprache zu nennen)

Es gibt natürlich noch viele weitere Programmiersprachen, allerdings 
sind sie stets mindestens einer der oben genannten ähnlich. Falls dich 
konkrete Mikrocontroller Architekturen interessieren, dann lies etwas 
über:

- MCS51
- PIC
- AVR
- ARM
- x86

So ziemlich alle aktuellen Mikroprozessoren basieren auf einer dieser 
Serien. Ich hoffe, ich habe keine wesentliche vergessen.

Nachdem du dich in diese Themen eingelesen und alles ausprobiert hast, 
hast du einen groben Überlick. Viel Spaß, wir sehen uns in einem Jahr 
wieder - oder später.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Friedhelm schrieb:
> Auf jeden Fall wird das den Schüler Mirco weiterbringen.

Die Codegenerierung liefert halt die Beantwortung der Fragestellung, "wo 
der Compiler welche Speicheplätze anlegt (grob)".

Zumindest weiß Mirco nun, wo er schauen muss, um die verlangten 
Informationen zu erlangen.

Wobei das für mich so interessant wäre wie die Frage, "wo der Schreiner 
den Hobel auf der Hobelbank ablegt beim Hobeln an der Holzleiste"

Oder, ums mal "informatisch" auszudrücken: Beim (kompilierten) 
Sortieralgorithmus interessiert mich auch als allerletztes, ob der 
Compiler den Stack oben, unten oder in der Mitte des Speicherplatzes 
anlegt. Der Compiler wird es schon wissen und richtig machen.

Ich sollte aber vielleicht "wissen", das der Algorithmus rekursiv 
aufgerufen wird, und mir gegebenenfalls einen Stack-Überlauf generieren 
könnte. Dazu müsste ich aber generell wissen, was ein Stack ist, und was 
Rekursion bedeutet.

Ach ja, so kommt man vom Hölzchen zum Stöckchen ...

: Bearbeitet durch User
von GeradeVorbeiGesurft (Gast)


Lesenswert?

Möglicherweise könnte das interessant sein für dich:

Computer Organization and Design: The Hardware/Software Interface
Door David A. Patterson, John L. Hennessy

Gibt unterdessen offenbar auch eine "ARM edition".

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.