È possibile eseguire Linux su Arduino? In caso affermativo, quali passi e limitazioni devono essere considerati? In caso contrario, quali sono i limiti che impediscono questo?
È possibile eseguire Linux su Arduino? In caso affermativo, quali passi e limitazioni devono essere considerati? In caso contrario, quali sono i limiti che impediscono questo?
Risposte:
Linux è un sistema operativo molto complesso, ma potrebbe essere in grado di adattarsi a un Arduino. Cose da considerare:
In breve, ci vorrebbe molto tempo e fatica, e probabilmente sarebbe troppo lento per l'uso quotidiano. Se vuoi davvero Arduino Linux, dai un'occhiata a Yún.
Semplicemente non ha abbastanza RAM. Dovresti anche insegnargli ad avviarsi dalla memoria flash, il che comporterebbe la riscrittura del bootloader.
Puoi invece usare un Arduino Yun o un PCDuino ; pur non essendo Arduinos "standard", supportano gli scudi Arduino ed eseguono Linux.
Oppure c'è sempre il Raspberry Pi .
La risposta breve è no.
Fondamentalmente, avresti bisogno di MOLTE più ram di quanto anche il più grande ATmega abbia nativamente.
Si è teoricamente possibile aggiungere hardware esterno, e programmare l'ATmega per emulare una CPU più potente, ed eseguire Linux su questo. Tuttavia, su un semplice arduino, non è possibile.
Sarebbe molto più realistico eseguire Linux su un Arduino Due, che è fondamentalmente una CPU AT91SAM3X8E. Tuttavia, dovrai comunque aggiungere SRAM e spazio di archiviazione aggiuntivi.
Ci sono cose come Arduino Yun, ma questo è davvero un modulo linux completamente separato sullo stesso PCB di un ATmega32U4, quindi non so se puoi davvero contarlo come un arduino.
Forse pertinente: cosa serve per eseguire Linux incorporato?
C'è una scheda chiamata pcDuino che può eseguire più varianti di Linux come Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (solo per citarne alcune). Questa scheda non è un nativo Arduino, ma piuttosto Arduino AtHeart ed è realizzato da LinkSprite .
Arduino ha un paio di schede che supportano l'esecuzione di una variante di Linux chiamata Linino :
Questo ha diversi anni, ma forse è più pertinente in quanto gli Arduinos ottengono più RAM e AVR ATMega a 32 bit, ecc. C'è un problema ovvio, in particolare non nella risposta più popolare qui. Arduino utilizza un MICROCONTROLLER AVR, non un MICROPROCESSORE. Questo è uno dei motivi principali per cui non esiste una porta di Linux. I microcontrollori sono progettati per eseguire un'attività specifica, applicazioni in cui la relazione tra input e output è ben definita. I microprocessori sono progettati per eseguire una varietà di app sui sistemi operativi. Ricorda, fin dall'inizio, Linux aveva bisogno di un'unità di gestione della memoria e non poteva funzionare su PC 8088 o 286. Poi c'è stato μClinux, che inizialmente aveva come target la famiglia di processori embedded 68k Motorola DragonBall, per Palm Pilots. Non ha mai avuto particolarmente successo. Potresti avere più successo nel portare FreeDOS o anche Minix rispetto a Linux, forse qualcosa in assemblatore, ma compilare un sistema operativo su un microcontrollore è molto impraticabile. Forse è un problema accademico impegnativo,
È possibile, tuttavia sarebbe un dolore perché dovresti scriverlo in C. (per non parlare dell'hardware aggiuntivo necessario come uno scudo per schede SD e chip di memoria extra) Qualcosa come Ontas, un kernel in cui ho scritto C per Arduino, sarebbe di aiuto in quanto ha il supporto per aggiungere driver, a scapito di rendere più lenta la ripetizione della funzione loop vuoto. (Questo non è un grosso problema come potresti pensare) (Ontas è ancora in fase di sviluppo e nuove funzionalità vengono aggiunte continuamente)
Fare clic qui per il collegamento al file .ino e ai relativi file .h