Forum: Mikrocontroller und Digitale Elektronik Linux auf einen Atmega?


von Krisi K. (haxi)


Lesenswert?

Könnte man auf einem Atmega xxx Linux drauf bekommen?
Und wenn ja wie?

von Purzel H. (hacky)


Lesenswert?

Und was soll das ? Wegen der KDE ?

von Ulrich (Gast)


Lesenswert?

Bei den 8 Bit µCs wird Linux nicht gehen und macht auch keinen Sinn. 
Wenn überhaupt ist da ein spezielles µC-Betreibssystem wie RTOS 
angesagt. Meistens wird man aber ganz ohne Betreibsystem arbeiten, denn 
das Programm ist ja fest und Speicher eher knapp.

Für die AVR32 Serie gint es Linux, dass sind aber auch 32 Bit µCs.

von Malte _. (malte) Benutzerseite


Lesenswert?

Krisi K. schrieb:
> Könnte man auf einem Atmega xxx Linux drauf bekommen?
> Und wenn ja wie?
Nur wenn du verrückt genug bist auf einem Atmega einen CPU Emulator für 
eine von Linux unterstützte 32Bit CPU zu implementieren.

Aber das wirst du nicht wollen. Da das erstens sehr Aufwändig ist und 
zweitens hinterher total langsam läuft.

von Ch D. (chrisu) Benutzerseite


Lesenswert?

War es nicht so das der nur Programme aus dem Flash ausführen kann? also 
dafür gibt es kein passendes OS .....

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

naja

nen 8Bit Basicinterpreter ließe sich realisieren ;-)

von Purzel H. (hacky)


Lesenswert?

Man koennte natuerlich fuer einen Mega256 einen 386 emulator schreiben 
und den auszufuehrenden Code von einem flash nach bedarf laden. Die fuer 
ein Linux noetigen Megabytes an RAM haette man natuerlich nicht, das 
wuerde dann auf die 8k Rein- und Rausgeswappt. Ueber ein SPI 
Interface...

von Sigint 112 (sigint)


Lesenswert?

Winfried J. schrieb:
> naja
>
> nen 8Bit Basicinterpreter ließe sich realisieren ;-)

Gibts schon: http://www.jcwolfram.de/projekte/avr/chipbasic32/main.php

von Gast (Gast)


Lesenswert?

Wäre es möglich nen 2MHz 386er auf nem 20Mhz AVR zu emulieren? Halt mit 
viel externem RAM + SD-Karte?

von TestX .. (xaos)


Lesenswert?

Gast schrieb:
> Wäre es möglich nen 2MHz 386er auf nem 20Mhz AVR zu emulieren? Halt mit
> viel externem RAM + SD-Karte?

von franz (Gast)


Lesenswert?

>nö

quatsch, natürlich ist es möglich, nur eben extrem langsam.

von giec (Gast)


Lesenswert?

Nimm doch einfach ein geeignetes vorhandenes Linux (embedded oder so) 
und passe es an eine möglichst leistungsfähige AT(X)Mega Plattform und 
den Compiler an.

Gewisse Einschränkungen wird es dann wohl geben, aber durch Aufbohren 
der Plattform mit Ram, evtl. Netzwerkzugriff und Netzwerkspeicher, kann 
man die Limits vielleicht etwas hinausschieben.

Ein Blick auf Busybox wäre sicher auch nicht verkehrt.

von Justus S. (jussa)


Lesenswert?

franz schrieb:
>>nö
>
> quatsch, natürlich ist es möglich, nur eben extrem langsam.

dann ist es aber kein 386er mit 2 MHz mehr...

von giec (Gast)


Lesenswert?

Fundierte Kenntnisse des Linux-Kernels und der ganzen Linux-Umgebung 
usw. sind natürlich unerlässlich für sowas, wenn Du die nicht hast, 
vergiss es für's erste und fang erstmal damit an, Dich dort 
einzuarbeiten.

von pq (Gast)


Lesenswert?


von Gast (Gast)


Lesenswert?

Na was fehlt dem AVR denn eigentlich für Linux? Mir fällt eigentlich nur 
die MMU ein. Linux für einen 8-Bitter zu compilieren sollte ein 
entsprechender Compiler ja hinkriegen. Die Grösse des RAM auf einem 
hypothetischen AVR lässt sich "gross genug" annehmen, wobei die 
Adressierung aber schnell zum Problem wird.

> quatsch, natürlich ist es möglich, nur eben extrem langsam.

Ja. Und dann erreicht er seine simulierten 2 MHz nicht, also geht es 
nicht.

von franz (Gast)


Lesenswert?

>Ja. Und dann erreicht er seine simulierten 2 MHz nicht, also geht es
>nicht.

Du hast recht,ich habe die 2MHz übersehen .... :-(

Hier sind die Atmels mit Linux:
http://www.ixbat.de/index.php?page_id=237
http://mikrocontroller.jacob-pirna.de/avr_webserver_projekte_ngw100.html

welchen nehmt ihr?

von Gast (Gast)


Lesenswert?

Das sind AVR32

von Malte _. (malte) Benutzerseite


Lesenswert?

Gast schrieb:
> Na was fehlt dem AVR denn eigentlich für Linux? Mir fällt eigentlich nur
> die MMU ein.
Das ist ausnahmsweise kein Problem - solange die Software nicht in den 
falschen Speicherberich schreibt.

> Linux für einen 8-Bitter zu compilieren sollte ein
> entsprechender Compiler ja hinkriegen.
Einige Teile des Kernels dürften in Assembler geschrieben sein.

> Die Grösse des RAM auf einem
> hypothetischen AVR lässt sich "gross genug" annehmen, wobei die
> Adressierung aber schnell zum Problem wird.
Und das ist ein ziemlich großes Problem.

>
>> quatsch, natürlich ist es möglich, nur eben extrem langsam.
>
> Ja. Und dann erreicht er seine simulierten 2 MHz nicht, also geht es
> nicht.
Ja, ich denke man landet eher bei 2kHz.

von Simon K. (simon) Benutzerseite


Lesenswert?

Wie schon genannt, hat der AVR nur ein Harvard Architektur.

von Gast (Gast)


Lesenswert?

> Wie schon genannt, hat der AVR nur ein Harvard Architektur.

Da sehe ich keine grossen Probleme, so lange der Compiler sinnvoll damit 
umgehen kann.

von Purzel H. (hacky)


Lesenswert?

>Harvard Architektur

Erlaubt einen 386 code interpreter ab Flash zu operieren.

von Simon K. (simon) Benutzerseite


Lesenswert?

Was hat denn das für ein Sinn. Dann läuft das Linux ja eh nicht auf dem 
AVR. Das dann verwendete Linux wär ja kein AVR Port dann. Aber darum 
geht es doch hier.

von yalu (Gast)


Lesenswert?

Mini Troll schrieb:

> Man koennte natuerlich fuer einen Mega256 einen 386 emulator schreiben
> und den auszufuehrenden Code von einem flash nach bedarf laden. Die
> fuer ein Linux noetigen Megabytes an RAM haette man natuerlich nicht,
> das wuerde dann auf die 8k Rein- und Rausgeswappt. Ueber ein SPI
> Interface...

Ich habe so etwas Ähnliches mit einem ATmega8 aufgebaut, nur noch viel
besser:

Damit das Ganze nicht zu langsam wird, wird der 386-Emulator durch einen
externen Coprozessor unterstützt, mit dessen Hilfe sogar die Ausführung
von 486- und Pentium-Code möglich ist. Der Coprozessor kann per DMA auf
512MB RAM zugreifen, was zum einen sehr schnell ist und zum anderen das
Problem des eingschränkten Adressraums des AVRs umgeht. Die Linux-
Dateien sind nicht in einem Flash, sondern auf einer 160GB-Festplatte
abgelegt, auf die der Coprozessor ohne Umweg über den AVR zugreifen
kann. Ein an den AVR angeschlossenes 4×27-Text-LCD und eine PS/2-
Tastatur können als Linux-Konsole dienen, die aber so gut wie nie
verwendet wird, da der Coprozessor über entsprechende Zusatzhardware
auch ein 1600×1200-Farbgrafik-LCD ansteuern kann, womit sogar X11
lauffähig ist. Da sich die Grafikhardware aus Coprozessorsicht wie ein
ATI-Chip verhält, muss man nicht einmal einen speziellen Treiber dafür
schreiben. Natürlich ist das System netzwerkfähig. Um einen hohen
Datendurchsatz zu erreichen, ist auch hier eine direkte Kommunikation
zwischen Coprozessor und Ethernet-Hardware möglich. Selbstverständlich
steht über ein entsprechendes API sämtliche integrierte AVR-Peripherie
(I/O-Ports, ADC, Timer usw.) für die Nutzung in Linuxprogrammen zur
Verfügung. Ein weiteres Highlight: Die AVR-Software kann zur Laufzeit
(also ohne das Linux neu zu booten) modifiziert werden. Für die Dauer
des Umprogrammierens hält der Coprozessor den Linux-Betrieb aufrecht.

Alles in allem hat man damit ein AVR-Linux, dass performancemäßig selbst
für 3-D-Spiele völlig ausreichend ist.

von Ulrich (Gast)


Lesenswert?

Man braucht auf so einem µC eigentlich gar kein Betreibssystem. 
Bestefalls könnte man einen Bootloader als eine Art Betreibsstystem 
ansehen.

So langsam sind die AVRs auch gar nicht. Die Simulation eine MOS6502 
soll mehr als 2 MHz Takt entsprechen. Man wird sich auch keinen 386er 
als CPU aussuchen, weil zu kompliziert. Eher schon sowas wie MIPS, ARM 
oder so. Die ersten Unix-Versionen liefen auf damaligen Großrechnern 
(VAX , PDP...), die auch nicht wesentlich leistungsfähiger als ein 
größerer 8 Bit AVR waren.

Wenn man Linux auf einem µC haben will, dann aber doch lieber AVR32 oder 
ARM.

von Andreas K. (derandi)


Lesenswert?

Mir stellt sich grade die Frage nach dem Sinn des ganzen...

von Simon K. (simon) Benutzerseite


Lesenswert?

Ulrich schrieb:
> Die ersten Unix-Versionen liefen auf damaligen Großrechnern
> (VAX , PDP...), die auch nicht wesentlich leistungsfähiger als ein
> größerer 8 Bit AVR waren.
Wird hier auch mal das Geschriebene gelesen? Ist ja schön, dass du die 
Leistungsfähigkeit mit einem AVR vergleichst, aber Linux auf einem AVR 
ist nicht möglich, da es sich um eine Harvard Architektur handelt und 
Linux, soweit ich weiß, nur auf Von Neumann Architekturen läuft. 
Zumindest muss Programmcode aus dem RAM ausgeführt werden können.

von Uhu U. (uhu)


Lesenswert?

Und selbst wenn man Linux irgendwie auf den Atmega zum laufen bringen 
könnte - allein der Boot dürfte zu einer Geduldprobe werden.

von Hc Z. (mizch)


Lesenswert?

Und eine MMU ist ebenfalls zwingend erforderlich.  Wie soll sonst 
ge-fork()-t werden?

von neuer (Gast)


Lesenswert?

.....Ich habe so etwas Ähnliches mit einem ATmega8 aufgebaut, nur noch 
viel
besser:

Damit das Ganze nicht zu langsam wird, wird der 386-Emulator durch einen
externen Coprozessor unterstützt, mit dessen Hilfe sogar die Ausführung
von 486- und Pentium-Code möglich ist......


Ach, jetzt hilft doch ein anderer Porzessor mit...oh...
Sollte das der Atmega nicht alleine schaffen ,ihr schlaumeier...

von chris (Gast)


Lesenswert?

>So langsam sind die AVRs auch gar nicht. Die Simulation eine MOS6502
>soll mehr als 2 MHz Takt entsprechen. Man wird sich auch keinen 386er
>als CPU aussuchen, weil zu kompliziert. Eher schon sowas wie MIPS, ARM
>oder so. Die ersten Unix-Versionen liefen auf damaligen Großrechnern
>(VAX , PDP...), die auch nicht wesentlich leistungsfähiger als ein
>größerer 8 Bit AVR waren.

Wie wäre es mit einem 32Bit 8Core Prozessor?:
http://www.hobby-roboter.de/forum/viewtopic.php?f=4&t=76

von Simon K. (simon) Benutzerseite


Lesenswert?

neuer schrieb:
> .....Ich habe so etwas Ähnliches mit einem ATmega8 aufgebaut, nur noch
> viel
> besser:
>
> Damit das Ganze nicht zu langsam wird, wird der 386-Emulator durch einen
> externen Coprozessor unterstützt, mit dessen Hilfe sogar die Ausführung
> von 486- und Pentium-Code möglich ist......
>
>
> Ach, jetzt hilft doch ein anderer Porzessor mit...oh...
> Sollte das der Atmega nicht alleine schaffen ,ihr schlaumeier...

Du hast anscheinend die Ironie in diesem Post nicht kapiert.

von Purzel H. (hacky)


Lesenswert?

>Damit das Ganze nicht zu langsam wird, wird der 386-Emulator durch einen
externen Coprozessor unterstützt, mit dessen Hilfe sogar die Ausführung
von 486- und Pentium-Code möglich ist......


Durfte der Mega8 Tastatur und Maus eines PC simulieren ?

von Maxxie (Gast)


Lesenswert?

> Und eine MMU ist ebenfalls zwingend erforderlich.  Wie soll sonst
> ge-fork()-t werden?

Noe.
http://www.uclinux.org/

von Alexander S. (esko) Benutzerseite


Lesenswert?

yalu schrieb:
> Ich habe so etwas Ähnliches mit einem ATmega8 aufgebaut, nur noch viel
> besser:
>
> Damit das Ganze nicht zu langsam wird, wird der 386-Emulator durch einen
> externen Coprozessor unterstützt, ...

You made my day.

von Hc Z. (mizch)


Lesenswert?

Maxxie schrieb:
>> Und eine MMU ist ebenfalls zwingend erforderlich.  Wie soll sonst
>> ge-fork()-t werden?
>
> Noe.
> http://www.uclinux.org/

Ich schrieb von fork und der Unmöglichkeit, das ohne MMU zu machen, 
richtig?

Es kommt "Noe" und uclinux.  Ein Subset von Linux also und kein Linux 
wie es sonst läuft.  Aus der dortigen FAQ:
1
        1. uClinux does not implement fork();  instead it implements vfork(). 
2
      This does not mean no multitasking, it simply means that the 
3
      parent blocks until the child does exec() or exit().

Nix mit "Noe".  Es hat keinen fork(), wie zu erwarten war.  Statt dessen 
wird der Elternprozess geblockt.  In den meisten fork()-Szenarien keine 
angenehme Aussicht.

Inwieweit das noch den Anforderungen des TE und des Rest der Welt an ein 
Linux erfüllt, überlasse ich mal eurem Urteil.

von Maxxie (Gast)


Lesenswert?

Dummerweise hast du geschrieben, dass das Threadthema nicht ohne MMU 
möglich ist, eben weil fork fehlt. Das ist aber offensichtlich falsch.

Was es nicht mehr erfüllt ist der Posix Standard. Der ist aber kein 
zwingend nötiger Teil eines OS/Linux sondern eine (von mehreren) 
Interface-Spezifikationen zu den OS-Funktionen.

von yalu (Gast)


Lesenswert?

> Damit das Ganze nicht zu langsam wird, wird der 386-Emulator durch
> einen externen Coprozessor unterstützt, ...

>> Ach, jetzt hilft doch ein anderer Porzessor mit...oh...
>> Sollte das der Atmega nicht alleine schaffen ,ihr schlaumeier...

Hmm ...

> Du hast anscheinend die Ironie in diesem Post nicht kapiert.

> Durfte der Mega8 Tastatur und Maus eines PC simulieren ?

> You made my day.

... Aufatem!

Und ich dachte erst, der nicht existierende Smiley sei mal wieder zu
klein geraten :)

Ja, der "Coprozessor" ist nichts weiter als ein Pentium auf einem Main-
board in einem PC-Gehäuse unter meinem Schreibtisch mit einem zufälli-
gerweise über ISP und einer RS-323-Schnittstelle angeschlossenem Loch-
raster-ATmega8-Board, das ich nach der letzten Bastelstunde vergessen
habe auszustecken ;-)

von Malte _. (malte) Benutzerseite


Lesenswert?

Hazeh Zimmerer schrieb:
>
>
1
> 
2
>         1. uClinux does not implement fork();  instead it implements
3
> vfork().
4
>       This does not mean no multitasking, it simply means that the
5
>       parent blocks until the child does exec() or exit().
6
>
Ok, wieder was gelernt.

> Nix mit "Noe".  Es hat keinen fork(), wie zu erwarten war.  Statt dessen
> wird der Elternprozess geblockt.  In den meisten fork()-Szenarien keine
> angenehme Aussicht.
Die meisten fork() Aufrufe gehen aber so weiter, dass danach eben exec() 
aufgerufen wird. Das ist unter Unix der übliche Weg neue Programme zu 
starten.

von Hc Z. (mizch)


Lesenswert?

Maxxie schrieb:
> Dummerweise hast du geschrieben, dass das Threadthema nicht ohne MMU
> möglich ist, eben weil fork fehlt. Das ist aber offensichtlich falsch.

Wo?  Du musst ein anderes Forum lesen.

> Was es nicht mehr erfüllt ist der Posix Standard. Der ist aber kein
> zwingend nötiger Teil eines OS/Linux sondern eine (von mehreren)
> Interface-Spezifikationen zu den OS-Funktionen.

Es ist dann kein Linux mehr, sondern allenfalls ein uCLinux.  Dein 
gewohntes Desktop-Linux läuft ohne fork() nicht mehr.

Ich habe sehr lange mit einen Echtzeitbetriebssystem ohne fork() 
gearbeitet (OS/9-68000).  Man kann damit im embedded-Bereich gut 
arbeiten, aber ein unixoides Betriebssystem ist es keins mehr - 
allenfalls ein paar Ähnlichkeiten.

von (prx) A. K. (prx)


Lesenswert?

Man kann fork auch ohne MMU implementieren. Nur konkurrieren dann eben 
zwei Prozesse um den gleichen Speicherplatz, d.h. sie müssen ggf. aus- 
und eingelagert oder hin- und hergeschubst werden.

von Hc Z. (mizch)


Lesenswert?

Ja.  Minix für 68k hat das mal so gemacht.  Das Teil war nur noch am 
Speicherblöcke verschieben, aber - immerhin - es funktionierte.  Die 
Performace war allerdings indiskutabel.

For seinen Daseinszweck - ein Lehrbetriebssystem auf dem Atari ST 
lauffähig zu machen - tat's damals aber.  Die zu schaufelnden Ram-Größen 
waren noch überschaubar.

von Maxxie (Gast)


Lesenswert?

> Maxxie schrieb:
>> Dummerweise hast du geschrieben, dass das Threadthema nicht ohne MMU
>> möglich ist, eben weil fork fehlt. Das ist aber offensichtlich falsch.
>
> Wo?  Du musst ein anderes Forum lesen.

Da: Und eine MMU ist ebenfalls zwingend erforderlich.

>> Was es nicht mehr erfüllt ist der Posix Standard. Der ist aber kein
>> zwingend nötiger Teil eines OS/Linux sondern eine (von mehreren)
>> Interface-Spezifikationen zu den OS-Funktionen.
>
> Es ist dann kein Linux mehr, sondern allenfalls ein uCLinux.  Dein
> gewohntes Desktop-Linux läuft ohne fork() nicht mehr.

Achso, weil du es sagst, ist eine nicht Desktop Linux Distribution kein 
Linux mehr. Ich bleib da eher bei der Definition über den Kernel und 
seine API (vergleiche lkml) und dessen Interface ist weder 
Posix-Abhängig noch fordert sie einen Fork.

Du darfst mich gerne eines Besseren belehren und mir deine Definition 
heraussuchen. Bin gespannt ab wann ein Linux nach dir ein Linux ist ...
Wenn man deiner Definition des vollständigen Einbindung (kein Subset an 
Funktionen) hernimmt, dann kenne ich keine Distribution, die das 
erfüllt.

> Ich habe sehr lange mit einen Echtzeitbetriebssystem ohne fork()
> gearbeitet (OS/9-68000).  Man kann damit im embedded-Bereich gut
> arbeiten, aber ein unixoides Betriebssystem ist es keins mehr -
> allenfalls ein paar Ähnlichkeiten.

Soso,
dann müssen wir wohl die Geschichte von Unix umschreiben. Das waren 
füher gar keine. Zimmerer hat's gesagt.
Mach dir selbst einen Gefallen und überprüfe mal deine Annahmen die du 
dann schon "sehr lange" mit dir rumschleppst und die dich in die Irre 
leiten.

von Hc Z. (mizch)


Lesenswert?

Ich klinke mich aus.  Das ist bloss noch Rechthaberei, garniert mit 
persönlichen Angriffen.

von Maxxie (Gast)


Lesenswert?

Ach komm, ich hab dich nicht persönlich angegriffen, das sieht anders 
aus. Du hast dich und deine Erfahrung selbst eingebracht (die hab ich 
auch nicht bezweifelt oder dir abgesprochen), und daraus deine 
Behauptung abgeleitet. Diesen Schluss jedoch habe ich zugegeben mit ein 
wenig Spott angezweifelt.

Wenn du eine solche sachlich falsche Behauptung hier hinwirfst musst du 
eben mit "Rechthabern" rechnen.

von Benedikt (Gast)


Lesenswert?


von holger (Gast)


Lesenswert?

>Ja das geht!

Hurra, hurra. Alter Hut. Und dafür gräbst du hier
eine 5 Jahre alte Leiche aus?

von Logo geht das (Gast)


Lesenswert?

Via Arm Emulator der auf einem 8-Bit Atmel läuft: 
http://dmitry.gr/index.php?r=05.Projects&proj=07.%20Linux%20on%208bit

Der emulierte ARM-Takt liegt bei 6,5 KHz.

von Kaj (Gast)


Lesenswert?

Logo geht das schrieb:
> Via Arm Emulator der auf einem 8-Bit Atmel läuft:
> http://dmitry.gr/index.php?r=05.Projects&proj=07.%20Linux%20on%208bit

Junge... erstens wurde das 2 Post vor die schon geschrieben und 
zweitens:

holger schrieb:
> Und dafür gräbst du hier
> eine 5 Jahre alte Leiche aus?

Schaut hier auch mal wer was geschrieben wird?

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.