Forum: Mikrocontroller und Digitale Elektronik Embedded OS für uC


von Christian (Gast)


Lesenswert?

Hallo Zusammen,


nachdem ich so ziemlich alles auf dem Markt abgegrast habe, glaube ich
mal wieder alles selber machen zu müssen :-)

PIC's weggeschmissen und mich nach anderen uCs umgesehen, dabei gefiel
mir der ATMega161 (TQFP64 4K RAM / 16K Flash glaube ich) ganz gut.

Ich möchte ein OS haben, auf dem ich Programme (am besten .exe (also
DOS)) in ein EEPROM flashen kann und diese dann ausführen kann.


Mir ist wohl klar, das ich eine "mindest Architektur" benötige, die
zumindest aus uC, RAM und Programmspeicher EEPROM besteht.

Gibt es sowas schon ?

Wenn ja, wo kriegen, was kosten ?

Ansonsten dachte ich an einen Port von FreeDOS www.freedos.org, der
Source ist offen und das wäre das was ich brauche ...

Hat jemand Tips oder möchte mich dabei unterstützen (im Sinne von
Teambildung und SourceForge...)

Gruß Christian

von Peter D. (peda)


Lesenswert?

Wenns nur um das Flashen und Ausführen geht, sowas nennt man meistens
Monitor oder Bootloader. Such mal unter diesen Begriffen.

Ein ausgewachsenes OS ist nur nötig, wenn man Dateisysteme (DOS) oder
Multitasking haben will.


Peter

von Christian (Gast)


Lesenswert?

Hallo Peter,


ich benötige ein "Dateisystem" und Multitasking.
Wie das FS nun aussieht ob FAT oder Ext2FS oder ...
ist egal ...

Ich sag ja, ich brauche dafür eine Mini-Architektur ...


MfG

Christian

von thkais (Gast)


Lesenswert?

Habe ich das richtig gelesen? Du möchtest *.exe (DOS) Programme auf
einem Controller laufen lassen? Da fehlt schonmal die nötige
Kompatibilität zum 8086. Bei einem Controller ist es leider so, daß man
so ziemlich alles selber machen muß. Ein komplettes DOS in 16K Flash
unterzubringen ist vielleicht möglich, aber meines Wissens hat das noch
niemand gemacht. Üblicherweise schreibt man, nachdem man sich Gedanken
über die Aufgabenstellung gemacht hat, das Programm in Assembler,
BASIC, oder auch C und schickt es zum Controller. Ein OS, ähnlich wie
DOS, gibts normalerweise nicht - das muß man sich gleich mit
entwickeln.

von jornbyte (Gast)


Lesenswert?


von Christian (Gast)


Lesenswert?

Hallo,

danke für die Antworten...

@Jornbyte: ja, kenne ich bis auf liqurice und cornell, entspricht aber
nicht meinem Anwendungsfall...., trotzdem Danke !

@thakias: nun, exe ist das am besten dokumentierte Format, ich habe es
hier auch nur als Beispiel verwendet...

Ich muss auf ein Gerät individuell Software flashen können (evntl.
CF-Card) die dann ausgeführt werden kann.

Die o.g. Beispiele Basieren auf "Threads" (wenn man das so nennen
kann...) bedeutet also, wenn Software hinzukommen soll, so mus ALLES
neu kompiliert und geflasht werden ....

Ich rede ja von einer Art Architektur bestehend aus CPU, CF-Card, RAM
und I/O...

Der Speicher des uC würde dann nur für den "Kernel" oder
"Command.com" (wenn man so will) benutzt werden, alles weitere dann
auf einem extra RAM...

Oder gibt es bessere Vorschläge ?

von Jens Renner (Gast)


Lesenswert?

Aber wenn ich das richtig einschätze, kommt dann halt bestensfalls ein
Interpreter dabei raus (wegen .exe und AVR mit RAM; der kennt ja keinen
ext. Programmspeicher).
Und sind exe-Dateien nicht ein schlechtes Beispiel? Was ist mit
Opcodes, für die Du auf dem Controller nicht mal annähernd ein Pendant
hast?

Wie bereits oben gesagt wurde, dürfte die Architektur Probleme machen,
die sich in so einem Controller nicht nachbilden lässt.
Was nicht heißt, dass ein µC-OS nicht grundsätzlich interessant wäre...

von Matthias (Gast)


Lesenswert?

Hi

dafür ist ein AVR nicht geeignet und auch nicht gedacht. Das erste
Problem auf das du dabei triffst ist das der AVR keinen Programmcode
aus dem RAM ausführen kann (Harvard-Architektur). Wenn du sowas machen
willst brauchst du einen Rechner der Programmcode auch aus dem RAM
ausführen kann. Eine Möglichkeit ist da z.B. der 8051 bei dem man dann
allerdings ein bischen mit RD/ WR/ und PSEN/ herumtricksen muß. Also
auch nicht ideal. Also eine Stufe höher. M16C wäre eine Alternative.
Der kann "dank" von Neumann-Architektur Programm auch aus dem RAM
ausführen ist allerdings auch etwas komplexer als der AVR.

Matthias

von Christian (Gast)


Lesenswert?

@Matthias:


Danke für den Tip, da ich mich noch nicht wirklich festgelegt habe,
wlecher uC zu verwenden ist, bin ich da noch offen, werde mir mal Infos
zum M16C besorgen...

Nochmal: wer mich dabei unterstützen will, ist herzlich willkommen ...

von Peter D. (peda)


Lesenswert?

Das Hauptproblem dürfte der Programmierstil sein.

MC-Programme sind immer so geschrieben, daß sie alleiniger Herscher
über alle Ressourcen sind und direkt darauf zugreifen. Dadurch sind sie
auch immer sauschnell.

Sollen sie aber noch mit anderen Anwendungen zusammenarbeiten, die zur
Compilezeit noch nicht bekannt waren und daher noch keine Ressourcen
belegt haben, gibts Krieg.


Die Programme müssen also komplett anders programmiert werden. Jeder
direkte Hardwarezugriff ist verboten. Es muß irgendein BIOS existieren,
was dann alleinig sämtliche Ressourcen und Rechte verteilt, also wer
darf jetzt die UART benutzen, wer welchen ADC-Kanal, welchen Portpin,
welchen Timer usw.

Damit dürfte aber der Echtzeitvorteil von MCs flöten gehen, da ja
indirekte Zugriffe, die erst über das BIOS umgeleitet werden müssen,
schnarchlam werden.


Ich sehe jetzt auch nicht, wo bei MCs der Vorteil eines OS liegen soll.
Ein Bootloader ist doch vollkommen ausreichend, um zusätzliche
Funktionen oder Bugfixes nachträglich aufzuspielen.

Grundsätzlich unterschiedliche Programme kann man eh nicht auf einem MC
ausführen, da sie ja immer in einer speziellen Hardware stecken. Ein TV
kann nie Wäsche waschen, bzw. ein Waschmaschine kann nie Geschirr
spülen.


Für das, was Du machen willst, ist wohl ein Europakarten-PC mit zig
MBytes RAM/Flash das richtige.
Ich wundere mich bloß, was Du Dir davon versprichst bzw. für welche
Anwendungen Du sowas sinnvoll einsetzen willst. Handys, Spielekonsolen
usw. gibts doch schon genug.


Peter

von Christian (Gast)


Lesenswert?

@Peter:

Ich denke eher der Lernerfolg als die Verwendbarkeit spielen eine
Rolle, auf Geschwindigkeit kommt es mir nicht an. Selbst wenn 1/4 der
Leitung flöten gehen, wäre es immer noch genug ...

Europa-Karten-PCs sind viel zut teuer (Dil/NET-PCs kosten einzeln 180 €
! für ein DX/33)...

von Binnesmann (Gast)


Lesenswert?

Hallo,

ein System, das man für vieles verwenden kann ist immer interessant.
Ich habe mir das große Board von Rakers gekauft. Bin mit dem Umfang
soweit zufrieden. Wenn ich Deine Bedürfnisse richtig verstehe und Du
auch schon mit dem Einsatz von SMC/CF liebäugelst, warum nicht ein µC
mit kleinem externen ROM im unteren Speicherbereich (Bootloader) und
ein weiteres ext. Rom auf Basis von SMC/CF. Dort kannst Du wie in einer
Spielekonsole Dein Programm rein schreiben. Ist vom Prinzip her das was
schon der C16 oder der alte ATARI gemacht hat. Ist die SMC/CF Karte
eingelegt kannst Du direkt mit dem Programm starten ohne das erst über
den PC zu laden.

Gruß Binnesmann

von Tobias (Gast)


Lesenswert?

Hast du dich da nicht "leicht" übernommen? Ich habe mal einen
Ein-Platinen-Computer mit einem Z80 konstruiert, er war bescheiden
ausgestattet, hat aber funktioniert. "Programmiert" wurde er über ein
sebstentwickeltes Interface über den LPT. Die Software (vom Interface)
war noch nicht so komfortabel (war eines meiner ersten richtigen
Delphi-Programme), ich konnte damit aber Bitmuster in den statischen
Ram überspielen und auch auslesen. An Multitasking war da nicht zu
denken. Die Programmdateien enthielten nur Z80-Befehle in Hex-Code und
mussten nach jedem mal Strom abklemmen wieder neu überspielt werden.
Diese Dateien könnte man annähernd als COM-Dateien bezeichnen, niemals
aber als EXE. Eine COM-Datei liegt im RAM zur Laufzeit genauso vor wie
auf der Festplatte. Eine EXE-Datei nicht! Deswegen hat eine EXE auch
einen Header, der vor der Ausführung gelesen und ausgewertet wird. Es
wird unteranderem geprüft, ob überhaupt die Systemvoraussetzungen
(genügend Speicher etc.) erfüllt sind. Wenn du also ein Projekt zum
Erfahrungen sammeln durchführen willst, dann hättest du dein Ziel höher
nicht stecken können. Wenn es um Erfolgserlebnisse geht, dann fang
klein an, denn an soeinem Projekt scheiterst du garantiert, wenn du
nicht das notwendige Know-How und genügend Erfahrung mit dem Zielsystem
hast. Ein Interpreter (wie jemand schon sagte) hingegen wäre das, was
deiner Vorstellung am nächsten kommt. Soetwas gibt es aber schon,
nämlich C-controll von Conrad. Nur Multitasking kann der auch nicht und
meiner Meinung nach ist das ganze auch viel zu langsam. Ein Freund von
mir wollte damit mal Zeit im Bereich von 0.1..10 Millisekunden messen.
Das war nicht möglich; kleinste Zeiteinheit 20 Millisekunden, den AVR,
mit seinem optimierten Programm, hingegen mussten wir noch bremsen.
Wenn du, was ich nur vermuten kann, noch nicht soviel mit
(verschiedenen) Mikrocontrollern und/oder -prozessoren gearbeitet hast,
dann ist es nicht empfehlenswert sich die Königsdisziplin auszusuchen.

T.

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.