Linux sur la série ARM Cortex-M3

29

Je suis nouveau dans ARM et un peu confus avec toutes les différentes séries.

J'ai besoin de construire une passerelle basse consommation (ethernet, wifi ...), donc je suppose qu'un cortex-M ou cortex-R sera le bon point de départ. Mais il n'a trouvé aucune carte de développement avec, par exemple, un cortex-m3 (qui semble être très populaire) prenant en charge Linux.

Il semble possible que linuxM3 , donc je me demande pourquoi il n'y a pas de projet linux autour d'un mbed ou d'un LPCXpresso par exemple?

Quelqu'un peut-il m'indiquer le tableau de développement que je recherche, ou m'expliquer pourquoi "cortex m" + linux ne vient pas avec plus de réponses?

jojo l'abricot
la source
NXP a un support Linux pour d'autres processeurs qui ne sont pas sûrs de celui-là.
kenny
2
Quelle puissance doit-elle être? J'ai réussi à construire un système Linux complet de 1/2 watt basé sur le Freescale iMX283. 1 / 2W en charge normale sans Ethernet, 1W avec Ethernet, <1,5W Ethernet en pleine charge ... L'Ethernet PHY est la moitié de la puissance du système à charge normale.
Darron

Réponses:

18

Concernant l'ARM Cortex-M3:

Linux nécessite une MMU (Memory Management Unit). L'ARM Cortex-M3 n'en possède pas. Il est impossible d'exécuter le noyau Linux principal sur l'ARM Cortex-M3.

Cependant, il existe une variante du noyau Linux pour les processeurs MMUless appelée uCLinux .

Guide Linux sur M3

Note d'application de ST sur uCLinux

Cependant, comme d'autres l'ont noté, il est peu probable que Linux soit pratique sur le M3. Il ne fonctionnera pas sans RAM externe. Je pense que même les plus grandes pièces Cortex-M3 n'ont que 1 Mo de mémoire flash, vous aurez donc probablement besoin d'un stockage supplémentaire.

Toby Jaffey
la source
12

Cortex-M n'est pas à la hauteur, vous avez besoin de l'ARM926EJ-S

Une recherche de "Cortex-M + Linux" n'apporte pas beaucoup de réponses car le Cortex-M n'est pas conçu pour Linux. L'ARM le moins puissant généralement considéré comme capable d'exécuter un système d'exploitation complet comme Linux est la série ARM926EJ-S , qui utilise l'architecture ARMv5. Il s'agit d'un processeur classique, largement adopté (on le trouve dans de nombreux boîtiers NAS, les smartphones plus anciens et le Chumby Classic) et beaucoup de support, mais il est un peu moins efficace que ses successeurs. Il a une architecture ARMv5 et fonctionne à quelques centaines de MHz.

C'est ce que tu veux vraiment, mais tu ne peux pas l'avoir

Le processeur que vous voulez vraiment, je pense, est le Cortex-A5: conçu pour remplacer (et être juste un peu plus puissant que) l'ARM11, mais beaucoup plus économe en énergie et sur un processus plus moderne. (Remarque: Rien à voir avec l'A5 d'Apple, c'est un Cortex-A9 spécial) Il a été annoncé en 2009, et nous attendons de voir du silicium "n'importe quel jour maintenant". Personne n'a encore produit de SoC à usage général pour ce processeur, car les smartphones dirigent le marché et le marché entre un A9 plus puissant et un ARM11 plus ancien n'est tout simplement pas convaincant. Voir cette discussion pour plus de détails: http://forum.beyond3d.com/archive/index.php/t-60145.html

Options plus puissantes

L'ARMv6 de l'ARM11 est un peu plus efficace, mais aussi plus puissant (vous ne constaterez donc pas d'économies sur votre budget d'énergie). Il alimente les smartphones moins anciens comme l'iPhone 3G, ainsi que l'iPod Touch, le Kindle et le Zune et fonctionne à 500-800 MHz. La dernière architecture, ARMv7, est la série Cortex. Les Cortex-A8 et -A9 alimentent les derniers smartphones et tablettes à 800 MHz - 1,2 GHz, vous voudrez probablement vous en tenir aux processeurs plus petits et plus lents si vous visez un design minimaliste. Les performances par watt de ces processeurs sont fantastiques, mais il pourrait être plus sûr (et certainement moins complexe) d'utiliser simplement les pièces ARMv5.

Kevin Vermeer
la source
2
Remarque: le Cortex-A5 est maintenant disponible, et Atmel prétend fournir un support Linux pour sa version: atmel.com/Microsite/sama5d3/…
pjc50
10

Veuillez consulter ce site pour certaines plates-formes Cortex-M3 qui prennent en charge Linux (uClinux):

http://www.emcraft.com/

Nous exécutons avec succès uClinux sur les microcontrôleurs Cortex-M3 suivants: LPC1788 de NXP, STM32F2 de STmicro, SmartFusion d'Actel, et nous sommes en train d'ajouter la prise en charge de quelques autres: Freescale Kinetis, STM32F4 (ces deux sont Cortex-M4 plutôt que Cortex-M3) .

Certes, Linux (uClinux inclus) nécessite une RAM externe pour fonctionner - la SRAM intégrée de Cortex-M n'est pas assez grande, même pour une configuration Linux ultra-petite; vous avez besoin d'au moins 4 Mo de RAM externe pour des configurations pratiques. Plus c'est mieux, en fait - si votre application a besoin de "fonctionnalités", Linux prend en charge n'importe quoi et vous ne serez pas déçu d'avoir ajouté plus de RAM plutôt que moins.

En ce qui concerne les périphériques particuliers à utiliser pour la RAM externe, tout est défini par l'interface de mémoire externe fournie par un MCU particulier. STM32F et SmartFusion ne prennent en charge que SRAM; vous seriez en mesure d'obtenir une PSRAM de 16 Mo 70ns (avec un mode Page pour un fonctionnement plus rapide) pour 6-7 $; Le LPC1788 prend en charge des mémoires SDRAM plus rapides; Kinetis K70 prend en charge la DDR2 (5 $ pour un périphérique de 64 Mo), etc.

Vous avez besoin de quelque chose pour charger un Linux amorçable, mais cela peut concerner n'importe quoi - réseau, carte SD, EEPROM SPI, Flash NOR ou NAND, etc.

Dans l'ensemble, j'ose dire que Linux est une option totalement pratique pour une conception Cortex-M3.

Mise à jour

Il existe de nombreuses applications sensibles à l'énergie où votre appareil est inactif la plupart du temps, cependant, lors de son fonctionnement, il doit être capable de faire beaucoup de choses qui ne seront pas faciles à réaliser en utilisant un RTOS plus petit. Connexions sécurisées, VLAN, tunneling TCP / IP, SNMP, carte SD, périphérique / hôte USB, WiFI, etc. et la liste des exigences s'allonge encore et encore.

Avec un RTOS plus petit, certaines de ces fonctionnalités seront disponibles, d'autres non, mais ce n'est qu'une partie de l'histoire. Ce que nous constatons de plus en plus chez nos clients, c'est que les conceptions intégrées utilisant Cortex-M3 n'ont pas seulement besoin de 1 ou 2 de ces fonctionnalités avancées, elles en ont besoin de nombreuses à partir d'un seul appareil. Même si un RTOS fournit toutes les fonctionnalités dont une conception a besoin sur étagère, le stockage de tout cela dans la mémoire sur la puce sera un défi. uClinux ou non, je suppose que la tendance va être de plus en plus de conceptions basées sur Cortex-M utiliser la mémoire externe. Bien sûr, une fois que vous avez de la RAM externe dans votre conception, uClinux commence à avoir plus de sens.

En ce qui concerne la faible puissance de traitement fournie par Cortex-M (mesurée par rapport aux exigences du noyau Linux), comme expérience récente, nous venons d'activer uClinux sur le MCU Freescale K70. Il s'agit d'un Cortex-M4 (qui est le même que les unités matérielles FP et DSP Cortex-M3 plus); interfaces sur puce avec RAM haute densité (DDR2) et Flash (NAND), avec caches sur puce 2x8 Ko. Noyau Cortex-M 120Mhz, avec des pièces 150Mhz bientôt disponibles.

Linux (uClinux) fonctionne à merveille sur cet appareil. En utilisant «dhrystone», nous obtenons environ 50% de performances que nous obtenons sur un boîtier PowerPC Freescale de 250 MHz. Démarrage rapide, beaucoup de RAM (le module TWR-K70 fournit 128 Mo de RAM et 256 Mo de NAND Flash), mise en réseau, JFFS2, framebuffer, SSH, HTTPD, Qt / E - tout cela fonctionne très bien sur K70. L'expérience utilisateur globale est votre "Linux embarqué" habituel sur un microprocesseur MMU complet.

Voici un pointeur vers la vidéo d'une session uClinux en direct exécutée sur le MCU Freescale Kinetis K70 Cortex-M4:

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

vladimir khusainov
la source
5

Sans une sorte de prise en charge de la mémoire externe (RAM et Flash), il est impossible que vous puissiez adapter même la plus petite distribution Linux (par exemple, uclinux) aux ressources intégrées des appareils mentionnés.

Cela signifie généralement qu'un bus 32 bits est exposé afin de connecter des puces supplémentaires. C'est pourquoi il est plus courant de voir des ordinateurs à carte unique Linux (SBC) avec de la RAM supplémentaire et des puces flash de l'ordre de mégaoctets utilisés pour exécuter linux. Les microcontrôleurs que vous avez répertoriés ne proposent pas cela. À mon avis, le cortex-m0 / m3 est plus destiné aux applications où un micro 8 bits ne suffirait pas (ou à peine) - ainsi toutes les ressources dont vous avez besoin sont intégrées dans la puce.

Pour mieux répondre à cette question, il serait judicieux d'analyser les exigences pour Linux embarqué. Cela signifie généralement pouvoir adapter un chargeur de démarrage, un noyau et un système de fichiers - et bien sûr l'application utilisateur réelle et les bibliothèques requises pour l'exécuter. Faites le total et vous verrez bientôt que vous aurez peut-être besoin de quelques mégaoctets de RAM et de Flash pour faire quelque chose d'utile.

Jon L
la source
3

Il n'y a pas de MMU sur le stm32, vous devez donc utiliser ucLinux.

Un rapide google pour ucLinux vous enverra dans la bonne direction. https://www.google.com/search?q=stm32+uclinux

Mais d'un autre côté, Linux n'est pas vraiment utile sur ce type de petit processeur et la plupart du temps, vous avez besoin d'un ram externe et d'une carte SD pour le faire fonctionner. Et puis le prix se ferme sur des projets comme le Rasperry PI, vous devez donc réfléchir à vos besoins.

Peut-être qu'un autre OS plus petit est un meilleur choix? Même toi c'est bien d'avoir Linux partout ...

Johan
la source
3

Il existe des applications de faible puissance comme le meetering intelligent où il est en effet utile d'utiliser un Cortex-M3 avec une mémoire externe fonctionnant sous Linux. Ne pensez pas en termes de coût total (les cartes coûteront presque autant qu'avec un Core plus rapide) mais en termes de consommation d'énergie.

Si vous vivez avec une batterie et que vous êtes en mode veille la plupart du temps, en prenant une mesure peut-être toutes les minutes environ, puis en l'envoyant sur un réseau, il pourrait être agréable de pouvoir utiliser l'infrastructure fournie par linux pour TCP / IP, cryptage, etc.

Sur le salon mondial intégré de cette année, Pengutronix a montré un linux sur une carte de prototypage EnergyMicro exécutant uCLinux sur un Cortex-M3 avec RAM externe et une consommation électrique de 1,6 mW en mode veille. Energy Micro a des microcontrôleurs Cortex-M3 et M4 à faible puissance incroyables dans leur portefeuille spécialement optimisés pour les applications à faible puissance qui nécessitent environ 16 mW de puissance lors de l'exécution à 32 MHz lors de l'exécution de code à partir de la RAM. Cela peut activer Linux sur une variété d'appareils alimentés par batterie où les processeurs plus gros et plus rapides ne correspondent tout simplement pas à votre budget énergétique. D'un autre côté, vous n'obtiendrez pas non plus beaucoup de puissance de traitement ...

Donc, fondamentalement, si vous vivez avec une batterie et n'avez pas besoin de beaucoup de puissance de traitement, cela pourrait être une solution pour vous, sinon vous pourriez opter pour un ARM Core plus grand avec MMU.

Poignard
la source