Forum: Mikrocontroller und Digitale Elektronik ARM Multitasking ogne MMU


von Michael S. (kyromaster)


Lesenswert?

Ich habe gehört dass auf der ARM-Architektur sogar Linux läuft, es
jedoch keine MMU gibt, und deswegen jeder Prozess an jeder beliebigen
Stelle im Speicher lesen und schreiben kann.
Kann man trotzdem irgendwie Speicherschutz erhalten, Softwaremäßig?
Oder gibt es ARM-Varianten mit MMU?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Natürlich gibt es auch ARMe mit MMU (ARM9 und größer); ein
softwaremäßiger Speicherschutz wäre nur mit extremem Aufwand und
resultierend zu vernachlässigender Performance hinzubekommen.
Warum aber auch?
Multitasking-Betriebssysteme wurden über Jahre auf Maschinen ohne MMU
und ohne Speicherschutz betrieben, es bedarf halt ein wenig mehr
Disziplin beim Programmieren und gründlicheres Debuggen.

von Michael S. (kyromaster)


Lesenswert?

Sind diese Prozessoren auch noch so verhältnißmäßig billig wie die
ARM7-CPUs? Ich finde es halt (vor Allem bei nicht selbst geschriebener
Software) besser wenn nicht jedes Programm den Speicher ändern kann,
und vor Allem Auslesen (Sicherheitsaspekte).

von Sebastian (Gast)


Lesenswert?

Hi Micheal,

es auch einen ARM7 mit MMU. Schau mal bei ST nach einem STR720 (CAN,
USB, IDE, usw.). Der hat halt ein PQFP208-Gehäuse, aber ich denke bei
einem ARM9 (oder größer) wird es wohl mit dem Löten nicht einfacher
werden. Außer Spörle fällt mir aber leider niemand ein der den
anbietet. Vielleicht weiß jemand anderes wo es den gibt?

Gruß,
Sebastian

von Michael Stather (Gast)


Lesenswert?

Danke für die Info.
Weißt du ob der Linux Kernel auch davon Gebrauch machen kann? Ich habe
bisher ja nur den Port von uclinux.com für ARM gefunden, und der
scheint ja "für CPUs ohne MMU" zu sein.

von KoF (Gast)


Lesenswert?

Ich gehe mal davon aus, das die meisten linux-distributionen eben nur
den Core unterstützt und nicht seine Periferie, die ja bei jedem
Hersteller oder Produkt anders sein kann und auch ist!

Eventuell hat man Glück und bekommt vom Hersteller etwas angepasstes,
oder man muss sich selber drum bemühen die Treiber zu schreiben.

von Michael S. (kyromaster)


Lesenswert?

Aber der MMU gehört afaik zum Core und nicht zur Peripherie. ISt ja auch
vom Kernel ziemlich ein Unterschied ob man Speicherschutz hat oder
nicht.

von Dominic R. (dominic)


Lesenswert?

Der Linux Kernel, so wie er von kernel.org zu bekommen ist, unterstützt
ARM cores mit MMU, also z.B. arm720t, arm920t, arm926ej-s, etc., mit
zusätzlichen Patches auch solche cores, die nur eine MPU (memory
protection unit) haben.
Ausserdem enthält er Support für einige SoC Lösungen, z.B. Atmel
AT91RM9200, Cirrus Logic EP93xx, Hynix/Magnachip HMS20C7202, XScale,
etc., und bietet auch board-spezifische Konfigurationen für komplette
Boards mit ARM Core, Peripherie und evtl. zusätzlicher Hardware.
Teilweise sind dafür noch Patches notwendig, wobei die Unterstützung
für fast alle SoCs auch upstream zu bekommen ist - der Code muss nur
die Anforderungen der Kernel Maintainer erfüllen.

Gruesse,

Dominic

von Michael S. (kyromaster)


Lesenswert?

Danke für die ausführliche Info :)

von Axel (Gast)


Lesenswert?

Es gibt ucLinux, welches auch auf einem beliebigen ARM7 läuft.

Ansonsten läuft Linux nur auf dem ARM926, der ARM946 hat nur eine MPU,
die für Linux nicht ausreicht. Der ARM966 hat  nicht einmal die.

Was den Speicherschutz angeht, dürfte das auf einem embedded System
ziemlich egal sein. Beim PC kann man das Programm ja wieder neu
starten, wenn es ins Nirvana gegangen ist, beim embedded System (man
denke an einen  Roboter) ist dann sowieso Booten angesagt. Da kann man
das auch mit einem Watchdog lösen.

Gruss
Axel

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.