Welche empfehlenswerte Bücher gibt es zur Theorie der MC, also z. B. über den Stack und die Unterschiede von ISRs u. gewöhnlichen Funtkionen dort?
Hi, ich kann dir folgende Bücher empfehlen: von Flik/Liebig - Mikroprozessortechnik aus dem Springer-Verlag. Behandelt alles was man wissen muß: -cisc/risc -assembler/c -speicherorganisation -I/O und Rechnerkommunkation (seriell, parallel usw.) -busse (pci) -peripherie (dma. scsi, festplatten, drucker etc.) -auch sdeine Fragen nach dem Stack etc :-) und von Beierlein/Hagenbruch - Mikroprozessortechnik aus dem fachbuchverlag Leipzig. Das Buch ist sehr knapp gehalten, behandelt aber auch so gut wie alle wichtigen Themen. Beide Bücher habe ich zur Vorbereitung auf meine Diplomprüfung benutzt. Die taugen echt was .-) Achja, falls dich die Titel stören...Ein µC ist prinzipiell nichts anderes als ein µP bei dem ROM/RAM/IO etc. integriert sind. Gruß, Klaus
Hi nochmal, habe gerade gesehen, daß das zweite von mir genannte Buch auch hier auf der Seite empfohlen wird: http://www.mikrocontroller.net/buecher.htm Das erste von mir genannte ist meiner Meinung nach aber ein Tick besser, weil es auch auf die Programmierung etc. eingeht. beide zusammen sind unschlagbar :-) Gruß, Klaus
Aha, danke. Die werde ich mal kaufen u. bei Gelegenheit lesen um zu erfahren, wieso sich eine ISR auf dem Stack anders verhält als eine einfache Funktion.
@Klaus: Beispielsweise muss eine ISR in Assembler mit reti statt ret beendet werden und zum Wechseln des Modus braucht man auch in C einen anderen Befehl, wenn der in einer ISR ausgeführt werden (u. auch nachher wirksam sein) soll. Etwas, was in einer einfachen Funktion gut funktioniert, kann in einer ISR einen Absturz bewirken (das ist zumind. beim MSP430 mit dem IAR-Compiler und wohl auch den anderen so).
Ach sowas meinst du :-) Normalerweise werden Interrupts duch das Interruptsystem des Prozessors ausgeführt. Das bedeutet, daß das laufende Programm unterbrochen wird und mind. der PC (Program Counter) gesichert wird. Üblich ist auch, daß das Statusregister mitgesichert wird (bei Atmel aber nicht, da muß man das von Hand machen). Desweiteren werden weitere Interrupts gesperrt. Mit anderen Worten wird der Zustand/Status des Prozessors gesichert, sobald ein Intrerrupt auftritt und wieder hergestellt, sobald die ISR abgearbeitet wurde. Dein Programm darf durch den Interrupt in keiner Weise beeinflusst werden, bzw. es darf nicht mitbekommen, daß überhaupt ein Interrupt aufgetreten ist. Bei Prozessoren, die verschiedenen Modi (Usermodus, Supervisormodus) unterstützen wird dann auch in den Supervisormodus umgeschaltet. In diesem Modus können dann privilligierte Befehle ausgeführt werden, die im Usermodus nicht ausgeführt werden dürfen (=unterstützung für das Betriebssystem). Das alles erklärt dann auch, wieso du nicht mit "ret" zurückspringen kannst, weil ret nicht den exakten Ur-Zustand herstellen würde (es schaltet nicht zurück in den Usermodus und das Statur-Register wird auch nicht wieder hergestellt und Interrupt würden damit dann auch nicht wieder erlaubt werden). Alles was ret macht ist den PC mit der Rücksprungadresse zu laden. Ich hoffe, ich habe da jetzt nicht allzuviele Fehler eingebaut, aber prinzipiell ist es so. Gruß, Klaus
Aha, danke. Naja, allzuschwierig sind Microcontroller ja nicht, allein schon weil es da kein SMP gibt und es Deadlocks wohl nicht geben kann.
Nochwas: Es ist zwar nicht verkehrt diese von mir genannten Bücher zu kaufen, aber nur, wenn dich das alles wirklich interessiert. Wenn du aber nur wissen möchtest, wie der Stack funktioniert, oder ähnliches, dann dürften die Bücher Overkill sein. Dann würde ich dir empfehlen ein bisschen zu googlen, oder deine Fragen hier loszuwerden. Zumindest sollest du dir die Bücher vorher ansehen, bevor du die einfach kaufst, weil billig sind sie nicht. Bei einem µP gibt es übrigens auch kein SMP :-) Und wo im Prozessor Deadlocks auftreten könnten ist mir gerade unklar. Wahrscheinlich meintest du das Kohärenz-Problem, daß auftritt, wenn mehrere Prozessoren mit lokalen Caches auf einen gemeinsamen Speicher zugreifen... Und einen AMD/Intel Prozessor der neueren Generation darfst du nicht unbedingt mit einem AVR µC vergleichen. Da liegen Welten dazwischen. Auch sind die Einsatzgebiete sehr unterschiedlich. Ich habe mir aber mal als Projekt überlegt so eine Art SMP/MPP mit µC zu realisieren. Einfach mal um ein bisschen zu experimentieren. Das reizt mich irgendwie :-) Gruß, Klaus
Aha, aber für SMP braucht man eigentlich schnelle Busse, wennn es sinnvoll sein soll und die gibt es praktisch nicht, außer man nimmt mind. je 2 Ports (16 Pins) für einen Datenbuss und einen Adressbuss. Bis es MCs mit DMA zu kaufen gibt und man das von MC zu MC performant machen kann, sollte man wohl noch warten, vor allem weil die CPU bei den meisten geplanten MCs dieselben Busse verwendet u. deshalb inaktiv bleiben muss während des DMA-Transfers. Sowas wie superpipelined superskalar MCs gibt´s anscheinend auch noch nicht.
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.