Forum: Mikrocontroller und Digitale Elektronik INTEL AMD Prozessoren


von jochen (Gast)


Lesenswert?

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?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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...)

von opacer (Gast)


Lesenswert?

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)

von Florian (Gast)


Lesenswert?

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.

von jochen (Gast)


Lesenswert?

Ja danke war auch eher eine Interessensfrage. Ich dachte die ticken so 
ähnlich wie ein Mega8 ;)

von Düsentrieb (Gast)


Lesenswert?

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

von Mark S. (struberg)


Lesenswert?

> 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

von Sascha (Gast)


Lesenswert?

>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???

von ??? (Gast)


Lesenswert?

MC680x0 ...

von Rolf Magnus (Gast)


Lesenswert?

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.

von tex (Gast)


Lesenswert?

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.

von opacer (Gast)


Lesenswert?

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...

von Storage Scope (Gast)


Lesenswert?

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.

von jochen (Gast)


Lesenswert?

@ 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?

von jochen (Gast)


Lesenswert?

brrrrr statt "internet Raum" wollte ich "internet RAM" schreiben :-)

von Frank (Gast)


Lesenswert?

Internet RAM? funktioniert das etwa nicht Offline?

SCNR

von jochen (Gast)


Lesenswert?

interner RAM

von Christian Erker (Gast)


Lesenswert?

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

von Andreas W. (Gast)


Lesenswert?

@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.

von R. M. (rmax)


Lesenswert?

@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.

von *.* (Gast)


Lesenswert?

> 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

von Rüdiger K. (sleipnir)


Lesenswert?

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

von jochen (Gast)


Lesenswert?

Danke für die Links.
Das find ich interessant, sowas müsste man mal können :-)

von jochen (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

> 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.

von Michael König (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.