Hi, ich habe mal eine Frage, die mich eher aus Interesse bschäftigt, als dass ich es zeitnah mal versuchen möchte. Ich habe in letzter zeit viel mit dem MEGA8 rumgespielt und programmiert. Wie ist das bei "echten" Porozessoren, z.B. gängigen Intel / AMD Cpus? Kann man die auch so leicht wie einen MEGA8 programmieren? Wenn man sie kauft sind sie offenbar schon ihrer Funktion bewusst, man muss sie nur noch in ein Mainboard einbauen. Ist das Programm auch extern draufgespielt worden oder ergibt sich die Funktion einfach anhand des Aufbaus, der Hardware selber? Falls man sie auch seperat mit einer Software besipielen muss würde ich die einfach gerne mal mir ansehen... Gibt es den Quellcode irgendwo?
Die Prozessoren sind "dumm" und haben auch kein Programm. erst das Mainbaord mit seiner Perepherie und dem Bios machen den Prozessor funktionsbereit. die Programme kommen halt aus einem externem speicher (ROM/RAM/HAD...)
Klar lassen sich PC Prozessoren auch einfach programmieren. Das nennt man dann Programmiersprache + Compiler oder direkt in Assembler. Als Betriebssystem nutzt man meistens Windows, Linux (oder MacOS). Gibt auch noch paar andere. Ne, jetzt mal im Ernst, zwischen nem AVR und einer modernen X86-CPU von AMD/Intel CPU liegen ein paar Welten. Vorallem bedenk was man alleine an Peripherie braucht damit der überhaupt was macht .. Ohne dir zu Nahe treten zu wollen, aber vergiss es (außer natürlich mit nem fertigen Mainbord/RAM/HDD etc. aber ich denke darauf zielte die Frage nicht ab)
Na ja, es gibt zumindest die Möglichkeit, ein Microcode-Update durchzuführen. Damit sind die im Prinzip schon in gewisser Weise 'programmierbar', was das Ausführen der einzelnen Befehle angeht. Aber das nur am Rande. Wie bereits geschrieben, werden die CPUs nicht direkt progammiert, sondern diese sind auf externen Speicher angewiesen, d.h. die verfügen über einen Adress-/Datenbus und beim Reset des Prozessors beginnt dieser, an einer definierten Adresse an zu arbeiten. Das Programmieren (wenn Du denn die Software-Entwicklung meinst) selbst bietet in der Regel verschiedene Befehlssätze und mit Assembler sieht das dem eines RISC-Prozessors nur noch zum Teil ähnlich. Als Anwendungsprogrammierer hat man meistens nicht den vollen Zugriff auf den Prozessor, da die CPU meist im 'Protected Mode' läuft und ein Großteil der Speicherverwaltungs- und Task-Switchting-Aufgaben vom Betriebssystem übernommen wird. Man kann aber sehr wohl Programme (auch Windows-Programme) komplett in Assembler verfassen, auch wenn das vermutlich nur selten vorkommt, da die CPUs doch wirklich einiges an Geschwindigkeit zu bieten haben und man nicht unbedingt jede Kleinigkeit optimieren muss.
Ja danke war auch eher eine Interessensfrage. Ich dachte die ticken so ähnlich wie ein Mega8 ;)
die ticken so ähnlich ... im prinzip, ja... ungefähr so : stell dir ein modell-auto mit verbrennungsmotor vor, und einen formel-1 boliden....auch im prinzip : die ticken so ähnlich
> Na ja, es gibt zumindest die Möglichkeit, ein Microcode-Update > durchzuführen. Das hat mal gar nix mit dem AVR zu tun, denn ein reiner RISC Prozessor hat im Normalfall keinen microcode. Es gibt auf jeden Fall hochintegrierte x86 clones die bereits MMU, PIO, etc on board haben (teilweise sogar VGA). Früher von Cyrix, IDT, etc. und auch der AMD Geode und die VIA Eden sind sowas in der Art. Allerdings wirst die Hardware selbstbau nicht gebacken bekommen. Ich rechne mal mit 200++ pins... Alternative wäre ein fertiges VIA board im µATX Format. LieGrü, strub
>Es gibt auf jeden Fall hochintegrierte x86 clones die bereits MMU, PIO,
etc on board haben (teilweise sogar VGA).
Welche CPU hat denn eine externe MMU???
Auch der ARM7-Prozessor, mit dem ich gerade arbeite, hat ein Interface, um eine externe MMU anschließen zu können, wenn man eine braucht. Man kann ihn aber auch ohne betreiben.
Es ist durchaus nicht so das die Prozessoren nur in PC-Hardware zum Einsatz kommen. Weil sie dahingehend konstruiert sind, ist das in der Regel eines der ersten Einsatzgebiete, aber sie kommen genauso z.B. in Vermittlungsanlagen, Bahntechnik ect. zum Einsatz ganz ohne Betriebssystem, sondern , ganz ohne PC-Hintergrund. Natürlich sind Hersteller wie Sie.... oder Alca.... immer etwas hinterher, was die Generationen betrifft, aber sie benutzen die gleichen prozessoren, die auch in Deinem PC verbaut sind. Du kannst das übrigens auch mal probieren. Suche Dir ein altes 286er oder 386 -Board, und besorge Dir einen Eprom-Simulator, und schon kanns losgehen. Die Befehlssätze und Register sind noch für ein Einmannprojekt überschaubar.
Scho interessant, es ging um aktuelle INTEL & AMD Prozessoren und jetzt wird von MC68../ARM7/286er gesprochen. Also die genannten PC-Prozessoren würde natürlich auch ohne ein Betriebssystem funktinieren und könnten natürlich auch Programme von z.B. einem Flash ausführen. Nur das drumherum ist nicht ganz einfach. Ob man es Mainbord oder Platine nennt ist egal, irgendwie will der Speicher angesprochen werden, die Stromversorgung ist auch nicht so ohne etc...
es gibt einige seiten im internet, die sich mit dem ansteuern von 386ern beschäftigt. mit pinbelegung, beschreibung und was man sonst noch so benötigt. nach dieser seite kann man sich auch sein eigenes kleines mainboard zusammenbasteln. leider weiß ich die seite nicht mehr, 386er sind ja auch so lahm ;) aber das prinzip eine x86 cpu anzusteuern wird da schon vermittelt.
@ Storage Scope schade, dass du die Seite nicht findest. Ok eine "echte" CPU hat keinen internet Raum usw. und ist deswegen nicht direkt funktionsfähig wie der Mega8. Und er versteht auch glaube ich die Sprache Assembler nicht direkt da kein Flash drauf ist. Wenn man sich den Ram, das Bios und und und noch dazudenkt, wie bekommt man es dann hin, dass z.B. nach dem Einschalten Schrift erscheint. Das muss doch irgendwo festgelegt sein. Wie programmiert man denn eine CPU? Geht das z.B. über das BIOS dann letztendlich doch über einen Assemblercode?
Ich sags mal einfach so: Ein Mikrocontroller ist eine CPU mit Peripherie und Speicher auf dem selben Chip. Bei einer reinen CPU muss man das eben extern anschließen, und klar "verstehen" die Assembler, das wird ja in reine Maschinensprache übersetzt. Steht eben nur im BIOS zunächst, dies enthält auch grundlegende Routinen wie Tastaturtreiber, Textgrafik, Festplattenzugriff. Da diese Routinen jedoch auf einen recht niedrigen Level arbeiten (sie müssen ja mit jeder(!) Hardware laufen), werden sie vom Betriebssystem durch eigene optimierte Routinen "ersetzt". Entweder sind sie parallel verfügbar oder der Softwareinterrupt, der sie normal aufruft, wird "umgebogen". Gruß, Christian
@jochen das bios ist das was die CPU am anfang "sieht". das ist so ähnlich wie beim Mega8 er sieht auch seinen eigenen flash "zuerst"(ok er sieht ihn nur). Beschäftige dich mal mit CPUs an sich, das wird dir sicher interesieren. also mit "von neumann" http://tech-www.informatik.uni-hamburg.de/applets/baukasten/DA/VNR_Einleitung.html und "Harvard" http://de.wikipedia.org/wiki/Harvard-Architektur Im grundegenommen sind CPUs sehr simpel. kompliziert wird nur das drum herrum :) und ein paar "unbedeutende" (achtung ironie) optimierungen.
@jochen : CPUs (Mikrocontroller eingeschlossen) verstehen immer nur ihre jeweilige Maschinensprache direkt. Für alle Programme, die in menschenlesbaern Programmiersprachen geschrieben sind (dazu gehört auch Assembler) ist (mindestens) ein zusätzliches Übersetzungsprogramm nötig. Das arbeitet entweder so, daß es das Programm vorab in die jeweilige Maschinensprache übersetzt, dann nennt man es Compiler bzw. Assembler (z.B. bei C, C++, Pascal, Assembler) oder es nimmt die Umsetzung zur Laufzeit vor, dann nennt man es Interpreter (Basic, Perl, Python, Tcl). Java und C# verwenden eine Kombination aus beidem, aber darauf gehe ich jetzt nicht näher ein, weil es zu weit vom Thema wegführen würde.
> Wie programmiert man denn eine CPU? Geht das z.B. über das BIOS dann letztendlich doch über einen Assemblercode? Natürlich steht im BIOS x86-Assemblercode. Dazu, was beim Boot-Prozess abläuft, ist eine Internetsuche recht ergiebig: http://www.pcguide.com/ref/mbsys/bios/bootSequence-c.html
Wenn man bedenkt das ein Mikrocontroller - wie schon gesagt - nur eine CPU+ROM+RAM+Zeitgeber+sonstige Peripherie ist lautet die Antwort auf die Frage "Wie programmiert man eine CPU?": "Wie einen Mikrocontroller." Der Unterschied ist nur das der Programmspeicher (also das "Flash-ROM") - wie die übrige Peripherie - als getrennte Bausteine vorliegen. Somit programmierst Du nur den ROM und setzt ihn dann in die Schaltung ein. Die Schaltung an sich kannst Du als Mikrocontroller sehen - nur eben auf einer Platine statt auf einem Chip. Hier mal ein Beispiel: http://www.nue.tu-berlin.de/wer/knoerig/elektronik_de.html#Z80Comp
Danke für die Links. Das find ich interessant, sowas müsste man mal können :-)
Ich habe eben versucht, die Seite zu finden, wie man einen 386er ansteuert. Das würde mich gerne mal interessieren, gibt es da eine anfängergerechte Seite oder evtl auch ein Buch, wo man darüber lesen kann? Wie habt ihr damals gelernt, ich finde meine passenden Infos nirgendswo, als in diesem Forum und teils auch im Tutorial.
> Da diese Routinen jedoch auf einen recht niedrigen Level arbeiten (sie > müssen ja mit jeder(!) Hardware laufen), werden sie vom Betriebssystem > durch eigene optimierte Routinen "ersetzt". Nicht nur deshalb. Das BIOS war mal as Basis für ein Realmode-Betriebssystem wie DOS gedacht. Da wurden die BIOS-Funktionen zum Zugriff auf die Peripherie auch viel eingesetzt. Wenn das Betriebssystem aber mal im Protected Mode läuft, wie es jedes moderne Betreibssystem tut, ist es viel zu umständlich, diese BIOS-Funktionen aufzurufen. > Entweder sind sie parallel verfügbar oder der Softwareinterrupt, der > sie normal aufruft, wird "umgebogen". Die BIOS-Aufrufe (z.B. in einem DOS-Emulator) gehen dann aber auch nicht mehr direkt ans BIOS, sondern an eine Emulationsschicht im Betriebssystem.
> Welche CPU hat denn eine externe MMU???
MIPS und SuperH haben meines Wissens weder eine interne noch eine
externe MMU. Intern ist nur der TLB vorhanden, wenn eine Adresse nicht
gefunden wird, gibt es eine TLB-Miss-Exception und das Betriebssystem
muß sich um die Verwaltung der Page-Table kümmern.
Ich glaube der 88000 von Motorola hatte auch einen separaten Baustein
für die Speicherverwaltung. Das hatte aber damit zu tun, daß man an
diesen vom Konzept her mehrere CPUs hängen sollte. Eigentlich keine
schlechte Idee, hat sich damals aber nicht wirklich durchgesetzt.
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.