Je dirais que tu rêves. Le principal problème sera la RAM limitée.
En 2004, Eric Beiderman a réussi à obtenir un démarrage du noyau avec 2,5 Mo de RAM , avec beaucoup de fonctionnalités supprimées.
Cependant, c'était sur x86, et vous parlez d'ARM. J'ai donc essayé de construire le plus petit noyau ARM possible, pour la plate-forme «polyvalente» (l'une des plus simples). J'ai désactivé toutes les options configurables, y compris celles que vous recherchez (USB, WiFi, SPI, I2C), pour voir à quel point cela deviendrait petit. Maintenant, je me réfère simplement au noyau ici, et cela n'inclut aucun composant de l'espace utilisateur.
La bonne nouvelle: elle rentrera dans votre flash. Le zImage résultant est de 383204 octets.
La mauvaise nouvelle: avec 256 Ko de RAM, il ne pourra pas démarrer:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Le segment .text est plus grand que votre RAM disponible, donc le noyau ne peut pas décompresser, encore moins allouer de la mémoire pour démarrer, et encore moins exécuter quoi que ce soit d'utile.
Une solution de contournement consisterait à utiliser le support d'exécution en place (CONFIG_XIP), si votre système le prend en charge (c'est-à-dire qu'il peut récupérer des instructions directement à partir de Flash). Cependant, cela signifie que votre noyau doit tenir non compressé en flash et 734 Ko> 700 Ko. De plus, les sections .data et .bss totalisent 66 Ko, laissant environ 190 Ko pour tout le reste (c'est-à-dire toutes les structures de données allouées dynamiquement dans le noyau).
C'est juste le noyau. Sans les pilotes dont vous avez besoin, ni aucun espace utilisateur.
Donc, oui, vous allez avoir besoin d'un peu plus de RAM.
OMI, tu rêves. Surtout avec USB, réseau et 802.11 / wifi. Je ne pense pas que vous puissiez le faire et M3 est vraiment un tronçon.
OpenWRT est l'une des distributions Linux les plus petites et les plus embarquables que je connaisse pour la mise en réseau et il est difficile de l'obtenir sous 2 Mo, en particulier avec le Wifi.
Essayez de chercher des puces ARM haut de gamme si c'est ce que vous voulez vraiment ou optez pour les SoC Broadcom ou Atheros qui sont actuellement courants dans les routeurs.
la source
Avez-vous du MMU sur le processeur? Si vous ne le faites pas, vous voudrez peut-être regarder: http://www.uclinux.org/ qui devrait vous donner une taille de noyau beaucoup plus petite que celle mentionnée. Cela fonctionne pour certaines puces CortexM3 Atmel, donc cela pourrait fonctionner pour la vôtre. Je ne l'ai pas utilisé donc ce n'est que spéculatif. Doh, je viens de voir que cette question a été mise à jour - eh bien, si vous n'avez pas de MMU (ce que vous n'avez probablement pas), vous ne pouvez pas utiliser le noyau "normal" et vous devrez utiliser ucLinux.
la source
Vous voudrez peut-être considérer NuttX comme une alternative si vous voulez vraiment la conformité POSIX dans une petite plate-forme non MMU.
la source
Je ne me souviens pas des détails, mais il existe une entreprise qui fabrique des cartes avec des STM32F4 exécutant uCLinux, le logiciel est téléchargeable, mais ils ont à la fois de la RAM externe et du flash sur ces cartes.
En remarque, le prix est si élevé que vous feriez mieux d'obtenir un Pi ou Pine64, à moins que vous ne vouliez cela comme une expérience d'apprentissage. Notre entreprise a examiné la question et en tenant compte des coûts de développement, elle a décidé que si nous devions exécuter quoi que ce soit sur Linux embarqué à l'aide de stm32f4, il est irréalisable économiquement, juste en comptant le coût des pièces.
la source
uCLinux fonctionnera probablement. Cependant, vous n'aurez aucune protection de mémoire sur le système car vous n'avez pas de MMU. Cela signifie que tout plantage dans n'importe quelle application pourrait faire tomber l'ensemble du système. Vous pouvez également rencontrer des problèmes de fragmentation de la mémoire sans la MMU. Pourquoi ne pas regarder l'un des TI Sitaras? Ils sont encore assez bon marché et vous pouvez exécuter Linux sur eux, ce qui sera beaucoup plus flexible.
la source