mikrocontroller.net

Forum: Projekte & Code MXE11 - Unix auf dem Mikrocontroller


Autor: Joerg W. (joergwolfram)
Datum:
Angehängte Dateien:

Bewertung
4 lesenswert
nicht lesenswert
Bei den "Kunstwerken" hatte ich es ja schon vor einiger Zeit 
vorgestellt, jetzt gibt es auch eine Doku zum Projekt und somit ein 
erstes öffentliches Release. Und es gibt diesmal wieder einen Emulator. 
Eigentlich war das ursprüngliche Ziel, einen C-Compiler auf dem 
Mikrocontroller zu relisieren, über den cc/pcc bin ich dann irgendwie 
zur PDP11 gekommen.

Beim MXE11 handelt es sich um die Emulation einer PDP11 mit 28 KWorten 
Speicher, auf der ein Mini-Unix läuft.
EIS ist implementiert, eine FPU zur Zeit aber noch nicht. Als 
Massenspeicher werden 3 RK05 Disks via Image auf
einem DataFlash (AT45DB642) oder SD-Karte emuliert, wobei bei der 
SD-Karte das Image "raw" an den Kartenanfang geschrieben wird und somit 
keine Dateisysteme auf der Karte unterstützt werden. Ein 60 HZ Timer 
(KL11) ist vorhanden sowie 2 serielle Interfaces.
Diese sind auf Emulatorebene mit jeweils 256 Bytes großen Puffern 
ausgestattet und arbeiten standardmäßig mit 38400 Baud.

Das Mini-Unix wurde damals entwickelt, um Unix auch auf Maschinen ohne 
MMU laufen lassen zu können. Es handelt sich dabei um ein "abgespecktes" 
V6-Unix, so sind nur max. 4 Nutzer und 13 Prozesse gleichzeitig möglich.
Es gibt eine Vielzahl an Tools und es können  eigene Programme in 
verschiedenen Programmiersprachen erstellt werden (ASM, C, BASIC und
Fortran/Ratfor, wobei ich letztere nicht getestet habe.

Der Emulator läuft auf versciedenen Mikrocontrollern ab 64K RAM, 
entwickelt habe ich ihn parallel auf einem SPC56EL60 und mit SDL-Konsole 
unter Linux. Später sind dann noch einige STM32-Versionen hinzugekommen. 
Freies RAM wird weitestmöglich für Disk-Schreibcache verwendet, bei 64K 
RAM sind es allerdings nur 4 Sektoren. Das reicht aber aus, um 
periodische Zugriffe bei einem User abzufangen.

Außerdem gibt es noch eine optionale RTC mit einem ATMega88, die ist 
aber nicht unbedingt erforderlich. Die interne RTC der STM32 wird nicht 
unterstützt und momentran ist auch nichts in diese Richtung geplant. 
Eher noch eine MSP430-Variante der RTC.

Von der Geschwindigkeit her würde ich den Emulator im "Mittelfeld" 
sehen, auf jeden Fall lässt sich damit arbeiten. Den kompletten Kernel 
neu zu übersetzen, braucht auch auf einem STM32F107 mit 72MHz weniger 
als 10 Minuten. Ansonsten habe ich auch die verschiedenen 
Emulatorvarianten mit zwei Benchmarks getestet und die Ergebnisse mit 
veröffentlicht.

Das Projekt findet sich unter

http://www.jcwolfram.de/projekte/mxe11/main.php

dieses Mal gibt es auch eine englische Version, wobei die Übersetzung 
noch nicht "optimal" ist.

http://www.jcwolfram.de/projekte/mxe11_en/main.php

Alternativ ist meine Seite auch aus dem TOR-Netz erreichbar:

http://tcrkkpvqapdku6vi.onion/projekte/main.php

Für das nächste Release steht analoges/digitales I/O an, wofür ich aber 
erst neue Hardware entwerfen muss. Geplant habe ich auch eine mobile 
Variante, daher gibt es jetzt schon eine SDL-Version, die ein 320x240 
Display emuliert. Gedanken habe ich mir auch über Netzwerkfähigkeit 
gemacht, diese soll über CAN realisiert werden und sowohl eine virtuelle 
serielle Verbindung als auch ein viertes (virtuelles) Laufwerk 
bereitstellen. Aber bis dahin wird es noch etwas dauern...


Jörg

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwann wird der Tag kommen, an dem ich meine im Keller herumstehende 
PDT-11/150 abstauben und wieder zum Leben erwecken werde! ;-)

Autor: Jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
👏 👏 👏 👏 👏

(Für diejenigen, deren Browser die obigen Zeichen nicht darstellen 
können: Unicode Character 'CLAPPING HANDS SIGN' (U+1F44F))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.