Linux auf ARM Cortex-M3-Serie

29

Ich bin neu in ARM und ein bisschen verwirrt mit all den verschiedenen Serien.

Ich muss ein Gateway mit geringem Stromverbrauch (Ethernet, WLAN ...) bauen, daher ist ein Cortex-M oder Cortex-R der gute Ausgangspunkt. Aber es gab kein Entwickler-Board mit einem Cortex-m3 (der ziemlich populär zu sein scheint), das Linux unterstützt.

LinuxM3 scheint möglich , also frage ich mich, warum es zum Beispiel kein Linux-Projekt um ein mbed oder einen LPCXpresso gibt ?

Kann mich jemand auf das von mir gesuchte Entwickler-Board verweisen oder mir erklären, warum "cortex m" + linux keine weiteren Antworten liefert?

jojo l'abricot
quelle
NXP bietet Linux-Unterstützung für andere Prozessoren, die sich in dieser Hinsicht nicht sicher sind.
Kenny
2
Wie wenig Strom muss es sein? Ich habe es geschafft, ein 1/2-Watt-Linux-System auf Basis des Freescale iMX283 zu bauen. 1 / 2W bei normaler Last ohne Ethernet, 1W bei Ethernet, <1,5W bei voller Last ... Der Ethernet-PHY ist die Hälfte der Systemleistung bei normaler Last.
Darron

Antworten:

18

In Bezug auf den ARM Cortex-M3:

Linux benötigt eine MMU (Memory Management Unit). Der ARM Cortex-M3 hat keinen. Es ist unmöglich, den Linux-Kernel auf dem ARM Cortex-M3 auszuführen.

Es gibt jedoch eine Variante des Linux-Kernels für MMUless-Prozessoren namens uCLinux .

Linux auf M3 Guide

Anwendungshinweis von ST zu uCLinux

Wie andere angemerkt haben, ist es jedoch unwahrscheinlich, dass Linux auf dem M3 praktisch ist. Ohne externen RAM läuft es nicht. Ich glaube, dass selbst die größten Cortex-M3-Teile nur 1 MB Flash haben, sodass Sie wahrscheinlich auch zusätzlichen Speicherplatz benötigen.

Toby Jaffey
quelle
12

Cortex-M ist dem nicht gewachsen, Sie benötigen den ARM926EJ-S

Eine Suche nach "Cortex-M + Linux" liefert nicht viele Antworten, da der Cortex-M nicht für Linux ausgelegt ist. Das am wenigsten leistungsfähige ARM, mit dem ein vollständiges Betriebssystem wie Linux ausgeführt werden kann, ist die ARM926EJ-S-Serie , die die ARMv5-Architektur verwendet. Dies ist ein klassischer Prozessor mit breiter Akzeptanz (er ist in vielen NAS-Boxen, älteren Smartphones und dem Chumby Classic zu finden) und viel Unterstützung, aber etwas weniger effizient als seine Nachfolger. Es hat eine ARMv5-Architektur und arbeitet mit einigen hundert MHz.

Das ist es, was du wirklich willst, aber du kannst es nicht haben

Der Prozessor, den Sie wirklich wollen, ist, glaube ich, der Cortex-A5: Er soll den ARM11 ersetzen (und ein wenig leistungsfähiger sein als dieser), ist aber viel energieeffizienter und arbeitet mit einem moderneren Prozess. (Hinweis: Mit dem A5 von Apple hat dies nichts zu tun, da es sich um einen speziellen Cortex-A9 handelt.) Dieser wurde im Jahr 2009 angekündigt und wir warten darauf, "jeden Tag" Silizium zu sehen. Bisher hat noch niemand einen Allzweck-SoC für diesen Prozessor hergestellt, da Smartphones den Markt und den Markt zwischen einem leistungsstärkeren A9 und einem älteren ARM11 nicht überzeugen. Weitere Informationen finden Sie in dieser Diskussion: http://forum.beyond3d.com/archive/index.php/t-60145.html

Stärkere Optionen

Das ARMv6 im ARM11 ist etwas effizienter, aber auch leistungsstärker (so dass Sie möglicherweise keine Einsparungen in Ihrem Strombudget feststellen können). Es versorgt weniger alte Smartphones wie das iPhone 3G sowie den iPod Touch, Kindle und Zune mit Strom und arbeitet mit 500-800 MHz. Die neueste Architektur, ARMv7, ist die Cortex-Serie. Der Cortex-A8 und -A9 sind mit den neuesten Smartphones und Tablets mit 800 MHz - 1,2 GHz ausgestattet. Wenn Sie ein minimalistisches Design anstreben, sollten Sie sich eher an die kleineren, langsameren Prozessoren halten. Die Leistung pro Watt dieser Prozessoren ist fantastisch, aber es ist sicherer (und sicherlich weniger komplex), nur die ARMv5-Teile zu verwenden.

Kevin Vermeer
quelle
2
Hinweis: Der Cortex-A5 wird jetzt ausgeliefert, und Atmel gibt an, Linux-Unterstützung für seine Version bereitzustellen
pjc50
10

Auf dieser Website finden Sie Informationen zu einigen Cortex-M3-Plattformen, die Linux (uClinux) unterstützen:

http://www.emcraft.com/

Wir haben uClinux erfolgreich auf den folgenden Cortex-M3-MCUs ausgeführt: NXPs LPC1788, STM32F2 von STmicro, SmartFusion von Actel und sind dabei, einige weitere zu unterstützen: Freescale Kinetis, STM32F4 (diese beiden sind Cortex-M4 anstelle von Cortex-M3) .

Richtig, Linux (einschließlich uClinux) benötigt externen RAM, um ausgeführt zu werden - der integrierte SRAM von Cortex-M ist selbst für eine winzige Linux-Konfiguration bei weitem nicht groß genug. Sie benötigen mindestens 4 MB externen RAM für praktische Konfigurationen. Je mehr desto besser - wenn Ihre Anwendung "Funktionen" benötigt, wird Linux für fast alles unterstützt, und es wird Ihnen nicht leid tun, dass Sie mehr RAM hinzugefügt haben, anstatt weniger.

In Bezug auf bestimmte Geräte, die für den externen RAM verwendet werden sollen, wird alles durch die externe Speicherschnittstelle definiert, die von einer bestimmten MCU bereitgestellt wird. STM32F und SmartFusion unterstützen nur SRAM. Sie könnten einen PSRAM mit 16 MB und 70 ns (mit einem Seitenmodus für schnelleren Betrieb) für 6 bis 7 US-Dollar erhalten. LPC1788 unterstützt schnellere SDRAM-Speicher; Kinetis K70 unterstützt DDR2 (5 US-Dollar für ein 64-MB-Gerät) usw. Alle diese Speicher verbrauchen zu statischen Zeiten nur Strom auf uA-Niveau.

Sie brauchen etwas, um ein bootfähiges Linux zu laden, aber das kann alles sein - Netzwerk, SD-Karte, SPI-EEPROM, NOR oder NAND-Flash usw.

Insgesamt bin ich der Meinung, dass Linux eine absolut praktische Option für ein Cortex-M3-Design ist.

Aktualisieren

Es gibt viele stromempfindliche Anwendungen, bei denen Ihr Gerät die meiste Zeit im Leerlauf ist. Wenn es jedoch ausgeführt wird, muss es in der Lage sein, viele Dinge zu tun, die mit einem kleineren RTOS nicht einfach zu erreichen sind. Sichere Verbindungen, VLAN, TCP / IP-Tunnel, SNMP, SD-Karte, USB-Gerät / Host, WiFI usw. und die Liste der Anforderungen geht weiter und weiter.

Mit einem kleineren RTOS werden einige dieser Funktionen verfügbar sein, andere nicht. Dies ist jedoch nur ein Teil der Geschichte. Was wir bei unseren Kunden immer mehr sehen, ist, dass eingebettete Designs mit Cortex-M3 nicht nur 1 oder 2 dieser erweiterten Funktionen benötigen, sondern viele von ihnen von einem einzigen Gerät. Selbst wenn ein RTOS alle Funktionen bietet, die ein Design von der Stange benötigt, wird es eine Herausforderung sein, alles in den On-the-Chip-Speicher zu packen. uClinux oder nicht, ich gehe davon aus, dass der Trend dahin gehen wird, dass immer mehr Cortex-M-basierte Designs externen Speicher verwenden. Sobald Sie externen Arbeitsspeicher in Ihrem Design haben, macht uClinux natürlich mehr Sinn.

Angesichts der geringen Rechenleistung von Cortex-M (gemessen an den Anforderungen des Linux-Kernels) haben wir kürzlich uClinux auf der Freescale K70-MCU aktiviert. Dies ist ein Cortex-M4 (der mit Cortex-M3 plus Hardware-FP- und -DSP-Einheiten identisch ist). On-Chip-Schnittstellen zu High-Density-RAM (DDR2) und Flash (NAND) mit 2 On-Chip-Caches von 8 KB. 120-MHz-Cortex-M-Kern, in Kürze werden 150-MHz-Teile herauskommen.

Linux (uClinux) läuft auf diesem Gerät einfach wunderbar. Unter Verwendung von 'Dhrystone' erhalten wir ungefähr 50% Leistung, die wir auf einer 250 MHz Freescale PowerPC-Box erhalten. Schnelles Hochfahren, viel RAM (das TWR-K70-Modul bietet 128 MB RAM und 256 MB NAND-Flash), Netzwerkbetrieb, JFFS2, Framebuffer, SSH, HTTPD, Qt / E - all dies funktioniert auf K70 einwandfrei. Die allgemeine Benutzererfahrung ist Ihr reguläres "eingebettetes Linux" auf einem MMU-vollständigen Mikroprozessor.

Hier ist ein Verweis auf das Video einer Live-uClinux-Sitzung, die auf der Freescale Kinetis K70 Cortex-M4-MCU ausgeführt wird:

http://www.youtube.com/watch?v=UZjJrLG9CeA

vladimir khusainov
quelle
5

Ohne irgendeine Unterstützung für externen Speicher (sowohl RAM als auch Flash) ist es unmöglich, auch nur die kleinste Linux-Distribution (z. B. Uclinux) auf die eingebauten Ressourcen der genannten Geräte anzupassen.

Dies bedeutet normalerweise, dass ein 32-Bit-Bus freigelegt wird, um zusätzliche Chips anzuschließen. Aus diesem Grund ist es üblicher, Linux-Single-Board-Computer (SBC) mit zusätzlichem RAM und Flash-Chips im Megabyte-Bereich zu verwenden, die zum Ausführen von Linux verwendet werden. Die von Ihnen aufgelisteten Mikrocontroller bieten dies nicht an. So wie ich das sehe, ist der Cortex-m0 / m3 eher für Anwendungen gedacht, bei denen ein 8-Bit-Mikro nicht (oder kaum) ausreichen würde - daher sind alle Ressourcen, die Sie benötigen, in den Chip integriert.

Um diese Frage besser beantworten zu können, ist es ratsam, die Anforderungen für Embedded Linux zu analysieren. Dies bedeutet normalerweise, dass Bootloader, Kernel und Dateisystem angepasst werden können - und natürlich die eigentliche Benutzeranwendung und die Bibliotheken, die für die Ausführung erforderlich sind. Wenn Sie dies zusammenfassen, werden Sie bald feststellen, dass Sie möglicherweise ein paar Megabyte RAM und Flash benötigen, um etwas Nützliches zu tun.

Jon L
quelle
3

Auf dem stm32 befindet sich keine MMU, Sie müssen also ucLinux verwenden.

Eine schnelle Google für ucLinux wird Sie in die richtige Richtung schicken. https://www.google.com/search?q=stm32+uclinux

Aber auf der anderen Seite ist Linux auf dieser Art von kleinen MCU nicht wirklich nützlich, und die meiste Zeit braucht man einen externen RAM und eine SD-Karte, um es zum Laufen zu bringen. Und dann schließt der Preisschild Projekte wie den Rasperry PI ab, also müssen Sie überlegen, was Ihre Bedürfnisse sind.

Vielleicht ist ein anderes kleineres Betriebssystem die bessere Wahl? Trotzdem ist es schön, Linux überall zu haben ...

Johan
quelle
3

Es gibt einige stromsparende Anwendungen wie Smart Meetering, bei denen es in der Tat nützlich ist, einen Cortex-M3 mit externem Speicher unter Linux zu verwenden. Denken Sie nicht an die Gesamtkosten (die Platinen kosten fast so viel wie mit einem schnelleren Core), sondern an den Energieverbrauch.

Wenn Sie von einer Batterie leben und sich die meiste Zeit im Leerlauf befinden, eine Messung etwa jede Minute durchführen und diese dann über ein Netzwerk senden, ist es möglicherweise hilfreich, die von Linux für TCP bereitgestellte Infrastruktur nutzen zu können / IP, Verschlüsselung etc.

Auf der diesjährigen embedded World Exhibition zeigte Pengutronix ein Linux auf einem Prototyping-Board von EnergyMicro, auf dem uCLinux auf einem Cortex-M3 mit externem RAM und einem Stromverbrauch von 1,6 mW im Idle-Modus läuft. Energy Micro hat einige unglaublich stromsparende Cortex-M3- und M4-MCUs in seinem Portfolio, die speziell für stromsparende Anwendungen optimiert wurden, die bei 32 MHz und der Ausführung von Code aus dem RAM ca. 16 mW Strom benötigen. Dies kann Linux auf einer Vielzahl von batteriebetriebenen Geräten ermöglichen, bei denen größere und schnellere Prozessoren einfach nicht zu Ihrem Energiebudget passen. Auf der anderen Seite werden Sie von diesen auch nicht viel Rechenleistung bekommen ...

Wenn Sie also von einer Batterie leben und nicht viel Prozessorleistung benötigen, ist dies möglicherweise eine Lösung für Sie. Andernfalls entscheiden Sie sich möglicherweise für einen größeren ARM Core mit MMU.

Dolch
quelle