Linux su ARM serie Cortex-M3


29

Sono nuovo di ARM e un po 'confuso con tutte le diverse serie.

Devo costruire un gateway a bassa potenza (ethernet, wifi ...), quindi immagino che una corteccia-M o corteccia-R sarà il buon punto di partenza. Ma non ha trovato alcuna scheda di sviluppo con dire una cortex-m3 (che sembra essere abbastanza popolare) che supporta Linux.

Sembra possibile linuxM3 , quindi mi chiedo perché non ci sia un progetto linux attorno ad un mbed o ad un LPCXpresso per esempio?

Qualcuno può indicarmi la scheda di sviluppo che cerco o spiegarmi perché "cortex m" + linux non ha più risposte?


NXP ha qualche supporto linux per altri processori non sicuri di quello specifico.
Kenny,

2
Quanto bassa potenza deve essere? Sono riuscito a costruire un sistema Linux completo da 1/2 watt basato sul Freescale iMX283. 1 / 2W con carico normale senza Ethernet, 1W con Ethernet, <1,5W Ethernet con carico completo ... Ethernet PHY è la metà della potenza del sistema a carico normale.
Darron,

Risposte:


18

Per quanto riguarda ARM Cortex-M3:

Linux richiede una MMU (Memory Management Unit). ARM Cortex-M3 non ne ha uno. È impossibile eseguire il kernel Linux mainline su ARM Cortex-M3.

Tuttavia, esiste una variante del kernel Linux per processori MMUless chiamata uCLinux .

Guida Linux su M3

Nota applicativa di ST su uCLinux

Tuttavia, come altri hanno notato, è improbabile che Linux sia pratico sull'M3. Non funzionerà senza RAM esterna. Credo che anche le parti Cortex-M3 più grandi abbiano solo 1 MB di flash, quindi probabilmente avrai bisogno anche di spazio di archiviazione aggiuntivo.


12

Cortex-M non è all'altezza del lavoro, è necessario l'ARM926EJ-S

La ricerca di "Cortex-M + Linux" non fornisce molte risposte perché Cortex-M non è progettato per Linux. Il ARM meno potente generalmente considerato in grado di eseguire un sistema operativo completo come Linux è la serie ARM926EJ-S , che utilizza l'architettura ARMv5. Questo è un processore classico, con ampia adozione (si trova in molti box NAS, smartphone più vecchi e Chumby Classic) e un sacco di supporto, ma è un po 'meno efficiente rispetto ai suoi successori. Ha un'architettura ARMv5 e funziona a circa duecento MHz.

Questo è quello che vuoi davvero, ma non puoi averlo

Il processore che vuoi davvero, credo, è il Cortex-A5: progettato per sostituire (ed essere solo un po 'più potente di) l'ARM11, ma molto più efficiente in termini di potenza e su un processo più moderno. (Nota: nulla a che fare con l'A5 di Apple, che è uno speciale Cortex-A9) È stato annunciato nel 2009 e stiamo aspettando di vedere il silicio "da un giorno all'altro". Nessuno ha ancora prodotto un SoC generico per questo processore, perché gli smartphone guidano il mercato e il mercato tra un A9 più potente e un ARM11 più vecchio non è semplicemente convincente. Vedi questa discussione per maggiori dettagli: http://forum.beyond3d.com/archive/index.php/t-60145.html

Opzioni più potenti

ARMv6 in ARM11 è un po 'più efficiente, ma anche più potente (quindi potresti non vedere alcun risparmio nel tuo budget di potenza). Alimenta smartphone meno vecchi come l'iPhone 3G, l'iPod Touch, Kindle e Zune e funziona a 500-800 MHz. L'ultima architettura, ARMv7, è la serie Cortex. Cortex-A8 e -A9 stanno alimentando gli ultimi smartphone e tablet a 800 MHz - 1,2 GHz, probabilmente vorrai restare con i processori più piccoli e più lenti se stai mirando a un design minimalista. I numeri di prestazioni per watt di questi processori sono fantastici, ma potrebbe essere più sicuro (e sicuramente meno complesso) utilizzare solo le parti ARMv5.


2
Nota: il Cortex-A5 è ora in consegna e Atmel afferma di fornire supporto Linux per la loro versione: atmel.com/Microsite/sama5d3/…
pjc50

10

Controlla questo sito per alcune piattaforme Cortex-M3 che supportano Linux (uClinux):

http://www.emcraft.com/

Abbiamo eseguito con successo uClinux sui seguenti MCU Cortex-M3: LPC1788 di NXP, STM32F2 di STmicro, SmartFusion di Actel e stiamo aggiungendo supporto per un altro paio: Freescale Kinetis, STM32F4 (questi due sono Cortex-M4 anziché Cortex-M3) .

È vero, Linux (incluso uClinux) richiede l'esecuzione di RAM esterna: la SRAM integrata di Cortex-M non è abbastanza grande anche per una configurazione Linux ultra-piccola; sono necessarie almeno 4 MB di RAM esterna per configurazioni pratiche. Più meglio è, infatti - se l'applicazione ha bisogno di "funzionalità", Linux ha il supporto per qualsiasi cosa e non ti dispiacerà aver aggiunto più RAM piuttosto che meno.

Rispetto a particolari dispositivi da utilizzare per la RAM esterna, tutto è definito dall'interfaccia di memoria esterna fornita da un determinato MCU. STM32F e SmartFusion supportano solo SRAM; si sarebbe in grado di ottenere una PSRAM da 16 MB da 70 ns (con una modalità pagina per operazioni più veloci) per $ 6-7; LPC1788 supporta memorie SDRAM più veloci; Kinetis K70 supporta DDR2 ($ 5 per un dispositivo da 64 MB), ecc. Tutte quelle memorie assorbono energia solo a livelli u in tempi statici.

Hai bisogno di qualcosa per caricare un Linux avviabile, ma questo può riguardare qualsiasi cosa: rete, SDcard, SPI EEPROM, NOR o NAND Flash, ecc.

Nel complesso, oserei dire che Linux è un'opzione totalmente pratica per un progetto Cortex-M3.

Aggiornare

Esistono molte applicazioni sensibili al potere in cui il dispositivo è inattivo per la maggior parte del tempo, tuttavia, durante l'esecuzione, deve essere in grado di fare molte cose che non saranno facili da ottenere utilizzando un RTOS più piccolo. Connessioni sicure, VLAN, tunneling TCP / IP, SNMP, scheda SD, dispositivo / host USB, WiFI, ecc. E l'elenco dei requisiti potrebbe continuare all'infinito.

Con un RTOS più piccolo alcune di queste funzionalità saranno disponibili, altre no, tuttavia è solo una parte della storia. Ciò che vediamo sempre di più con i nostri clienti è che i progetti integrati che utilizzano Cortex-M3 non richiedono solo 1 o 2 di queste funzionalità avanzate, ma ne hanno bisogno molte di esse da un unico dispositivo. Anche se un RTOS fornisce tutte le funzionalità di cui un design ha bisogno immediatamente, riempire tutto con la memoria on-chip sarà una sfida. uClinux o no, la mia ipotesi è che la tendenza sarà che sempre più progetti basati su Cortex-M useranno la memoria esterna. Naturalmente, una volta ottenuta la RAM esterna nella progettazione, uClinux inizia ad avere più senso.

Per quanto riguarda la bassa potenza di elaborazione fornita da Cortex-M (misurata rispetto ai requisiti del kernel Linux), come esperienza recente, abbiamo appena abilitato uClinux sull'MCU Freescale K70. Questo è un Cortex-M4 (che è lo stesso del Cortex-M3 più hardware FP e unità DSP); interfacce su chip a RAM ad alta densità (DDR2) e Flash (NAND), con cache su chip da 2x8 KB. Nucleo Cortex-M da 120 Mhz, con parti da 150 Mhz in uscita.

Linux (uClinux) funziona perfettamente su questo dispositivo. Usando 'dhrystone', otteniamo circa il 50% di prestazioni ottenute su una scatola PowerPC da 250Mhz Freescale. Avvio rapido, molta RAM (il modulo TWR-K70 fornisce 128 MB di RAM e 256 MB di NAND Flash), rete, JFFS2, framebuffer, SSH, HTTPD, Qt / E - tutto questo funziona perfettamente su K70. L'esperienza utente complessiva è il normale "Linux incorporato" su un microprocessore pieno di MMU.

Ecco un puntatore al video di una sessione live di uClinux in esecuzione sul MCU Freescale Kinetis K70 Cortex-M4:

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


5

Senza un qualche tipo di supporto per la memoria esterna (sia RAM che Flash) è impossibile poter adattare anche la più piccola distribuzione linux (diciamo, uclinux) alle risorse integrate dei dispositivi citati.

Ciò significa in genere che è esposto un bus a 32 bit per collegare chip aggiuntivi. Questo è il motivo per cui è più comune vedere computer single board (SBC) linux con RAM aggiuntiva e chip flash nell'intervallo di megabyte utilizzati per eseguire linux. I microcontrollori che hai elencato non offrono questo. Per come la vedo io, cortx-m0 / m3 è pensato soprattutto per applicazioni in cui un micro a 8 bit non sarebbe (o appena) sufficiente - quindi tutte le risorse necessarie sono integrate nel chip.

Per rispondere meglio a questa domanda, sarebbe saggio analizzare i requisiti per Linux incorporato. Ciò significa in genere essere in grado di adattare un bootloader, un kernel e un file system - e, naturalmente, l'applicazione utente e le librerie necessarie per eseguirlo. Complessivamente, vedrai presto che potresti aver bisogno di un paio di megabyte di RAM e Flash per fare qualcosa di utile.


3

Non c'è MMU su stm32 quindi devi usare ucLinux.

Un rapido google per ucLinux ti invierà nella giusta direzione. https://www.google.com/search?q=stm32+uclinux

D'altra parte, Linux non è poi così utile su questo tipo di piccolo mcu e la maggior parte del tempo hai bisogno di un ram esterno e di una scheda SD per farlo funzionare. E poi il prezzo si sta chiudendo su progetti come il Rasperry PI, quindi devi pensare a quali sono le tue esigenze.

Forse un altro sistema operativo più piccolo è una scelta migliore? Anche se è bello avere Linux ovunque ...


3

Esistono alcune applicazioni a bassa potenza come lo smart meeting in cui è davvero utile utilizzare un Cortex-M3 con memoria esterna su cui è in esecuzione Linux. Pensa non in termini di costo totale (le schede costeranno quasi quanto con un core più veloce) ma in termini di consumo energetico.

Se vivi a batteria e sei in modalità inattiva per la maggior parte del tempo, prendendo una misura forse ogni minuto o giù di lì e poi inviandola su una rete potrebbe essere bello poter usare l'infrastruttura fornita da Linux per TCP / IP, crittografia ecc.

Nell'esposizione mondiale integrata quest'anno Pengutronix ha mostrato un linux su una scheda di prototipazione di EnergyMicro con UCLinux su un Cortex-M3 con RAM esterna e un consumo di 1,6 mW in modalità inattiva. Energy Micro ha alcuni incredibili MCU Cortex-M3 e M4 a bassa potenza nel suo portafoglio specificamente ottimizzati per applicazioni a bassa potenza che necessitano di circa 16mW di potenza quando funzionano a 32MHz mentre eseguono il codice da RAM. Questo può abilitare Linux su una varietà di dispositivi alimentati a batteria in cui processori più grandi e più veloci non si adattano al tuo budget energetico. D'altra parte non otterrai molta potenza di elaborazione da questi neanche ...

Quindi sostanzialmente se stai vivendo una batteria e non hai bisogno di molta potenza di elaborazione, questa potrebbe essere una soluzione per te, altrimenti potresti optare per un ARM Core più grande con MMU.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.