Linux en ARM Cortex-M3 series

27

Soy nuevo en ARM y estoy un poco confundido con todas las series diferentes.

Necesito construir una pasarela de baja potencia (Ethernet, wifi ...), así que supongo que una corteza-M o una corteza-R será el buen punto de partida. Pero no encontró ninguna placa de desarrollo con, digamos, un córtex-m3 (que parece ser bastante popular) que soporta Linux.

Parece posible linuxM3 , así que me pregunto por qué no hay ningún proyecto de Linux en torno a un mbed o un LPCXpresso por ejemplo?

¿Alguien puede indicarme la placa de desarrollo que busco o explicarme por qué "cortex m" + linux no viene con más respuestas?

    
pregunta jojo l'abricot

7 respuestas

16

Con respecto a ARM Cortex-M3:

Linux requiere una MMU (unidad de gestión de memoria). El ARM Cortex-M3 no tiene uno. Es imposible ejecutar el núcleo de Linux principal en el ARM Cortex-M3.

Sin embargo, hay una variante del kernel de Linux para procesadores MMUless llamado uCLinux .

Guía de Linux en M3

Nota de aplicación de ST en uCLinux

Sin embargo, como han señalado otros, es poco probable que Linux sea práctico en el M3. No se ejecutará sin memoria RAM externa. Creo que incluso las partes más grandes de Cortex-M3 solo tienen 1 MB de flash, por lo que es probable que también necesite almacenamiento adicional.

    
respondido por el Toby Jaffey
11

Cortex-M no está a la altura del trabajo, necesita el ARM926EJ-S

Una búsqueda de "Cortex-M + Linux" no da muchas respuestas porque Cortex-M no está diseñada para Linux. La ARM menos poderosa que generalmente se considera capaz de ejecutar un sistema operativo completo como Linux es la serie ARM926EJ-S , que utiliza la arquitectura ARMv5. Este es un procesador clásico, con amplia adopción (se encuentra en muchas cajas NAS, teléfonos inteligentes más antiguos y Chumby Classic) y mucho soporte, pero es un poco menos eficiente que sus sucesores. Tiene una arquitectura ARMv5, y se ejecuta en un par de cientos de MHz.

Esto es lo que realmente quieres, pero no puedes tenerlo

El procesador que realmente desea, creo, es el Cortex-A5: diseñado para reemplazar (y ser un poco más poderoso que) el ARM11, pero mucho más eficiente en cuanto a energía y en un proceso más moderno. (Nota: nada que ver con el A5 de Apple, es un Cortex-A9 especial) Se anunció en 2009 y estamos esperando a ver el silicio "cualquier día". Nadie ha producido todavía un SoC de propósito general para este procesador, porque los teléfonos inteligentes manejan el mercado y el mercado entre un A9 más potente y un ARM11 más viejo simplemente no es convincente. Consulte esta discusión para obtener más detalles: enlace

Opciones más potentes

El ARMv6 en el ARM11 es un poco más eficiente, pero también más poderoso (por lo que es posible que no vea ningún ahorro en su presupuesto de energía). Funciona con teléfonos inteligentes menos antiguos como el iPhone 3G, así como el iPod Touch, Kindle y Zune y funciona a 500-800 MHz. La última arquitectura, ARMv7, es la serie Cortex. El Cortex-A8 y -A9 están alimentando los últimos teléfonos inteligentes y tabletas a 800MHz - 1.2GHz, probablemente querrá seguir con los procesadores más pequeños y lentos si apunta a un diseño minimalista. Los números de rendimiento por vatio de estos procesadores son fantásticos, pero podría ser más seguro (y sin duda será menos complejo) usar solo las piezas ARMv5.

    
respondido por el Kevin Vermeer
10

Consulte este sitio para conocer algunas plataformas Cortex-M3 que son compatibles con Linux (uClinux):

enlace

Ejecutamos con éxito uClinux en las siguientes MCU Cortex-M3: LPC1788 de NXP, STM32F2 de STmicro, SmartFusion de Actel, y estamos en proceso de agregar soporte para un par más: Freescale Kinetis, STM32F4 (estos dos son Cortex-M4 en lugar de Cortex -M3).

Es cierto que Linux (incluido uClinux) requiere RAM externa para ejecutarse: la SRAM integrada de Cortex-M no es lo suficientemente grande como para una configuración Linux extremadamente pequeña; Necesita al menos 4 MB de RAM externa para configuraciones prácticas. De hecho, cuanto más mejor, si su aplicación necesita "características", Linux tiene soporte para cualquier cosa y no se arrepentirá de haber agregado más RAM en lugar de menos.

Con respecto a los dispositivos particulares que se utilizan para la RAM externa, todo está definido por la interfaz de memoria externa proporcionada por una MCU particular. STM32F y SmartFusion solo admiten SRAM; usted podría obtener un PSRAM de 16MB 70ns (con un Modo de Página para una operación más rápida) por $ 6-7; LPC1788 soporta memorias SDRAM más rápidas; Kinetis K70 es compatible con DDR2 ($ 5 para un dispositivo de 64 MB), etc. Todas esas memorias consumen energía solo en niveles de uA en momentos estáticos.

Necesitas algo para cargar un Linux de arranque, pero esto puede ser sobre cualquier cosa: red, SDcard, SPI EEPROM, NOR o NAND Flash, etc.

En general, me atrevería a decir que Linux es una opción totalmente práctica para un diseño Cortex-M3.

Actualizar

Hay muchas aplicaciones sensibles a la energía en las que su dispositivo está inactivo la mayor parte del tiempo; sin embargo, cuando se ejecuta, debe poder hacer muchas cosas que no serán fáciles de lograr utilizando un RTOS más pequeño. Conexiones seguras, VLAN, túneles TCP / IP, SNMP, tarjeta SD, dispositivo / host USB, WiFi, etc. y la lista de requisitos sigue y sigue.

Con un RTOS más pequeño, algunas de esas funciones estarán disponibles, otras no, sin embargo, es solo una parte de la historia. Lo que estamos viendo cada vez más con nuestros clientes es que los diseños integrados que utilizan Cortex-M3 no solo necesitan 1 o 2 de esas características avanzadas, sino que también necesitan muchas de ellas desde un solo dispositivo. Incluso si un RTOS proporciona todas las características que un diseño necesita de forma estándar, incluirlo en la memoria del chip será un desafío. Ya sea o no, creo que la tendencia será que cada vez más diseños basados en Cortex-M usarán memoria externa. Por supuesto, una vez que obtiene RAM externa en su diseño, uClinux comienza a tener más sentido.

En cuanto a la baja potencia de procesamiento proporcionada por Cortex-M (medida según los requisitos del kernel de Linux), como experiencia reciente, acabamos de habilitar uClinux en la MCU Freescale K70. Este es un Cortex-M4 (que es lo mismo que Cortex-M3 más las unidades de hardware FP y DSP); interfaces en chip para RAM de alta densidad (DDR2) y Flash (NAND), con cachés en chip de 2x8KB. Núcleo de 120Mhz Cortex-M, con partes de 150Mhz próximamente.

Linux (uClinux) se ejecuta maravillosamente en este dispositivo. Al usar 'dhrystone', obtenemos aproximadamente el 50% de rendimiento que obtenemos en una caja PowerPC de 250Mhz Freescale. Arranque rápido, gran cantidad de RAM (el módulo TWR-K70 proporciona 128 MB de RAM y 256 MB de NAND Flash), redes, JFFS2, framebuffer, SSH, HTTPD, Qt / E: todo esto funciona bien en K70. La experiencia general del usuario es su "Linux incorporado" habitual en un microprocesador MMU completo.

Aquí hay un puntero al video de una sesión de uClinux en vivo que se ejecuta en el MCU Freescale Kinetis K70 Cortex-M4:

enlace

    
respondido por el vladimir khusainov
5

Sin algún tipo de soporte para memoria externa (tanto RAM como Flash) es imposible que pueda ajustar incluso la distribución de Linux más pequeña (por ejemplo, uclinux) en los recursos incorporados de los dispositivos mencionados.

Esto normalmente significa que se expone un bus de 32 bits para conectar chips adicionales. Esta es la razón por la que es más común ver linux-board-Computers (SBC) con RAM y chips flash adicionales en el rango de megabytes utilizados para ejecutar linux. Los microcontroladores que has enumerado no ofrecen esto. A mi modo de ver, el cortex-m0 / m3 está pensado para aplicaciones donde un micro de 8 bits no es suficiente (o apenas), por lo que todos los recursos que necesita están integrados en el chip.

Para responder mejor a esta pregunta, sería conveniente analizar los requisitos para Linux incorporado. Por lo general, esto significa poder ajustar un gestor de arranque, un kernel y un sistema de archivos, y por supuesto, la aplicación de usuario real y las bibliotecas necesarias para ejecutarlo. Totalice esto y pronto verá que puede necesitar un par de megabytes de RAM y Flash para hacer algo útil.

    
respondido por el Jon L
3

No hay MMU en el stm32, así que tienes que usar ucLinux.

Un google rápido para ucLinux te enviará en la dirección correcta. enlace

Pero, por otro lado, Linux no es realmente tan útil en este tipo de mcu pequeño y la mayoría de las veces necesita un ram externo y una tarjeta SD para que funcione. Y luego, la etiqueta de precio se está cerrando en proyectos como el Rasperry PI, por lo que debe pensar cuáles son sus necesidades.

¿Quizás otro SO más pequeño sea una mejor opción? Incluso tú es bueno tener Linux en todas partes ...

    
respondido por el Johan
3

Hay algunas aplicaciones de bajo consumo de energía, como la reunión inteligente, en las que resulta útil utilizar un Cortex-M3 con memoria externa que ejecute Linux. No piense en términos de costo total (los tableros costarán casi tanto como con un Core más rápido) pero en términos de consumo de energía.

Si vive sin batería y está en modo inactivo la mayor parte del tiempo, tomando una medida aproximadamente cada minuto y luego enviándola a través de una red, sería bueno poder usar la infraestructura que le brinda Linux para TCP / IP, cifrado, etc.

En la Exposición mundial integrada este año, Pengutronix mostró un linux en un tablero de prototipos de EnergyMicro ejecutando uCLinux en un Cortex-M3 con RAM externa y un consumo de energía de 1.6 mW en modo inactivo. Energy Micro tiene algunos MCU Cortex-M3 y M4 de baja potencia increíbles en su cartera específicamente optimizados para aplicaciones de baja potencia que necesitan aproximadamente 16 mW de potencia cuando se ejecutan a 32 MHz mientras ejecutan el código desde la RAM. Esto puede habilitar Linux en una variedad de dispositivos alimentados por batería donde los procesadores más grandes y más rápidos simplemente no se ajustan a su presupuesto de energía. Por otro lado, tampoco obtendrá mucha potencia de procesamiento de estos ...

Básicamente, si estás usando una batería y no necesitas mucha potencia de procesamiento, esta podría ser una solución para ti, si no, puedes optar por un ARM Core más grande con MMU.

    
respondido por el Dirk
2

Creo que hay un par de proveedores de Cortex-M3 que ofrecen notas de aplicación sobre el uso de versiones simplificadas de Linux ( uCLinux ) en ejecución en sus ofertas de productos. Como anécdota, creo que ST Micro tuvo algunas ofertas. Actualmente estoy trabajando con un Actel / Microsemi SmartFusion (Cortex-M3 + FPGA Fabric) que tiene un nota de la aplicación PDF que apunta a una ofrenda de Emcraft .

    
respondido por el Nate

Lea otras preguntas en las etiquetas