Je dirais que tu rêves. Le principal problème sera la RAM limitée.
En 2004, Eric Beiderman a réussi à faire démarrer un 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 tout désactivé options configurables, y compris celles que vous recherchez (USB, WiFi, SPI, I2C), pour voir à quel point cela deviendrait petit. Maintenant, je fais juste référence au noyau ici, et cela n'inclut aucun composants de l'espace utilisateur.
La bonne nouvelle :il s'adaptera à 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, et 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 sur 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 en flash non compressé 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, vous rêvez. Surtout avec USB, réseau et 802.11/wifi. Je ne pense tout simplement pas que vous puissiez faire cela et M3 est vraiment exagéré.
OpenWRT est l'une des distributions Linux les plus petites et les plus intégrables que je connaisse pour la mise en réseau et il est difficile d'obtenir moins de 2 Mo, en particulier avec le Wifi.
Essayez de rechercher 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.
As-tu du MMU sur le processeur ? Si vous ne le faites pas, vous voudrez peut-être consulter: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 avait é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 aurait besoin d'utiliser ucLinux.