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
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
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
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.
http://www.barello.net/avrx/ http://home.eunet.no/~jen/ http://www.ucos-ii.com/ http://www.nbb.cornell.edu/neurobio/land/STUDENTPROJ/1999to2000/greenblatt/index.html http://liquorice.sourceforge.net/ http://xmk.sourceforge.net/docs/
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 ?
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...
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
@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 ...
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
@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)...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.