Est-il possible dexécuter Linux sur Arduino? Si oui, quelles étapes et limites faut-il prendre en compte? Sinon, quelles sont les limitations qui empêchent cela?
Commentaires
- hackaday.com/ 2012/03/28 / building-the-pire-linux-pc-ever
- Utilisez plutôt un RPi.
Réponse
Linux est un système dexploitation très complexe, mais il peut être capable de sadapter à un Arduino. Points à considérer:
- Il ny a pas de port AVR actuel du code source.
- Vous nauriez pas de graphiques, à la place accéder au terminal via UART.
- Le pilote du système de fichiers devrait être réécrit pour accéder au flash interne ou à une carte SD externe.
- Ce serait extrêmement lent! LATmega328 fonctionnerait à 16 MHz, soit environ 20 MHz maximum (overclocké). La plupart des machines Linux fonctionnent à un minimum de 400 MHz, et plus avec des graphiques.
- Vous auriez probablement besoin dun peu de RAM supplémentaire, probablement une bonne idée dutiliser un ATmega2650 (celui du Mega), qui en a 16 fois la RAM de lUno. Vous pouvez également utiliser un Due (6x plus rapide que lUno, plus de RAM).
- Vous devrez peut-être écrire des pilotes USB spéciaux pour OTG (sur le Due) ou MAX3421EE (Mega ADK, bouclier dhôte USB) .
En bref, cela prendrait beaucoup de temps et defforts, et serait probablement trop lent pour une utilisation quotidienne. Si vous voulez vraiment Arduino Linux, consultez le Yun.
Commentaires
- Vous ne le feriez pas » » probablement besoin de RAM supplémentaire, vous avez besoin de RAM supplémentaire. Linux nécessite 1 Mo + RAM. De plus, labsence de MMU signifierait que vous ‘ devez trouver comment en émuler une (ou exécuter ucLinux). En réalité, au mieux, vous ‘ finissez par émuler un processeur plus performant dans latmega, ce qui serait un ordre de grandeur plus lent que le code natif. Même larduino dû na ‘ pas la RAM requise.
- De plus, lATmega328P a 2 Ko de SRAM, et lATmega2560P na que 8 Ko. Cest seulement 4X le RAM, pas 16x.
Réponse
Il na tout simplement pas assez de RAM. Vous devez également lui apprendre à démarrer à partir de la mémoire flash, ce qui impliquerait de réécrire le chargeur de démarrage.
Vous pouvez à la place utiliser un Arduino Yun ou un PCDuino ; bien que nétant pas des Arduinos « standard », ils prennent en charge les boucliers Arduino et exécutent Linux.
Ou il y a toujours le Raspberry Pi .
Commentaires
- Pourquoi dites-vous que Yun nest pas » standard » Arduino? Je suis daccord que ce nest peut-être pas le plus courant, mais cest un Arduino en effet.
- @jfpoilpret La plupart des Arduinos sont des cartes atmega qui fonctionnent en C ++ compilé via avr-gcc et ont une puce de gestion USB. Ils se présentent sous différentes formes / tailles / puissances, mais ‘ sont essentiellement les mêmes (Mega mis à part). Il semblait assez évident que lOP parlait de ceux-ci et non du Yun / etc. doù la distinction.
- Il y a ‘ aussi le prochain Arduino Tre , au moins je ‘ m en espérant ‘ bientôt 😉
Réponse
La réponse courte est non.
Basicall y, vous auriez besoin de BEAUCOUP plus de RAM que même le plus gros ATmega a nativement.
Il est théoriquement possible dajouter du matériel externe, et de programmer lATmega pour émuler un CPU plus puissant, et exécutez Linux sur cela. Cependant, sur un arduino simple, ce nest pas possible.
Il serait beaucoup plus réaliste dexécuter Linux sur un Arduino Due, qui est essentiellement un processeur AT91SAM3X8E. Cependant, vous devez toujours ajouter de la SRAM et du stockage supplémentaires.
Il y a des choses comme lArduino Yun, mais cest vraiment un module Linux entièrement séparé sur le même PCB quun ATmega32U4, donc je ne « Je ne sais pas si vous pouvez vraiment le compter comme un arduino.
Possiblement pertinent: Que faut-il pour exécuter Linux embarqué?
Réponse
Il existe un tableau appelé pcDuino qui peut exécuter plusieurs variantes de Linux telles que Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (pour nen citer que quelques-unes). Cette carte nest pas un Arduino natif, mais plutôt Arduino AtHeart , et est faite par LinkSprite .
Arduino a quelques cartes qui prennent en charge lexécution dune variante de Linux appelé Linino :
- Le Arduino Yún est une carte microcontrôleur basée sur lATmega32u4 et lAtheros AR9331.Le processeur Atheros prend en charge une distribution Linux basée sur OpenWrt nommée Linino OS. La carte dispose dun support Ethernet et WiFi intégré, dun port USB-A, dun emplacement pour carte micro-SD, de 20 broches dentrée / sortie numériques (7 dentre elles peuvent être utilisées comme sorties PWM et 12 comme entrées analogiques), un cristal de 16 MHz oscillateur, une connexion micro USB, un en-tête ICSP et 3 boutons de réinitialisation.
- La nouvelle carte Arduino Tian est alimentée par le MCU SAMD21 dAtmel, avec un noyau ARM Cortex® M0 + 32 bits et un Qualcomm Atheros AR9342 , qui est un processeur MIPS hautement intégré fonctionnant jusquà 533 MHz et un module WiFi bi-bande IEEE802.11n 2×2 2,4 / 5 GHz riche en fonctionnalités. Qualcomm Atheros MIPS prend en charge une distribution Linux, basée sur OpenWRT nommée Linino. LArduino Tian a également une mémoire eMMC intégrée de 4 Go qui peut être utile pour construire vos projets. Il est possible dallumer / éteindre le port Linux depuis le MCU pour réduire la consommation dénergie.
- Arduino Industrial 101 est une carte dévaluation pour module Arduino 101 LGA. Le microcontrôleur ATmega32u4 est intégré à la plinthe. Le module prend en charge une distribution Linux basée sur OpenWRT nommée LininoOS. La carte a le WiFi intégré (opérations IEEE 802.11b / g / n jusquà 150 Mbps 1×1 2.4 GHz), 3 GPIO (dont 2 peuvent être utilisés comme sorties PWM), 4 entrées analogiques, 1 USB, 1 signal Ethernet sur la broche en-têtes et un convertisseur DC / DC intégré. Consultez le guide dassemblage et connectez simplement votre carte à un ordinateur avec un câble micro USB pour commencer.
Réponse
Cela date de plusieurs années, mais peut-être plus pertinent car les Arduinos obtiennent plus de RAM et 32 bits ATMega AVR, etc. Il « est un problème évident notamment pas dans la réponse la plus populaire ici. LArduino utilise un AVR MICROCONTROLLER , pas un MICROPROCESSEUR. Cest lune des principales raisons pour lesquelles il ny a pas de port de Linux. Les microcontrôleurs sont conçus pour effectuer une tâche spécifique, des applications où la relation entre lentrée et la sortie est bien définie. Les microprocesseurs sont conçus pour fonctionner une variété dapplications sur les systèmes dexploitation. Noubliez pas, depuis le début, Linux avait besoin dune unité de gestion de la mémoire et ne pouvait pas fonctionner sur des PC 8088 ou 286. Ensuite, il y avait μClinux, qui ciblait à lorigine la famille de processeurs 68k Motorola DragonBall, pour Palm Pilots . Cela na jamais été particulièrement réussi. Vous aurez peut-être plus de succès à porter FreeDOS ou même Minix que Linux, peut-être quelque chose en assembleur, mais co empiler un OS sur un microcontrôleur est très peu pratique. Cest peut-être un problème académique difficile, mais qui va spécifiquement à lencontre de lobjectif dutiliser un microcontrôleur au lieu dun microprocesseur.
Réponse
Cest possible, mais ce serait pénible car vous auriez à lécrire en C. (sans parler du matériel supplémentaire nécessaire comme un bouclier de carte SD et des puces mémoire supplémentaires) Quelque chose comme Ontas, un noyau dans lequel jai écrit C pour larduino, aiderait car il prend en charge lajout de pilotes, au détriment de ralentir la répétition de la fonction de boucle vide (ce nest pas aussi grave que vous pourriez le penser) (Ontas est encore en développement et de nouvelles fonctionnalités sont ajoutées tout le temps)
Cliquez ici pour le lien vers les fichiers .ino et .h associés