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.
Hallo, Der Autor Stefan Frings hat dir hier eine Online-Buch geschrieben: http://stefanfrings.de/ Wenn Du das alles weist, dann geht's weiter.
> 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
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.
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.
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
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
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
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 -----
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
µ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.
> 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
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.
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?
> 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
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.
Vom alten Pelka gibts da auch was: http://oldcomputers-ddns.org/public/pub/manuals/was_ist_ein_mikroprozessor_(ger_bw_ocr).pdf
Der Klassiker: Osborne Adam Mikrocomputer-Grundwissen eine allgemeinverständliche Einführung in die Mikrocomputer-Technik Te-wi Verlag, München, 1978
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.
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
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.
Mirco G. schrieb: > Der Bezug zur Hardware ist aber eher dürftig. Was auch bei einem Hochsprachenbuch auch wenig verwunderlich ist.
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. :))
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!
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
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
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§ion=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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.