Linux auf ARM Cortex-M3-Serie

Ich bin neu bei ARM und etwas verwirrt mit all den verschiedenen Serien.

Ich muss ein Low-Power- Gateway (Ethernet, WLAN ...) bauen, also denke ich, dass ein Cortex-M oder Cortex-R der gute Ausgangspunkt sein wird. Aber es wurde kein Entwicklungsboard mit beispielsweise einem Cortex-m3 (der recht beliebt zu sein scheint) gefunden, das Linux unterstützt.

Es scheint linuxM3 möglich zu sein , also frage ich mich, warum es zum Beispiel kein Linux-Projekt um ein mbed oder ein LPCXpresso herum gibt ?

Kann mir jemand auf das von mir gesuchte Entwicklerboard verweisen oder mir erklären, warum "Cortex m" + Linux nicht mehr Antworten liefert?

NXP hat einige Linux-Unterstützung für andere Prozessoren, die sich bei diesem bestimmten Prozessor nicht sicher sind.
Wie wenig Strom muss es sein? Ich habe es geschafft, ein 1/2-Watt-Voll-Linux-System basierend auf dem Freescale iMX283 zu bauen. 1/2 W bei normaler Last ohne Ethernet, 1 W bei Ethernet, <1,5 W Ethernet bei Volllast ... Der Ethernet-PHY ist die Hälfte der Systemleistung bei normaler Last.

Antworten (7)

Zum ARM Cortex-M3:

Linux benötigt eine MMU (Memory Management Unit). Der ARM Cortex-M3 hat keinen. Es ist unmöglich, den Mainline-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-Leitfaden

Anwendungshinweis von ST zu uCLinux

Wie andere jedoch angemerkt haben, ist Linux auf dem M3 wahrscheinlich nicht praktikabel. Ohne externen RAM geht 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.

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

Eine Suche nach „Cortex-M + Linux“ bringt nicht viele Antworten, da der Cortex-M nicht für Linux ausgelegt ist. Die ARM926EJ-S-Serie , die die ARMv5-Architektur verwendet, ist die ARM926EJ -S-Serie , die allgemein als am wenigsten leistungsfähig angesehen wird, um ein vollständiges Betriebssystem wie Linux auszuführen. 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 er ist etwas weniger effizient als seine Nachfolger. Es hat eine ARMv5-Architektur und läuft mit ein paar hundert MHz.

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

Der Prozessor, den Sie wirklich wollen, ist meiner Meinung nach der Cortex-A5: Entwickelt, um den ARM11 zu ersetzen (und nur ein wenig leistungsstärker als) zu sein, aber viel energieeffizienter und mit einem moderneren Prozess. (Hinweis: Nichts mit Apples A5 zu tun, das ist ein spezieller Cortex-A9) Es wurde 2009 angekündigt, und wir warten darauf, „jeden Tag jetzt“ Silizium zu sehen. Niemand hat bisher einen Allzweck-SoC für diesen Prozessor produziert, da Smartphones den Markt antreiben und der Markt zwischen einem leistungsstärkeren A9 und einem älteren ARM11 einfach nicht überzeugend ist. Weitere Einzelheiten finden Sie in dieser Diskussion: http://forum.beyond3d.com/archive/index.php/t-60145.html

Stärkere Optionen

Der ARMv6 im ARM11 ist etwas effizienter, aber auch leistungsstärker (so dass Sie möglicherweise keine Einsparungen in Ihrem Energiebudget sehen). Es treibt weniger alte Smartphones wie das iPhone 3G sowie den iPod Touch, Kindle und Zune an und läuft mit 500-800 MHz. Die neueste Architektur, ARMv7, ist die Cortex-Serie. Der Cortex-A8 und -A9 versorgen die neuesten Smartphones und Tablets mit 800 MHz bis 1,2 GHz, Sie werden wahrscheinlich bei den kleineren, langsameren Prozessoren bleiben wollen, wenn Sie ein minimalistisches Design anstreben. Die Leistung pro Watt dieser Prozessoren ist fantastisch, aber es könnte sicherer (und sicherlich weniger komplex) sein, nur die ARMv5-Teile zu verwenden.

Hinweis: Der Cortex-A5 wird jetzt ausgeliefert, und Atmel behauptet, Linux-Unterstützung für ihre Version bereitzustellen: atmel.com/Microsite/sama5d3/…

Bitte überprüfen Sie diese Seite auf einige Cortex-M3-Plattformen, die Linux (uClinux) unterstützen:

http://www.emcraft.com/

Wir führen uClinux erfolgreich auf den folgenden Cortex-M3-MCUs aus: LPC1788 von NXP, STM32F2 von STmicro, SmartFusion von Actel, und sind dabei, Unterstützung für ein paar weitere hinzuzufügen: Freescale Kinetis, STM32F4 (diese beiden sind Cortex-M4 und nicht Cortex-M3) .

Richtig, Linux (einschließlich uClinux) benötigt externen RAM, um zu laufen - der integrierte SRAM von Cortex-M ist selbst für eine ultrakleine Linux-Konfiguration nicht annähernd groß genug; Für praktische Konfigurationen benötigen Sie mindestens 4 MB externen RAM. Je mehr desto besser, in der Tat - wenn Ihre Anwendung "Features" benötigt, unterstützt Linux fast alles und Sie werden es nicht bereuen, dass Sie mehr RAM hinzugefügt haben, anstatt weniger.

In Bezug auf bestimmte Geräte, die für externes 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 16 MB 70 ns PSRAM (mit einem Page-Modus für schnelleren Betrieb) für 6-7 $ bekommen; LPC1788 unterstützt schnellere SDRAM-Speicher; Kinetis K70 unterstützt DDR2 (5 US-Dollar für ein 64-MB-Gerät) usw. All diese Speicher verbrauchen zu statischen Zeiten nur Strom in uA.

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 wage ich zu behaupten, 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, aber wenn es läuft, 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-Tunneling, SNMP, SD-Karte, USB-Gerät/Host, WLAN usw. und die Liste der Anforderungen geht weiter und weiter.

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

In Bezug auf die geringe 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 x 8 KB On-Chip-Caches. 120-MHz-Cortex-M-Kern, 150-MHz-Teile kommen bald heraus.

Linux (uClinux) läuft einfach wunderbar auf diesem Gerät. Mit '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), Netzwerk, JFFS2, Framebuffer, SSH, HTTPD, Qt/E – all dies läuft problemlos auf K70. Die allgemeine Benutzererfahrung ist Ihr normales "eingebettetes Linux" auf einem MMU-vollen Mikroprozessor.

Hier ist ein Hinweis 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

Ohne irgendeine Art von Unterstützung für externen Speicher (sowohl RAM als auch Flash) ist es unmöglich, dass Sie selbst die kleinste Linux-Distribution (z. B. uclinux) in die eingebauten Ressourcen der erwähnten Geräte einbauen können.

Dies bedeutet normalerweise, dass ein 32-Bit-Bus verfügbar gemacht wird, um zusätzliche Chips anzuschließen. Aus diesem Grund sieht man häufiger Linux-Einplatinencomputer (SBC) mit zusätzlichem RAM und Flash-Chips im Megabyte-Bereich, die zum Ausführen von Linux verwendet werden. Die von Ihnen aufgeführten Mikrocontroller bieten dies nicht. So wie ich es 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, im Chip eingebaut.

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

Es gibt keine MMU auf dem stm32, also müssen Sie ucLinux verwenden.

Ein schnelles Googlen nach ucLinux wird Sie in die richtige Richtung führen. https://www.google.com/search?q=stm32+uclinux

Aber auf der anderen Seite ist Linux auf dieser Art von kleiner MCU nicht wirklich nützlich und die meiste Zeit braucht man externen RAM und eine SD-Karte, um es zum Laufen zu bringen. Und dann schließt der Preis bei Projekten wie dem Rasperry PI, also müssen Sie darüber nachdenken, was Ihre Bedürfnisse sind.

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

Es gibt einige Low-Power-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 Boards kosten fast so viel wie mit einem schnelleren Kern), sondern an den Energieverbrauch.

Wenn Sie von einer Batterie leben und die meiste Zeit im Leerlauf sind, vielleicht jede Minute oder so eine Messung durchführen und diese dann über ein Netzwerk senden, ist es möglicherweise schön, die von Linux bereitgestellte Infrastruktur für TCP verwenden zu können /IP, Verschlüsselung usw.

Auf der diesjährigen Embedded World Exhibition zeigte Pengutronix ein Linux auf einem Prototyping-Board von EnergyMicro mit uCLinux auf einem Cortex-M3 mit externem RAM und einer Leistungsaufnahme von 1,6mW im Leerlauf. Energy Micro hat einige unglaublich stromsparende Cortex-M3- und M4-MCUs in seinem Portfolio, die speziell für stromsparende Anwendungen optimiert sind, die etwa 16 mW Leistung benötigen, wenn sie mit 32 MHz laufen und Code aus dem RAM ausführen. Dies kann Linux auf einer Vielzahl von batteriebetriebenen Geräten ermöglichen, bei denen größere und schnellere Prozessoren einfach nicht in Ihr Energiebudget passen. Auf der anderen Seite werden Sie auch von diesen nicht viel Rechenleistung bekommen ...

Wenn Sie also von einer Batterie leben und nicht viel Rechenleistung benötigen, könnte dies eine Lösung für Sie sein, wenn nicht, entscheiden Sie sich möglicherweise für einen größeren ARM-Core mit MMU.

Ich glaube, es gibt ein paar Cortex-M3-Anbieter, die Anwendungshinweise zur Verwendung abgespeckter Linux-Varianten ( uCLinux ) anbieten, die in ihren Produktangeboten ausgeführt werden. Anekdotisch glaube ich, dass ST Micro einige Angebote hatte. Ich arbeite derzeit mit einem Actel/Microsemi SmartFusion (Cortex-M3 + FPGA Fabric), das einen PDF-Anwendungshinweis enthält, der auf ein Emcraft-Angebot hinweist .