29 votos

Linux en la serie ARM Cortex-M3

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

Necesito construir un baja potencia gateway (ethernet, wifi...), así que supongo que un cortex-M o cortex-R será el buen punto de partida. Pero no encontro ninguna placa de desarrollo con, por ejemplo, un cortex-m3 (que parece ser bastante popular) que soporte linux.

Parece posible linuxM3 Me pregunto por qué no hay un proyecto linux en torno a un mbed o un LPCXpresso por ejemplo

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

18voto

letronje Puntos 128

En cuanto al ARM Cortex-M3:

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

Sin embargo, existe una variante del kernel de Linux para procesadores sin MMU 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 memoria RAM externa. Creo que incluso las piezas más grandes de Cortex-M3 sólo tienen 1MB de flash, por lo que es probable que también necesites almacenamiento adicional.

12voto

Simon Gillbee Puntos 366

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

Una búsqueda de "Cortex-M + Linux" no da muchas respuestas porque el Cortex-M no está diseñado para Linux. El ARM menos potente que se considera capaz de ejecutar un sistema operativo completo como Linux es el Serie ARM926EJ-S que utiliza la arquitectura ARMv5. Se trata de un procesador clásico, con una amplia adopción (se encuentra en muchas cajas NAS, smartphones antiguos y el Chumby Classic) y mucho apoyo, pero es un poco menos eficiente que sus sucesores. Tiene una arquitectura ARMv5 y funciona a un par de cientos de MHz.

Esto es lo que realmente quieres, pero no puedes tenerlo

El procesador que realmente quieres, creo, es el Cortex-A5: Diseñado para sustituir (y ser un poco más potente que) el ARM11, pero mucho más eficiente en cuanto a potencia y en un proceso más moderno. (Nota: Nada que ver con el A5 de Apple, que es un Cortex-A9 especial) Se anunció en 2009, y estamos esperando ver el silicio "cualquier día de estos". Nadie ha producido todavía un SoC de propósito general para este procesador, porque los smartphones son los que dirigen el mercado y el mercado entre un A9 más potente y un ARM11 más antiguo no es convincente. Para más detalles, véase esta discusión: 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 puede que no veas ningún ahorro en tu presupuesto de energía). Es la que alimenta los smartphones menos antiguos, como el iPhone 3G, así como el iPod Touch, el Kindle y el Zune, y funciona a 500-800 MHz. La última arquitectura, ARMv7, es la serie Cortex. Los Cortex-A8 y -A9 alimentan los últimos smartphones y tabletas a 800MHz - 1,2GHz, probablemente querrás quedarte con los procesadores más pequeños y lentos si buscas un diseño minimalista. Las cifras de rendimiento por vatio de estos procesadores son fantásticas, pero podría ser más seguro (y sin duda será menos complejo) utilizar simplemente las piezas ARMv5.

5voto

kender Puntos 18446

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

Esto suele significar que se expone un bus de 32 bits para poder conectar chips adicionales. Por eso es más común ver ordenadores monoplaca (SBC) con RAM adicional y chips flash en el rango de los megabytes utilizados para ejecutar linux. Los microcontroladores que has enumerado no ofrecen esto. A mi modo de ver, el cortex-m0/m3 está pensado más bien para aplicaciones en las que un micro de 8 bits no sería (o apenas) suficiente, por lo que todos los recursos que necesitas están integrados en el chip.

Para responder mejor a esta pregunta, sería conveniente analizar los requisitos de los linux embebidos. Por lo general, esto significa ser capaz de encajar un cargador de arranque, un kernel y un sistema de archivos, y, por supuesto, la aplicación de usuario real y las bibliotecas necesarias para ejecutarla. Si se suma todo esto, pronto se verá que se necesitan un par de megabytes de RAM y Flash para hacer algo útil.

3voto

jwalkerjr Puntos 828

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

Una búsqueda rápida en Google de ucLinux le 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 se necesita una ram externa y una tarjeta SD para hacerlo funcionar. Y además el precio se acerca a proyectos como la Rasperry PI, así que tienes que pensar en cuáles son tus necesidades.

¿Tal vez otro sistema operativo más pequeño sea una mejor opción? Aunque es bueno tener Linux en todas partes...

2voto

jilles de wit Puntos 5207

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

http://www.emcraft.com/

Hemos ejecutado con éxito uClinux en los siguientes MCUs Cortex-M3: LPC1788 de NXP, STM32F2 de STmicro, SmartFusion de Actel, y estamos en proceso de añadir 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-estrecha; necesitas al menos 4MB de RAM externa para configuraciones prácticas. Cuanto más mejor, de hecho - si tu aplicación necesita "características", Linux tiene soporte para casi todo y no te arrepentirás de haber añadido más RAM en lugar de menos.

En cuanto a los dispositivos concretos que se utilizan para la RAM externa, todo viene definido por la interfaz de memoria externa que proporciona una MCU concreta. El STM32F y el SmartFusion sólo soportan SRAM; podrías conseguir una PSRAM de 16MB y 70ns (con un modo de página para un funcionamiento más rápido) por $6-7; LPC1788 support faster SDRAM memories; Kinetis K70 supports DDR2 ($ 5 para un dispositivo de 64MB), etc. Todas esas memorias consumen apenas uA en tiempos estáticos.

Necesitas algo para cargar un Linux de arranque, pero esto puede ser casi 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.

Actualización

Hay un montón de aplicaciones sensibles a la energía en las que su dispositivo está inactivo la mayor parte del tiempo, sin embargo, cuando se ejecuta, tiene que ser capaz de hacer muchas cosas que no van a ser fáciles de lograr utilizando un RTOS más pequeño. Conexiones seguras, VLAN, túnel TCP/IP, SNMP, tarjeta SD, dispositivo USB / host, 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 sólo una parte de la historia. Lo que estamos viendo con nuestros clientes cada vez más es que los diseños embebidos que utilizan Cortex-M3 no necesitan sólo 1 o 2 de esas características avanzadas, sino que necesitan muchas de ellas de un solo dispositivo. Aunque un RTOS proporcione todas las funciones que necesita un diseño, meterlo todo en la memoria del chip va a ser un reto. Con uClinux o sin él, mi opinión es que la tendencia va a ser que cada vez más diseños basados en Cortex-M utilicen memoria externa. Por supuesto, una vez que se consigue una RAM externa en el diseño, uClinux empieza a tener más sentido.

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

Linux (uClinux) se ejecuta perfectamente en este dispositivo. Usando 'dhrystone', obtenemos alrededor del 50% del rendimiento que obtenemos en una caja PowerPC de 250Mhz de Freescale. Arranque rápido, mucha RAM (el módulo TWR-K70 proporciona 128MB de RAM y 256MB de NAND Flash), red, JFFS2, framebuffer, SSH, HTTPD, Qt/E - todo esto funciona muy bien en el K70. La experiencia general del usuario es la de un "Linux embebido" normal en un microprocesador lleno de MMU.

A continuación se muestra el vídeo de una sesión de uClinux en vivo que se ejecuta en la MCU Freescale Kinetis K70 Cortex-M4:

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X