Linux en la serie ARM Cortex-M3


29

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

Necesito construir una puerta de enlace de baja potencia (ethernet, wifi ...), así que supongo que un cortex-M o cortex-R será el buen punto de partida. Pero no encontró ninguna placa de desarrollo con, digamos, un cortex-m3 (que parece ser bastante popular) compatible con Linux.

Parece posible linuxM3 , así que me pregunto por qué no hay un proyecto de Linux alrededor de un mbed o un LPCXpresso, por ejemplo.

¿Alguien puede señalarme el tablero de desarrollo que busco o explicarme por qué "cortex m" + linux no viene con más respuestas?


NXP tiene algún soporte de Linux para otros procesadores que no están seguros de ese específico.
kenny

2
¿Qué tan baja potencia necesita ser? Logré construir un sistema Linux completo de 1/2 vatio basado en el Freescale iMX283. 1 / 2W durante la carga normal sin Ethernet, 1W con Ethernet, <1.5W Ethernet con carga completa ... El PHY de Ethernet es la mitad de la potencia del sistema con carga normal.
Darron

Respuestas:


18

Con respecto al ARM Cortex-M3:

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

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

Guía de Linux en M3

Nota de aplicación de ST sobre uCLinux

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


12

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

La búsqueda de "Cortex-M + Linux" no ofrece muchas respuestas porque el Cortex-M no está diseñado para Linux. El ARM menos potente generalmente considerado 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 una amplia adopción (se encuentra en muchas cajas NAS, teléfonos inteligentes más antiguos y el Chumby Classic) y mucho soporte, pero es un poco menos eficiente que sus sucesores. Tiene una arquitectura ARMv5 y funciona a unos 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 potente que) el ARM11, pero mucho más eficiente en energía y en un proceso más moderno. (Nota: nada que ver con el A5 de Apple, es un Cortex-A9 especial) Fue anunciado en 2009, y estamos esperando ver silicio "en cualquier momento". Nadie ha producido aún un SoC de propósito general para este procesador, porque los teléfonos inteligentes impulsan el mercado y el mercado entre un A9 más potente y un ARM11 más antiguo simplemente no es convincente. Vea esta discusión para más detalles: http://forum.beyond3d.com/archive/index.php/t-60145.html

Opciones más potentes

El ARMv6 en el ARM11 es un poco más eficiente, pero también más potente (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, es probable que desee seguir con los procesadores más pequeños y más lentos si está buscando 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 ciertamente será menos complejo) usar solo las partes ARMv5.


2
Nota: el Cortex-A5 ya se está enviando, y Atmel afirma proporcionar soporte de Linux para su versión: atmel.com/Microsite/sama5d3/…
pjc50

10

Consulte este sitio para ver algunas plataformas Cortex-M3 que admiten Linux (uClinux):

http://www.emcraft.com/

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 funcionar: la SRAM integrada de Cortex-M no es lo suficientemente grande, incluso para una configuración de Linux ultra pequeña; necesita al menos 4 MB de RAM externa para configuraciones prácticas. Cuanto más, mejor, de hecho, 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 dispositivos particulares para usar para RAM externa, todo está definido por la interfaz de memoria externa proporcionada por una MCU particular. STM32F y SmartFusion solo admiten SRAM; podría obtener una PSRAM de 70 MB de 16 MB (con un modo de página para una operación más rápida) por $ 6-7; LPC1788 admite memorias SDRAM más rápidas; Kinetis K70 admite DDR2 ($ 5 por un dispositivo de 64 MB), etc. Todos esos recuerdos consumen energía solo a niveles de uA en momentos estáticos.

Necesita algo para cargar un Linux de arranque, pero puede tratarse de cualquier cosa: red, tarjeta SD, SPI EEPROM, NOR o NAND Flash, etc.

En general, me atrevo 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 con un RTOS más pequeño. Conexiones seguras, VLAN, tunelización 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 características estarán disponibles, otras no, sin embargo, es solo una parte de la historia. Lo que vemos cada vez más con nuestros clientes es que los diseños integrados que utilizan Cortex-M3 no necesitan solo 1 o 2 de esas características avanzadas, sino que necesitan muchas de ellas desde un solo dispositivo. Incluso si un RTOS proporciona todas las características que un diseño necesita de fábrica, meterlo todo en la memoria en el chip será un desafío. uClinux o no, supongo 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.

Con respecto a la baja potencia de procesamiento proporcionada por Cortex-M (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 FP y DSP de hardware); Interfaces en chip para RAM de alta densidad (DDR2) y Flash (NAND), con cachés en chip de 2x8 KB. Núcleo Cortex-M de 120Mhz, con piezas de 150Mhz que saldrán pronto.

Linux (uClinux) se ejecuta maravillosamente en este dispositivo. Usando 'dhrystone', obtenemos alrededor del 50% de rendimiento que obtenemos en una caja PowerPC de Freescale de 250Mhz. Arranque rápido, mucha 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 muy bien en K70. La experiencia general del usuario es su "Linux integrado" habitual en un microprocesador lleno de MMU.

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

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


5

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

Esto generalmente significa que un bus de 32 bits está expuesto para conectar chips adicionales. Esta es la razón por la cual es más común ver computadoras de placa única (SBC) de Linux con RAM adicional y chips flash en el rango de megabytes utilizados para ejecutar Linux. Los microcontroladores que ha enumerado no ofrecen esto. A mi modo de ver, el cortex-m0 / m3 está destinado más a aplicaciones en las que un micro de 8 bits no sería 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 integrado. Por lo general, esto significa poder adaptar un gestor de arranque, un núcleo y un sistema de archivos, y, por supuesto, la aplicación de usuario y las bibliotecas necesarias para ejecutarlo. Suma esto y pronto verás que puedes necesitar un par de megabytes de RAM y Flash para hacer algo útil.


3

No hay MMU en el stm32, por lo que debe usar ucLinux.

Un google rápido para ucLinux te enviará en la dirección correcta. https://www.google.com/search?q=stm32+uclinux

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 ram externo y una tarjeta SD para que funcione. Y luego, el precio se está cerrando en proyectos como el Rasperry PI, por lo que debe pensar cuáles son sus necesidades.

¿Quizás otro sistema operativo más pequeño es una mejor opción? Incluso si es bueno tener Linux en todas partes ...


3

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

Si vive con una batería y está en modo inactivo la mayor parte del tiempo, tomar una medición tal vez cada minuto más o menos y luego enviarlo a través de una red, podría ser bueno poder usar la infraestructura que le brinda Linux para TCP / IP, cifrado, etc.

En la Exposición Mundial incorporada este año, Pengutronix mostró un Linux en una placa de prototipos de EnergyMicro ejecutando uCLinux en un Cortex-M3 con RAM externa y un consumo de energía de 1.6mW en modo inactivo. Energy Micro tiene algunas increíbles MCU Cortex-M3 y M4 de baja potencia en su cartera específicamente optimizadas para aplicaciones de baja potencia que necesitan aproximadamente 16mW de potencia cuando se ejecutan a 32MHz mientras ejecutan código desde RAM. Esto puede habilitar Linux en una variedad de dispositivos alimentados por batería donde los procesadores más grandes y 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á viviendo con una batería y no necesita mucha potencia de procesamiento, esta podría ser una solución para usted, de lo contrario, podría optar por un ARM Core más grande con MMU.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.