Cosa ci vuole per compilare Linux su Arduino, se possibile?

È possibile eseguire Linux su Arduino? In caso affermativo, quali passaggi e limitazioni devono essere considerati? In caso contrario, quali sono le limitazioni che lo impediscono?

Commenti

Risposta

Linux è un sistema operativo molto complesso, ma potrebbe essere in grado di adattarsi a un Arduino. Cose da considerare:

  • Non esiste una porta AVR corrente del codice sorgente.
  • Non avresti grafica, invece accedi al terminale tramite UART.
  • Il driver del filesystem dovrebbe essere riscritto per accedere alla flash interna o ad una scheda SD esterna.
  • Sarebbe estremamente lento! LATmega328 funzionerebbe a 16 MHz, o circa 20 MHz max (overcloccato). La maggior parte delle macchine Linux funziona a un minimo di 400 MHz e più con la grafica.
  • Probabilmente avresti bisogno di un po di RAM extra, probabilmente una buona idea usare un ATmega2650 (quello nel Mega), che ha 16 volte la RAM di Uno. Puoi anche usare un Due (6 volte più veloce di Uno, più RAM).
  • Potrebbe essere necessario scrivere driver USB speciali per OTG (su Due) o MAX3421EE (Mega ADK, USB host shield) .

In breve, ci vorrebbe molto di tempo e impegno e probabilmente sarebbe troppo lento per luso quotidiano. Se vuoi davvero Arduino Linux, dai unocchiata a Yún.

Commenti

  • Non ” probabilmente ” ha bisogno di RAM aggiuntiva, ti serve di RAM aggiuntiva. Linux richiede 1 MB + ram. Inoltre, la mancanza di una MMU significherebbe che ‘ dovresti capire come emularne una (o eseguire ucLinux). Realisticamente, nella migliore delle ipotesi, ‘ finisci per emulare un processore più capace in atmega, che sarebbe un ordine di grandezza più lento del codice nativo. Persino il due arduino non ‘ ha neanche lontanamente la ram richiesta.
  • Inoltre, lATmega328P ha 2 KB di SRAM e lATmega2560P ha solo 8 KB. Questo è solo 4 volte la RAM, non 16 volte.

Risposta

Semplicemente non ha abbastanza RAM. Dovresti anche insegnargli ad avviarsi dalla memoria flash, il che comporterebbe la riscrittura del bootloader.

Puoi invece utilizzare un Arduino Yun o un PCDuino ; sebbene non siano “standard” Arduino questi supportano gli shield Arduino ed eseguono Linux.

Oppure cè sempre il Raspberry Pi .

Commenti

  • Perché dici che Yun non è ” standard ” Arduino? Sono daccordo che potrebbe non essere il più comune, ma è davvero un Arduino.
  • @jfpoilpret La maggior parte degli Arduino sono schede atmega che eseguono C ++ compilato tramite avr-gcc e hanno un chip di gestione USB. sono disponibili in varie forme / dimensioni / potenze, ma ‘ sono essenzialmente le stesse (Mega a parte). Sembrava abbastanza ovvio che lOP stesse parlando di questi e non di Yun / ecc. da qui la distinzione.
  • Cè ‘ anche Arduino Tre , almeno ‘ spero che ‘ s presto 😉

Risposta

La risposta breve è no.

Di base y, avresti bisogno di MOLTE RAM in più di quanto ne abbia nativamente anche il più grande ATmega.

È teoricamente possibile aggiungere hardware esterno e programmare ATmega per emulare una CPU più potente, ed esegui Linux su quello. Tuttavia, su un semplice arduino, non è possibile.

Sarebbe molto più realistico eseguire Linux su un Arduino Due, che è fondamentalmente una CPU AT91SAM3X8E. Tuttavia, avresti ancora bisogno di aggiungere un po di SRAM e memoria aggiuntiva.

Ci sono cose come Arduino Yun, ma in realtà è un modulo Linux completamente separato sullo stesso PCB di un ATmega32U4, quindi non “Non so se puoi davvero considerarlo come un arduino.


Possibilmente pertinente: Cosa ci vuole per eseguire Linux incorporato?

Risposta

Cè una bacheca chiamata pcDuino che può eseguire più varianti di Linux come Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (solo per citarne alcuni). Questa scheda non è una Arduino nativa, piuttosto Arduino AtHeart ed è realizzata da LinkSprite .
pcDuino

Arduino ha un paio di schede che supportano lesecuzione di una variante di Linux chiamato Linino :

  • Arduino Yún è una scheda microcontrollore basata su ATmega32u4 e Atheros AR9331.Il processore Atheros supporta una distribuzione Linux basata su OpenWrt denominata Linino OS. La scheda dispone di supporto Ethernet e WiFi integrato, una porta USB-A, slot per scheda micro-SD, 20 pin di ingresso / uscita digitali (7 dei quali possono essere utilizzati come uscite PWM e 12 come ingressi analogici), un cristallo da 16 MHz oscillatore, una connessione micro USB, unintestazione ICSP e 3 pulsanti di ripristino.
  • La nuova scheda Arduino Tian è alimentata dallMCU SAMD21 di Atmel, con core ARM Cortex® M0 + a 32 bit e Qualcomm Atheros AR9342 , che è un processore MIPS altamente integrato che opera fino a 533 MHz e modulo WiFi dual-band IEEE802.11n 2×2 2,4 / 5 GHz ricco di funzionalità. Qualcomm Atheros MIPS supporta una distribuzione Linux, basata su OpenWRT denominata Linino. Arduino Tian ha anche una memoria eMMC da 4 GB che può essere utile per costruire i tuoi progetti. È possibile accendere / spegnere la porta Linux dallMCU per ridurre il consumo energetico.
  • Arduino Industrial 101 è una scheda di valutazione per modulo LGA Arduino 101. Il microcontrollore ATmega32u4 è integrato nel battiscopa. Il modulo supporta una distribuzione Linux basata su OpenWRT denominata LininoOS. La scheda dispone di WiFi integrato (operazioni IEEE 802.11b / g / n fino a 150 Mbps 1×1 2.4 GHz), 3 GPIO (di cui 2 utilizzabili come uscite PWM), 4 ingressi analogici, 1 USB, 1 segnale Ethernet su pin intestazioni e un convertitore CC / CC integrato. Dai unocchiata alla guida allassemblaggio e collega semplicemente la tua scheda a un computer con un cavo micro USB per iniziare.

Risposta

Questo è vecchio di diversi anni, ma forse più pertinente dato che Arduino ottiene più RAM e ATMega a 32 bit AVR, ecc. Cè un problema evidente, in particolare non nella risposta più popolare qui. Arduino utilizza un AVR MICROCONTROLLER , non un MICROPROCESSORE. Questa è una delle ragioni principali per cui non esiste il port di linux. I microcontrollori sono progettati per eseguire un compito specifico, applicazioni in cui la relazione tra input e output è ben definita. I microprocessori sono progettati per funzionare una varietà di app sui sistemi operativi. Ricorda, sin dallinizio, Linux aveva bisogno di ununità di gestione della memoria e non poteva funzionare su PC 8088 o 286. Poi cera μClinux, che originariamente era destinato alla famiglia Motorola DragonBall di processori 68k incorporati, per Palm Pilots . Non ha mai avuto particolare successo. Potresti avere più successo portando FreeDOS o anche Minix di Linux, forse qualcosa in assembler, ma co mpilare un sistema operativo su un microcontrollore è molto poco pratico. Forse è “un problema accademico impegnativo, ma specificamente contrario allo scopo di utilizzare un microcontrollore invece di un microprocessore.

Risposta

È possibile, tuttavia sarebbe un problema perché dovresti scriverlo in C. (per non parlare dellhardware aggiuntivo necessario come uno scudo per scheda SD e chip di memoria extra) Qualcosa come Ontas, un kernel in cui ho scritto C per arduino, aiuterebbe in quanto ha il supporto per aggiungere driver, a scapito di rendere più lenta la ripetizione della funzione loop void (questo non è un grosso problema come potresti pensare) (Ontas è ancora in fase di sviluppo e vengono aggiunte sempre nuove funzionalità)

Fare clic qui per il collegamento ai file .ino e .h associati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *