Hallo zusammen,
werde dieses Jahr im Datenverarbeitungs Unterrich sowie im
Elektrotechnik Unterricht einen Prozessor der 8086er Familie
Programmieren.
Da ich mit diesem einen kleinen Computer bastel möchte stellt sich auch
die Frage eines Passenden Betriebssystems. Mir ist da ein Unix sehr
sympathisch, jedoch habe ich dahingehend kaum, wenn nicht keine
Erfahrung wie ich dies realisieren soll...
Kann mir hier jemand helfen, bzw. Tipps geben.
Möchte diesen "Rechner" gerne via Telnet steuern können...
Hat hier schon jemand Erfahrung damit sammeln können???
Tobias
Vom (Cross-)Compiler her kannst Du z.B. bcc unter Linux verwenden
(http://linux.die.net/man/1/bcc), dazu gibt's mit as86/ld86 Assembler
und Linker. Beide sind z.B. unter Debian fertig als Pakete (als "bcc"
und "bin86") verfügbar. Der bcc versteht mittlerweile wohl auch ANSI-C.
Neben dem schon erwähnten Minix sollte man mit erträglichem Aufwand auch
6th Edition Unix portieren können, da gibt's mit xv6 schon eine
Portierung auf "größere" x86-CPUs (>= 80386):
http://en.wikipedia.org/wiki/Xv6
Telnet ist dann natürlich nochmal ne andere Klasse, da braucht's (klar)
nen TCP/IP-Stack für. Da wäre vielleicht lwIP von Adam Dunkels
(http://savannah.nongnu.org/projects/lwip/) für den 8086 passend.
Viel Spaß :-),
Michael
> Neben dem schon erwähnten Minix sollte man mit erträglichem Aufwand auch> 6th Edition Unix portieren können, da gibt's mit xv6 schon eine> Portierung auf "größere" x86-CPUs (>= 80386):
Wenn der Threadstarter wirklich einen 8086 meint, dann dürfte das ein
Ding der Unmöglichkeit sein. Ein 8086 kann 1 MiB RAM adressieren, aber
nur mit Segment-Krampf und ist ein reiner 16-Bit-Prozessor.
Der im IBM XT verbaute 8088 ist vom nur 8 Bit breiten Businterface
abgesehen praktisch identisch.
Rufus t. Firefly schrieb:
>> Neben dem schon erwähnten Minix sollte man mit erträglichem Aufwand auch>> 6th Edition Unix portieren können, da gibt's mit xv6 schon eine>> Portierung auf "größere" x86-CPUs (>= 80386):>> Wenn der Threadstarter wirklich einen 8086 meint, dann dürfte das ein> Ding der Unmöglichkeit sein. Ein 8086 kann 1 MiB RAM adressieren, aber> nur mit Segment-Krampf und ist ein reiner 16-Bit-Prozessor.
Hm, was meinst du, was die ersten Unix-Versionen für 8086 waren? (z.B.
Xenix 8086 von Microsoft oder IDRIS)? Richtig, ein portiertes 6th
Edition Unix, teilweise ein 7th Edition. Ohne Paging und solche Späße...
> Der im IBM XT verbaute 8088 ist vom nur 8 Bit breiten Businterface> abgesehen praktisch identisch.
Das ist mir wohl bewusst. Und das 6th Edition Unix auf der PDP11 konnte
auch nur 64kB Adressraum pro Prozeß (128kB mit split I/D space), das ist
nicht wesentlich anders als die Segmente des 8086. Und mit 1 MB RAM
konnte man 6th Edition Unix auch schon ganz gut fahren. Ist halt ein
Kernel aus den 70ern :-).
-- Michael
Rufus t. Firefly schrieb:
> Wenn der Threadstarter wirklich einen 8086 meint, dann dürfte das ein> Ding der Unmöglichkeit sein.
Minix läuft bis V2 noch auf XTs, also 8088.
>> Wenn der Threadstarter wirklich einen 8086 meint, dann dürfte das ein>> Ding der Unmöglichkeit sein.>> Minix läuft bis V2 noch auf XTs, also 8088.
Minix ja, ich bezog mich auf den Vorschlag, irgendwelche Unixe zu
portieren.
Ich habe auch noch 2 DDR "PC" A7150 mit installiertem MUTOS1700,
diese Dinger sind allerdings an verschiedenen Ecken sehr speziell, es
handelt sich um ein Modulare Systeme mit dem MMS16 Bus (Siemens AMS),
also VME-Bus-artige Karten, einzelne Subsysteme für Festplatten und
Floppy, sowie Grafik bzw. Display allgemein. (Z80A). Der Hauptprozessor
ist aber ein 8086 mit Co.
MUTOS ist ein Unix, IMHO Etwas System III - artiges....
Venix und Xenix auf 8086ern kenne ich auch noch.
Gruß,
Holm
Hallo zusammen und Danke für die vielen Antworten.
Das Projekt soll wirklich mit einem 8086er realisiert werden... wobei
ich Prinzipiell auch nicht dagegen hätte einen Zilog Z80 zu benutzen.
Da wir allerdings den 8086er im Unterricht benutzen würde ich gerne
diesen nehmen.
Das 6th Edition Unix welches Michael erwähnte scheint dies zu sein
welches ich verwenden würde.
Minx hört sich auch nicht schlecht an... aber da wir dies als Projekt
bauen müssen, muss ich auch eine Dokumentation beilegen... d.h. ich muss
ebenfalls das Betriebssystem ( vor allem in diesem Fall ) beschreiben.
Und da reicht es leider nicht aus auf den Kernel zu verweisen... sondern
ich muss schon erklären können welcher Teil des Quelltextes in Form des
Komilierten BS beim Betrieb des "Computers" wie abgearbeitet wird etc...
von daher sollte es nicht allzu komplex sein... von daher ist die
Version aus den 70ern wohl echt passend.
Die frage ist nun, wie sollte ich das Projekt angehen??
Wie baue ich mir ein Programmiermodul für den 8086er bzw. falls nicht
wirklich möglich für den Z80? Woher bekomme ich die Software für das
selbige?
Wie realisiere ich im endeffekt die geasamte Hardware bzw. wo bekomme
ich Anregungen dafür??
Danke Grüße
Tobias
>Wie baue ich mir ein Programmiermodul für den 8086er bzw. falls nicht>wirklich möglich für den Z80?
Gar nicht, die können nicht programmiert werden.
Also das volle Programm:
Externer Speicher: paralles EPROM/Flash
EPROM/Flash Brenner kaufen oder Epromsimulator usw.
Wirklich 8086???
Mir ist bekannt, daß von vielen Ausbildern 8085 Prozessoren verwendet
werden. Die sind verbesserte 8080 und dem Z80 sehr ähnlich, wennn auch
lange nicht so leistungsfähig.
Route_66 schrieb:
> Wirklich 8086???
Yep. Tatsache.
Aber so wie der Threaderöffner frägt, bin ich nicht sicher, ob man ihm
mit so etwas einen Bärendienst erweist.
"Möchte auf einem 8086 ein Unix laufen lassen, notfalls geht auch ein
Z80" zeugt meines Erachtens nicht wirklich davon, dass man einigermassen
weiß, was man da tut.
"Möchte kein Minix, weil ich sonst alles weitere ausser dem Kern
dokumentieren müsste". Da scheint die alte Story vom rudimentären
Kernel, der sich dank Internet zum Linux gemausert hat, durchzuschlagen.
Auch dürfte ihm nicht ganz klar sein, dass Hardware-Bauen,
Kernel-Programmieren, etc. bis zum ersten mal ein rudimentäres "Hello
world" auf einem Terminal erscheint eine Aufgabe ist, die er nicht in
einem Schuljahr nebenher packen wird. Und von da weg ist es noch ein
weiter Weg, bis er das "Hello world" auch über Telnet am anderen Ende
der Welt sieht.
Jepp wirklich ein 8086er... wobei dieser wie gesagt im Unterricht
behandelt wird... eine Z80 währe für das Projekt auch denkbar.
Es ist auch keine Betriebliche Ausbildung... es handelt sich hierbei um
eine Vollzeit Schulische Ausbildung bei der man parallel das ABI
bekommt... oder die Ausbildung... jenachdem wie man es dreht und wendet.
Daher kommt auch der Praktische Teil zu kurz... kommt mir zumindestens
so vor.
Also ein Eprom habe ich, da würde ich einfach die Motorola der C-Control
nehmen und Sie im Board lassen... dafür existiert die
Programmierumgebung schon. Fals die überhaupt in Kombination mit dem
8086er klappt.
Zitat:
Einen 8086-Einplatinen-Computer zum Selbstbau hat vor Äonen mal die c't
als EPAC86 veröffentlicht.
Zitat ende.
Dies währe sicherlich als Anschauungsobjekt und Ideengeber sehr vom
Vorteil... habe mal Google befragt, bis auf einen Wikipedia Eintrag ist
nicht allzuviel dabei...
Ob ich nun den 8086 oder die Z80 für das Projekt nehme ist noch nicht
sicher! Auch noch nicht ob ich ein Xv6 oder Xv7 nehme... Fakt ist
jedoch, dass ich mich in die Materie einarbeiten muss... darum frage ich
hier ja nach Anregungen... und nicht nach Lösungen! Ich denke jeder wird
einmal klein angefangen haben, ob ich nun wenig oder viel Aufwand habe
ist mir Jacke wie Hose, ich will halt etwas lernen und mir dies
gleichzeitig Praktisch veranschaulichen.
Ob ich nun eine Doku Schreibe die 10 oder 100 Seiten lang ist, ist mir
IMHO auch egal, den Lehrern wird es nur weh tuhen wenn Sie mehr als 20
Seiten lesen müssen... von daher ist in diesem Fall auch mehr gleich
mehr ( Spass für mich, wenn ich bei Abgabe der Doku deren Gesicht sehe
;-) )...
Ich denke, dass ich am besten mit dem Schematischen Aufbau eines
Einplatinen-Computers anfange....
Von dort aus stellt sich halt nur die Frage wie so ein System aufgebaut
ist... da er ja nicht wirklich mit einem Aktuellen PC vergleichbar
ist... gibt es dazu einführende Literatur oder dergleichen, am besten
Online und kostenlos...
Danke und Grüße
Tobias
>Also ein Eprom habe ich, da würde ich einfach die Motorola der C-Control
Da wird wohl ein Linux nicht reinpassen.
>Spass für mich, wenn ich bei Abgabe der Doku deren Gesicht sehe>;-)
Spass für mich, wenn ich dein Gesicht sehe(n könnte) falls du einen
Schaltplan findest ;)
Ins Eprom muß auch nicht das komplette Linux reinpassen, sondern nur ein
Bootloader oder was ähnliches. Der meiste Code wird dann wohl auf einer
HD oder ggf. auch einer Speicherkarte sein.
Als CPU den Z80 zu nehmen wird dann doch etwas eng, da hat man nur 64
KBytes an Adressraum und müßte wohl mit einer Unixversion vom PDP11 oder
so anfangen. Da ist 1 MB bein 8086 schon deutlich besser.
Das von mir erwähnte c't-Selbstbauprojekt ist entweder noch in den 80ern
oder in den frühen 90ern veröffentlicht worden; das ist noch deutlich in
der "vor-Internet"-Zeit* gewesen, so daß Artikel darüber nur schwer zu
finden sein dürften. Die alten c't-Ausgaben seit 1984 aber gibt es im
PDF-Format als DVD (bei emedia) zu kaufen, darin sollten sich die
Schaltungsunterlagen des 8086-Systems finden lassen.
Allerdings halte ich das für vergebliche Liebesmüh, da es einerseits
schwierig sein dürfte, die benötigten Bauteile noch zu bekommen und da
andererseits das erworbene Wissen auch bereits vor dem Erwerb veraltet
ist.
Zwar ist es mit einigem Aufwand sicherlich möglich, so ein System
zusammenzubasteln, aber zu sehr viel mehr als einem "Hello world" als
"proof-of-concept" taugt das nicht.
Der Lern- und praktische Nutzeffekt dürfte größer sein, wenn mit einem
noch käuflich zu erwerbenden Microcontroller auf ARM-Basis gearbeitet
wird. Dafür sind einerseits neuzeitlichere Entwicklungssysteme
verfügbar, der Personenkreis, der bei Problemen befragbar ist, ist
erheblich größer (hier im Forum haben schon etliche mit ARMen und auch
ucLinux gearbeitet, aber die Anzahl derer, die mit einem 8086
herumgebastelt haben und daran noch aktive Erinnerungen haben, dürfte
vergleichsweise gering sein) und es existiert mit ucLinux auch ein
ausreichend unixoides Betriebssystem.
Schon mal nachgeschaut wo du die Bauteile vor allen den 8086 noch
bekommst.
Die ueblichen Verdaechtigen haben den schon lange nicht mehr im
Lieferprogramm.
Besser waere es das ganze auf eine aktuelle ARM CPU aufzusetzen. Auch
wenn die Schule noch auf CPUs setzt die schon lange im Museum sind.
Es ist ja nicht nur mit dem Prozessor getan. Da gehoert auch noch
Speicher, Periferie etc. dazu.
Gruss Helmi
Und das ist es ja, ich muss neben dem Unix System auch Wissen woraus ein
solcher Rechner taugt...
Was ist denn das mit diesem ARM's??
Sind die von Atmel??
Von den Atmels habe ich hier eineige herumfliegen und könnte diese mit
einem nachgebauten Programmierboard und Pony proggen...
Als Speicher dachte ich an eine SD-Karte oder einen USB-Stick...
ansonsten wollte ich schon immer mal daten auf eine alte hörkassette (
wie Amiga /C64 ) bringen... müsse via soundaus und eingang
funktionieren...
Aber ist momentan nicht wichtig...
Zumindestens bin ich nun schlauer... ich müsste neben dem 8086er einen
EEprom als "Externen" Speicher nutzen. Daneben bräuchte ich einen
Speicher ( SD-Karte )
wenn ich dies habe fällt mir gleich das Thema flüchtiger Speicher ein...
also RAM... kann ich alte EDO's nutzen?? oder sollte ich lieber direkt
auf die SD schreiben??
Perepherie... ja da dachte ich an LPT zwecks Nadeldrucher zur DEMO und
RS232 für serielle Schaltungen oder solche Spielereien...
Netzwerk für das Terminal natürlich da ich keine Tastatur oder Monitor
verwenden möchte...
Ist das zuviel für den 8086?
>Ist das zuviel für den 8086?
Für den 8086 nicht, aber für dich!
Du übernimmst dich gnadenlos.
Ich glaube kaum das dein Mikroprozessor Kurs auch nur
irgendwas mit C oder Unix zu tun hat. Das wird
vermutlich stur in ASM laufen. Sonst könnte der Kurs
ja auch mit einem handelsüblichen PC durchgeführt werden.
Der Kurs läuft sowohl in C als auch in ASM. ASM jedoch nur im ansatz...
aber mit UNIX hast du vollkommen recht, da dies nicht bei uns behandelt
wird... zumindestens nicht in diesem Umfang...
>Der Kurs läuft sowohl in C als auch in ASM.
Na gut, dann läuft da wohl irgendein altes DOS drauf.
Aber mal im Ernst, vergiss das mit dem selberbauen.
Dafür brauchst du wesentlich mehr Erfahrung als man aus deinen
bisherigen Posts erkennen kann. Das wird ne Totgeburt.
>Was ist denn das mit diesem ARM's??>Sind die von Atmel??
Teilweise ja , gibst aber auch von vielen anderen Hersteller
>Von den Atmels habe ich hier eineige herumfliegen und könnte diese mit>einem nachgebauten Programmierboard und Pony proggen...
Du wirst wohl einige AVR rumfliegen haben.
Die ARM CPUs von Atmel heisen SAMxx
>Als Speicher dachte ich an eine SD-Karte oder einen USB-Stick...
SD könntes du nehmen. Bei USB must du einen USB Host Kontroller
aufbauen.
>ansonsten wollte ich schon immer mal daten auf eine alte hörkassette (>wie Amiga /C64 ) bringen... müsse via soundaus und eingang>funktionieren...>Aber ist momentan nicht wichtig...
Das Thema ist schon seit einem 1/4 Jahrhundert abgehackt
>Zumindestens bin ich nun schlauer... ich müsste neben dem 8086er einen>EEprom als "Externen" Speicher nutzen. Daneben bräuchte ich einen>Speicher ( SD-Karte )
Als Arbeitsspeicher viel zu langsam
>wenn ich dies habe fällt mir gleich das Thema flüchtiger Speicher ein...>also RAM... kann ich alte EDO's nutzen?? oder sollte ich lieber direkt>auf die SD schreiben??
Dazu must du einen D-RAM Kontroller aufbauen. Bleib besser bei
statischem RAM der ist einfacher anzuschliessen.
>Perepherie... ja da dachte ich an LPT zwecks Nadeldrucher zur DEMO und>RS232 für serielle Schaltungen oder solche Spielereien...
Das ist noch das einfachste bei deinem Projekt
>Netzwerk für das Terminal natürlich da ich keine Tastatur oder Monitor>verwenden möchte...
Dann must du eine Ethernetkontroller anschliessen und dir eine TCP/IP
Stack programmieren
Wenn es unbedingt ein altes System sein soll, welches 'konventionell'
aufgebaut ist, würde ich ein Z80 System nehmen. EPROM und Speicher
sollten damit noch (bezahlbar) zu bekommen sein und der Lerneffekt ist
sicherlich noch da, wie das alles funktioniert. Auch dynamischer
Speicher ist kein Problem, die Z80 hat einen entsprechenden Controller
eingebaut.
Allerdings kanst du dir dann ein UNIX abschminken, aber irgendwo müsste
sich ein CP/M 2.2 noch auftreiben lassen, für welches man ein BIOS bauen
kann. Anstelle von Floppys müsste ein SD-Stick auch einbindbar sein
(denke ich mal), die Frage ist nur: wie kriegt man das CP/M auf den
Stick. Wenn man die 'Disk-Paramater' des Sticks hat, sollte das aber mit
einem PC-Programm, welches den Stick direkt anspricht und Sektoren
schreibt aber machbar sein.
Serielle Schnittstelle, parallele Schnittstelle (du wirst dich wundern
wie schwer es ist, heutzutage noch einen Drucker aufzutreiben der
einfach nur eine ordinäre Centronics-ASCII-Schnittstelle hat. Mit
einfach mal in den Mediamarkt gehen und kaufen ist da schon lange nichts
mehr) sollten auch mit CP/M kein Problem sein. Netzwerk wird so nicht
gehen.
Aber: Das ganze ist überschaubar!
Oder aber da baust dir eine Experimentierplatine mit einem AVR.
Hardwaremässig ist das schnell gemacht und mit ein wenig Peripherie
drumherum (Taster, LED, UART, auch Drucker, Summer, Lichtschranke, ...)
ist viel Spass garantiert. Dort steht das "Was mache ich damit" im
Vordergrund und nicht das 'Wie baue ich es auf und was muss ich erst mal
an rudimentärer Betriebssystem-Software schreiben, bis ich das erste mal
überhaupt irgendetwas sehe'
IBM hat für seine Komputer sehr detaillierte Handbücher rausgebracht. Da
sind nicht nur die Schaltpläne, sondern auch eine Funktionsbeschreibung
incl. Bioslisting dabei. Such mal nach der IBM 5160 technical reference,
das war der olle XT. Das schwirrt digitalisiert als PDF im Netz herum.
Lies dich da mal ein, so bekommst du eine ungefähre Vorstellung was in
so einer Kiste drinsteckt.
>Auch dynamischer>Speicher ist kein Problem, die Z80 hat einen entsprechenden Controller>eingebaut.
Vorsicht der Z80 kann nur 7 Bit Refreshaddressen ob das mit neueren
D-Rams geht ???
>Allerdings kanst du dir dann ein UNIX abschminken, aber irgendwo müsste>sich ein CP/M 2.2 noch auftreiben lassen, für welches man ein BIOS bauen>kann.
Hier gibts das sogar mit Source Code.
http://www.cpm.z80.de/source.html
Helmut Lenzen schrieb:
>>Auch dynamischer>>Speicher ist kein Problem, die Z80 hat einen entsprechenden Controller>>eingebaut.>> Vorsicht der Z80 kann nur 7 Bit Refreshaddressen ob das mit neueren> D-Rams geht ???
:-)
Dazu kann ich wenig sagen (mein Gedächtnis ist schon schwach). Mit 4164
gibts auf jeden Fall keine Probleme.
ABer hier habe ich etwas gefunden
http://www.sxlist.com/TECHREF/mem/dram/slide1.html
was sich der Problematik anscheinend annimmt.
Ist ev. auch für den TO interessant um mal zu sehen, was da eigentlich
alles auf ihn zukommt :-) Die meisten Leute heutzutage denken ja, einen
Computer designed und baut man, indem man Platinen zusammensteckt.
Helmut Lenzen schrieb:
> Vorsicht der Z80 kann nur 7 Bit Refreshaddressen ob das mit neueren> D-Rams geht ???
Aber natürlich geht das. Zwingt dich ja niemand dazu, alle möglichen
Adressleitungen auch zu verwenden, zumal ein Z80 schon mit 32MB
Hauptspeicher leicht überfordert sein könnte.
Abgesehen davon dürften doch wohl heutige DRAMs mit eigenen
Refreshadressen arbeiten können?!
>:-)>Dazu kann ich wenig sagen (mein Gedächtnis ist schon schwach). Mit 4164>gibts auf jeden Fall keine Probleme.
Ich hatte mitte der 80er den CPM Rechner aus der CT nachgebaut. Da
musste man aufpassen die richtigen RAMS zu erwischen. Es waren sowohl
welche mit 7 aber auch mit 8 Bit Refershaddressen im Handel.
>Die meisten Leute heutzutage denken ja, einen>Computer designed und baut man, indem man Platinen zusammensteckt.
Wie wahr.
>Abgesehen davon dürften doch wohl heutige DRAMs mit eigenen>Refreshadressen arbeiten können?!
Heutige D-Ram haben den Counter integriert. Stimmt. Aber gibt es den
noch normale D-Rams zu kaufen ? (Und jetzt keine musealen Stuecke)
Das meiste ist doch heute DDRx RAM oder SD-RAM.
Und da duerfte der Z80 wohl Probleme mit haben.
Helmut Lenzen schrieb:
> Das meiste ist doch heute DDRx RAM oder SD-RAM.> Und da duerfte der Z80 wohl Probleme mit haben.
DDR sicherlich nicht. Bei einfachem SDRAM bin ich nicht so sicher.
Anders als bei RAMBUS sind die Signale grundsätzlich ähnlich, nur eben
bezogen auf einen Takt. Was sich wahrscheinlich mit einem kleineren
Gatter/Registergrab abbilden liesse. Eine Mindesttaktfrequenz habe ich
im erstbesten Datasheet keine gefunden
Schwieriger könnte es sein, eine NMOS-Z80 dazu zu überreden, die maximal
1,2ns rise/falltime einzuhalten ;-). Und das herzallerliebste
abweichende Timing vom M1-Zyklus könnte sich als störend erweisen.
SD-RAM hat ein Konfiguartionsregister.
Da muss man erst was sinnvolles reinschreiben.
Koennte man machen. Duerfte allerdings in einem Gatterbergwerk ausarten.
Waere ein Fall fuer ein FPGA. Da koennte man doch glatt auf die Idee
kommen die CPU mit in FPGA zu setzen. Wobei man dann wieder darueber
nachdenken koennte ob Z80 / 8086 oder eventuell eine 68000 CPU .
Am einfachsten ist es allerdings sich ein 512KByte statisches Ram zu
besorgen und das zu nehmen. Dann koennte man ein Bankumschaltlogik
implementieren und CPM 3.0 fahren.