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

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • stefanhamburg schrieb:

      Ich denke, das Programm (von Tastatur oder - besser - SD-Karte) wäre nicht BASCOM, sondern Basic.
      Das BASCOM-Programm müsste (Zeichenketten) einlesen, interpretieren, abarbeiten.
      Genau. Und wenn man bascom-Syntax verwendet, tut man sich am leichtesten.
      Raum für Notizen

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

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

      Guter Einwand

      Wenn man auf einem PC ein Programm schreibt, wird das Compilat für Intelcompatible Prosessoren übersetzt.

      So etwa würde es auch dann auch funktionieren.
      Man muss natürlich mit Regfile den Prozessor einstellen, der sich im System nicht ändert. Auch der Crystal bleibt fix.

      Ob das Mühsam ist die Befehle zu interpretieren weiß ich nicht. Vielleicht gibt es ja einen Trick über eine Sprungtabelle oder so. Also Maschinencode lesen (Word), über eine Maske Bits ausblenden. So könnte man den Maschinencode ermitteln und dann ein Spungziel aus einer Tabelle aufrufen.

      Ob das so einfach gehen könnte? Keine Ahnung. Ist ne Idee.

      Übrigens, wenn man das Programm in Bascom compilieren wollte, kann man z.B. die Vektortabelle ausblenden und den Code an eine bestimmte Offset-Adresse compilieren. Ähnlich wie ein Bootloader.

      Wie das Ladeprogramm allerdings dieses Programm in den SRAM lädr, bzw, die Sprungadressen umbiegt ist mit noch schleierhaft.
    • @Mitch64:
      - Wie sind denn Deine Kenntnisse?
      - Möchtest Du am Ende IRGENDETWAS davon bauen?
      - Oder möchtest Du „nur“ über verschiedene Rechnerarchitekturen lernen?

      Zu viel Theoretisieren führt glaube ich zu weit. Dann solltest Du Informatik studieren oder entsprechende Informatikbücher lesen.

      Oder Du strukturierst (Dir) das wie oben angedeutet und fängst dann an. Ich würde mir den dicksten von BASCOM unterstützten Controller nehmen und mit der zeichenorientierten Bildschirmausgabe anfangen. Dann einfache Programme dafür schreiben usw.
    • Ich denke die Diskussion hier führt wirklich zu nichts.

      Dennoch bleibt die Frage für mich interessant, ob man mit Atmel-Controller einen kleinen Rechner mit kleinem Betriebssystem bauen kann.

      Ich denke grundsätzlich: man kann.
      Ist aber nicht easy.

      Natürlich gibt es da verschiedene Probleme, die man lösen muss. Z.B. kompilierte Programme aus dem SRAM laufen zu lassen und die Sprungbefehle umzubiegen. Darum sollte es ja in der Diskussion gehen.

      @stefanhamburg
      - Meine Kenntnisse sind recht gut, aber nicht allumfassend
      - Nein ich möchte davon nichts bauen, es ist nur mal theoretisch
      - Es geht mir auch nicht darum mehr über Rechnerstrukturen zu lernen, die kenne ich soweit

      Nur mal noch als Schlussbemerkung:
      Bevor es den Raspberry Pi gab, kam auch keiner auf die Idee, einen PC mit Betriebssystem mit einem Atmel-Controller zu bauen.

      Dann hat es aber einer versucht und es klappte. Raus kam ein Gerät, das man heute als Raspberry Pi kennt. Der hat einen Atmel-Controller und ein Betriebssystem. Es ist zwar keinen ATMega am werkeln, aber Atmel.

      Die Frage, wie man ein Programm (compiliert) aus dem SRAM läufen lassen kann, ist damit nur teilweise beantwortet.

      Trotzdem danke ich euch für eure Teilname, Ideen, Anregungen. in dieser Diskussion.

      Den Thread dürft ihr dann schließen.

      Gruß Mitch
    • Mitch64 schrieb:

      Ich denke die Diskussion hier führt wirklich zu nichts.
      sehe ich auch so.
      Es ist natürlich Quatsch, eine DOS ähnliche Maschine mit einem AVR zu basteln, der hat ja von Grund auf schon die falsche Architektur für so was.
      Daneben der fehlende Adressraum, der 8 Bit Bus, das reicht höchstens für einen 8088.
      Und die Programme von damals will doch eh keiner mehr nutzen (müssen)
    • Es war ja auch nur ein Gedankenspiel. Stell dir vor, du landest auf dem Mars bisschen zu hart, und dabei ist dein Pc zerbröselt. Jetzt hast du nur noch die AVRs dabei, die du mit deinem Basteleien zum Zeitverteib während des Flugs mitgenommen hast. Jetzt hättest du diese Problemstellung, aus den AVRs was Pc-ähnliches zu basteln, um den Rückflug berechnen zu können.
      Und, wie @Zitronenfalter schrieb, die Grafikkarte wäre zu machen.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Möglich ist vieles, man kann auch einen Prozessor aus 74xx und einem Haufen Transistoren bauen (Megaprocessor)...

      Für ein General-Purpose OS ist aber die AVR-Architektur völlig ungeeignet, zum einen wie bereits erwähnt der geringe Addressraum, hauptsächlich aber dass die Ausführung von Code auf den Flash beschränkt ist, was ein dynamisches Laden/Ausführen von Programmen verhindert.
      Umgehen könnte man das in einer wie von dir beschriebenen Multi-Controller-Konfiguration, ein Controller übernimmt die Aufgabe eines ISP-Programmers und programmiert das jeweils gewünschte Programm zb. von einer SD-Karte auf den "Programmausführungscontroller". Während man so etwas umsetzen würde, hätte man genug Zeit, darüber nachzudenken, ob das auch sinnvoll ist :)

      Aber ein Mikrocontroller-taugliches Betriebssystem auf einem AVR ist kein Problem, siehe zb. FreeRTOS, µC/OS uvm.



      Geht auch mit Bascom (siehe Dateianhang), hier sieht man den "Task-Manager" über die serielle Konsole. Das läuft auf einem XMega (Port auf Mega ist geplant), führt 4 Tasks aus (2x Led blinken und jeweils unterschiedliche Zeiten warten, ein Konsolen-Task und der Idle-Task, der ausgeführt wird wenn sonst nichts laufen soll), jeder Task hat seine eigenen Stacks, dynamische Speicherverwaltung, Semaphore/Mutex, Round-Robin Scheduling mit Prioritäten, ... Wird auch veröffentlicht wenn ich soweit bin ;)
      Dateien
    • Jetzt frag' ich mal ganz leise nach, für was braucht man sowas? Mit einem Pc verbinde ich eine Datenverarbeitung, die mit verschiedenen Spezialprogrammen Bild-, Ton-, Datenbankdaten arbeitet und ein Ergebnis auf Drucker, Bildschirm... ausgibt. Die Programme werden häufig gewechselt. Mit einem mikrocontroller verbinde ich eine Datenverarbeitung, die nur mit einem Spezialprogramm arbeitet und dann Maschinen steuert. Mit diesen Ansätzen wird (aus meiner Sicht) jetzt versucht, einen Spezialisten zu einem allrounder zu machen. Steckt da jetzt mehr als Lust am Basteln dahinter? Das ist jetzt frei von Kritik, ich frage wegen Unwissenheit.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Im Großen und Ganzen aus Komplexitäts- bzw. Übersichtsgründen, hängt natürlich davon ab, was die Applikation macht... Bei den kleineren AVRs kommt man aus Platzmangel whs gar nicht soweit, dass das ein Problem werden könnte, die Programme kann man noch gut "händisch" auf Paralellität (riesige State-Machines...) auslegen.
      Aber zb. ein 2560 bringt schon eine Menge unter, über EBI hätte man auch noch mehrere MB Ram zur Verfügung... Natürlich kann man die auch mit konventionellen Programmen füllen, aber oft wird es dann einfacher, das Programm in kleinere Einheiten (-> Tasks) aufzuteilen, die für sich genommen ihre Funktion erfüllen und sich nicht um was sonst noch auf dem Controller läuft, kümmern müssen.
      Auf ARM-Cores habe ich bis jetzt zb. nur mit OS programmiert (aktuell ein Bluetooth-fähiger Controller, bei dem der vom Hersteller mitgelieferte Bluetooth-Stack zum Teil in einem eigenen Task läuft, hier hätte man zb. gar keine andere Wahl)
    • Zugegeben, es dürfte auch einen Unterschied machen, ob man professionell oder als Hobby entwickelt :) Wenn Zeit eine Rolle spielt, kann ein OS sehr hilfreich sein, da es einem die ganze Verwaltung, wann was ausgeführt wird, was sich nicht gegenseitig beeinflussen darf, etc. abnimmt. Die Einarbeitung in die OS-Programmierung kann schon eine große Hürde sein, da sich die Struktur von konventionellen Programmen schon unterscheidet, aber wenn man mal drin ist, ... :)
      Ganz nebenbei steiegert das auch die Wiederverwendbarkeit von Code, weil dieser von Haus aus schon modularisiert ist und sich leicht in ein neues Projekt einfügen lässt.