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?
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.
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).
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
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.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.