PC-Ähnliches Gerät nur aus Atmel-Controller

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • PC-Ähnliches Gerät nur aus Atmel-Controller

      Hallo zusammen.

      Ich habe kein wirkliches Problem, sondern möchte hier eine Diskussionsrunde (Brainstorming) starten.
      Es soll kein Projekt werden sondern ist nur mal ein Gedankenspiel.

      Jeder kennt die alten PC's von früher, auf denen DOS lief. Es war eigentlich eine einfache Maschine und doch irgendwie genial.

      Ich habe schön länger die Idee bzw. die Frage, ob es möglich ist, so etwas wie einen einfachen PC zusammen zu stricken.
      Die benötigten IC's sollen aber allesamt Atmel-Controller sein.

      Ich stelle mir das etwa so vor:
      • Ein Cotroller erzeugt ein einfaches Bild (geringe Auflösung) für einen Monitor (z-B. Test wie beim DOS)
      • Ein Controller bildet eine COM-Schnittstelle nach
      • Ein Controller bildet eine LPT-Schnittstelle nach
      • Ein Cotroller für den Tastatur-Port (kein USB)
      • Der Prozessor ist, wie zu erwarten, ein Atmel mit externem SRAM, z.B 64kB oder auch mehr.
      • Der Bus läuft z.B über SPI oder I2C-Bus
      • Über Reihenkontakte kann man nachträgliche Hardware mit dem Bus und anderen Signalen etc. verbinden
      • usw.
      Das ganze soll so was wie ein BIOS haben, das logischerweise im Hauptprozessor im Flash läuft.
      Natürlich soll das System wie der große Bruder auch erweitert werden können. Also z.B. 2. COM-Schnittstelle hinzufügen oder 2. LPT-Port.

      Das ganze muss nicht schnell sein, wir brauchen keinen DMA-Controller oder ähnliches. Auch der Videoaufbau muss nicht blitzschnell sein, es seiden die Hardware kann nicht langsamer ;)

      Das Problem was ich bei der Sache allerdings sehe ist, dass Programme eigentlich im SRAM ausgeführt werden müssen.
      Das Flash im Prozessor soll ja als Bios funktionieren. Und das brennt man ja nicht dauern neu.

      Kann man Programme aus dem SRAM ausführen?

      So ungefähr die Idee.
      Habt ihr hierzu Einfälle, Ideen oder Anregungen?
      Ich finde die Idee grundsätzlich interessant und bin gespannt auf eure Kommentare.
      Besonders von den bekannten Querdenkern hier im Forum.

      Mitch
      Kaum macht man es richtig - und schon geht's!
    • Ich bin jetzt kein Fachmann, aber ist das einfach durch die Artunterscheidung in mikrocontroller und cpu schwierig, dein Vorhaben mit einem mikrocontroller umzusetzen? Ich denke mal, der mc ist nicht so für ständiges Programmwechseln gedacht. Man müsste ja den programmcounter 'umbiegen', damit er in's eher kleine ram zeigen kann. Was man mit der Möglichkeit der 'Selbstprogrammierung machen kann, entzieht sich meiner Kenntnis.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Es ist kein Vorhaben, eher ein Bainstorming.

      Es gibt ja Controller, die mit externem SRAM arbeiten können. Der externe SRAM wird dann anstelle des internen verwendet. Der Stack wird dann schon von Bascom korrekt im externen SRAM eingerichtet. Da sehe ich noch keine Schwierigkeiten.

      Will man Programme nachladen, müssen die ja ins SRAM geladen werden. Flash ist doof, da dann das Programm praktisch jedesmal gebrannt wird. Das geht auf die Lebensdauer vom Flash. Viele Programmwechsel sind da Gift.

      Schöner wäre die Lösung, wenn es einen Weg gäbe, die Assembler-Words aus dem externen SRAM ausführen zu lassen.

      Vielleicht gibt es einen einfachen Trick, die Befehle ohne viel Overhead zu Interpretieren und dann auszuführen.
      Kaum macht man es richtig - und schon geht's!
    • Wenn überhaupt geth sowas nur mit einem Prozessor der auch einen externen Datenbus benutzen kann, z.b. der Mega644
      Wo wir schon vom Mega 644 reden, jemand hat damit schon einmal einen "PC" nchgebaut, schau dir mal einmal das Raspberry Projekt genauer an, bevor da ein "Handy" Prozessor reingekommen ist gab es einen Prototypen mit nem M644. Der konnte zwar nur Linux booten, ein dos dürfte da aber nicht viel anschpruchsvoller sein.
      Leider alles weit über meinen Fähigkeiten

      Tobias
    • Möchtest Du am Ende tatsächlich DOS-Programme laufen lassen? Dann bräuchtest Du ja einen Emulator, sehr gute Kenntnisse und viel Rechenleistung. Da sehe ich spontan das Hauptproblem.
      Einige der anderen Teile gibt es m.E. schon hier und da im Netz: zeichenorientierte Bildschilmausgabe, Zeilenorientierter DOS/Basic-Interpreter (soweit ich dunkel erinnere). Com, lpt, Keyboard sowieso.
      Ich tue es sehr ungern, stelle dennoch einmal die Frage: Hast Du Dir das in den Kopf gesetzt, so etwas mit AVRs zusammenzubauen - falls es denn gehen sollte? Ein einziger Raspberry kostet ja fast nichts und kann das alles.
    • Ein Interpreter wäre eine Idee. Der liest einfach die bascom .bas Datei ein, muss die bascom-Befehle erkennen und ausführen. Dann langt das ram und der flash wird nur 1x geschrieben.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Wie bereits eingangs erwähnt habe ich nicht vor das zu bauen.

      Es ist nur mal das gedanklich durchzuspielen, ob das hardwaremäßig funktionieren könnte.

      Und es muss auch kein DOS drauf laufen. Ich will also keinen Emulator nachbauen.

      Mir gehts einzig und alleine darum, ob und wie man das Hardwäremäßig umsetzen könnte.

      Das Betriebssystem brauch keinen riesen Umfang. Aber es sollte Tasten von Tastatur einlesen können und Programme sollte gestartet werden können.

      Kann also was ganz eigenes sein.
      Kaum macht man es richtig - und schon geht's!
    • Nein. Es ist nicht DOS-Kompatibel

      Die Programme würden mit Bascom erstellt.

      @stefanhamburg
      Übrigens:
      das Raspberry-Projekt kann ich nicht finden. War wohl im alten Forum.

      @tschoeatsch
      An einen Basic-Interpreter habe ich nicht gedacht.
      Sondern die Maschinenbefehle werden gelesen und ausgeführt, quasi von hand.
      Kaum macht man es richtig - und schon geht's!
    • Das einfachste wären bascom-basic Programme. Dann tut man sich mit einem interpreter am leichtesten, weil der Maschinencode für jeden Befehl schon vorhanden wäre :D
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Mitch64 schrieb:

      Nein. Es ist nicht DOS-Kompatibel

      Die Programme würden mit Bascom erstellt.

      @stefanhamburg
      Übrigens:
      das Raspberry-Projekt kann ich nicht finden. War wohl im alten Forum.

      @tschoeatsch
      An einen Basic-Interpreter habe ich nicht gedacht.
      Sondern die Maschinenbefehle werden gelesen und ausgeführt, quasi von hand.
      Wenn du bascom-Programme erst compilierst, um dann die .bin zu verarbeiten, dann tut man sich schwer. Die bin ist ja für den jeweiligen mc zugeschnitten. Schon bist du den Anfang vom Programm findest, nach dem Anlegen der Variablen, setzen der Register und und und. Ne, den bascom-Text nehmen und die gefundenen Befehle einfach ausführen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • @tschoeatsch

      Je deswegen redet man darüber. Maschinenbefehle interpretieren oder doch einen Basic-Interpreter.

      Ein Emulator z.B. verwendet fertig compilierte Programme, die ausgeführt werden.
      Da hat man nix basic-mäßiges. Da gehts ja auch, die Maschinenbefehle zu interpretieren und auszuführen.

      Aber wie gesagt, genau darum geht es, darüber reden, wie sowas funktionieren könnte.
      Kaum macht man es richtig - und schon geht's!
    • Dann zerleg Deine Idee noch einmal in Komponenten, um herauszuarbeiten, was Du willst und was gehen könnte:
      - zeichenorientierte Ausgabe auf TV bzw. Monitor. Da gab es irgendwo mal etwas
      - Tastatur. check.
      - seriell. check.
      - Lesen/Schreiben SD-Karte. check.
      ...

      - Einlesen einer Zeichenkette über Tastatur, Interpretation einfachster Basic-Befehle. Sollte machbar sein.
      - Einlesen einer Datei von SD-Karte und zeilenweise Interptetation einfacher (Basic)Befehle. Könnte wohl klappen.
    • Wenn du die Programme mit bascom schreiben willst, dann musst du ja eine $regfile angeben. Dadurch unterscheiden sich dann auch die .bins, wenn du für verschiedene Kontroller das gleiche Programm compilierst. Das ist doch dann mühsam, den Maschinencode auf den tatsächlich in deinem vorhandenen Rechner enthaltenen Kontroller umzumodeln. Wenn du die .bas verwendest, ist nur $crystal für waits und baud interessant, der Rest ist egal. Dann wird ein 'waitms 50' als Text gelesen und ein waitms 50 ausgeführt. Stell dir mal vor, du müsstest die ganzen Register zusammen klauben, um einen timer zu setzen a_28_2c02f089
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------