Se vi state chiedendo se è possibile avviare Linux su una scheda Arduino UNO, la risposta è decisamente si, e questo è l'articolo giusto per voi!
Giang Vinh Loc è riuscito ad avviare Linux su un Arduino UNO Rev3 in sole 16 ore. Il codice è scritto in puro AVR C e vengono fornite le istruzioni complete per la compilazione. Lo spazio di archiviazione proviene da una scheda SD, poiché i miseri 32k dell'ATmega non sono neanche lontanamente sufficienti. Il codice è in puro AVR C e l'IDE (Integrated Development Environment) di Arduino viene utilizzato solo come terminale seriale. Si tratta di un porting di mini-rv32ima (un emulatore minimo di RISC-V, in grado di avviare Linux) su ATmega328p (il cuore di Arduino UNO, un microcontrollore AVR a 8 bit). Quindi, in pratica, questo codice è per l'avvio di Linux su Arduino UNO. Sì, avete letto bene, Arduino UNO può (teoricamente, ma non praticamente) avviare Linux.
L'idea di funzionamento è molto semplice: si dispone di un Arduino UNO (o ATmega328p) per eseguire la logica dell'emulatore, e l'accesso alla RAM dell'emulatore avviene tramite lo swapping con una scheda SD (che viene comunicata tramite l'interfaccia SPI). L'emulatore ha anche 3 cache da 512 byte e un sistema di scrittura cache lazy/delayed. Il codice è scritto in C puro (e non in Arduino) per ridurre il sovraccarico di Arduino (se presente). Inizializza UART, SPI, SD card e un pin di ingresso-pullup digitale per l'attivazione del dump dello stato dell'emulatore. Infine, inizializza la cache, quindi mini-rv32ima e lascia che l'emulatore faccia il suo lavoro.
Il progetto completo è disponibile qui: GitHub - raspiduino/arv32-opt: [Tested successfully] Linux on Arduino UNO / atmega328p port of mini-rv32ima. Let's run Linux on the world's worst Linux PC (and beat Dmitry Grinberg)