Linux – Per farlo girare basta una CPU a 4 bit!

Avviare Linux su piattaforme hardware limitate è diventata una questione d’onore tra gli ingegneri embedded. In alcuni casi, il risultato è pratico. In altri, è un risultato di abilità. L’ultimo progetto di Dmitry Grinberg rientra in quest’ultima categoria. Linux/4004 è un computer a quattro bit che avvia Linux su un microprocessore progettato per calcolatrici da tavolo negli anni ’70.

L’Intel 4004 è un microprocessore a quattro bit che richiede diversi altri chip per creare un equivalente funzionale di un processore moderno. Diversi aspetti rendono impegnativa l’esecuzione diretta di un sistema operativo come Linux. Ad esempio, la CPU non supporta alcuna operazione logica (ad esempio AND, OR, XOR), né il chip ha interruzioni. Fortunatamente, però, una condizione JMP controlla lo stato di uno specifico pin. Inoltre, le operazioni di memoria sono minime.

L’approccio di Grinberg all’esecuzione di Linux su una macchina così limitata è simile a un progetto passato. In precedenza, Grinberg aveva realizzato un biglietto da visita che emulava un processore MIPS con Linux. Per Intel 4004, Grinberg ha scelto anche di emulare un processore MIPS R300.

 

Linux

 

L’implementazione solo del MIPS R3000 ha lasciato 400 byte dei 4096 byte disponibili dello spazio di codice del 4004. Nonostante questa limitazione, Grinberg è riuscito anche a inserire un driver per scheda SD da 190 byte. (Questo driver potrebbe essere il driver per scheda SD più piccolo al mondo) Alla fine, Grinberg ha implementato un metodo di cambio di banco per raddoppiare la dimensione della ROM fino a raggiungere l’ “enorme cifra” di 8192 byte.

Da lì, Grinberg ha aggiunto il supporto a Linux/4004 per la (moderna) PSRAM basata su SPI (RAM per l’emulazione MIPS), un display a caratteri VFD 40×2 e una porta seriale basata su UART. Inoltre, 32 LED visualizzano il contatore dei programmi (PC) del MIPS, perché si sa, ogni progetto ha bisogno di LED lampeggianti (la leggenda narra che i LED aumentino le prestazioni – NDR). Detto questo, il contatore si aggiorna una volta ogni 32 istruzioni.

L’altro hardware include traduttori del livello di tensione per interfacciare il chipset vintage con i chip moderni. Questi traduttori sono necessari per garantire che il microprocessore a quattro bit possa comunicare con i componenti moderni, come la scheda SD e la PSRAM. L’alimentazione primaria è costituita dai 5 volt dell’USB-C, che vengono convertiti in 3,3 volt e -10 volt (per la memoria MCS-04).

 

All’inizio, il tempo di avvio di Linux era di poco più di nove giorni. L’obiettivo di Grinberg era quello di riuscire ad avviarlo in meno di una settimana. Dopo aver ottimizzato il codice di emulazione e quindi il kernel Linux, il tempo di avvio finale è sceso all’incredibile cifra di 4,76 giorni. Ma l’avvio è solo l’inizio. In una dimostrazione, Grinberg illustra la lentezza di Linux/4004 mostrando un time-lapse del processo di nove giorni per visualizzare l’arte ASCII sul VFD.

Anche se i chip degli anni ’70 stanno diventando difficili da trovare, Grinberg offre una distinta completa dei materiali per costruire un Linux/4004. Se sei interessato a un kit, contatta Grinberg tramite l’indirizzo email nel post sul blog del progetto Linux/4004. Lì troverai dettagli estremi sul funzionamento del 4004, una storia di costruzione della macchina e molti suggerimenti su come realizzarne uno.

 

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

###Da sempre appassionato di tecnologia, soffro di insaziabile curiosità scientifica. Adoro sperimentare e approfondire le mie conoscenze sulle ultime novità sul mercato in termini di hardware, alta tecnologia e videogiochi. Attratto e coinvolto nella prototipazione hardware dalla piattaforma Arduino, Raspberry Pi e Nvidia Jetson.### ###Always passionate about technology, I am suffering from insatiable scientific curiosity. I love experimenting and deepening of my knowledge on the latest news on the market in terms of hardware, hi-tech and video games. Got attracted and involved in hardware prototyping by the Arduino platform, Raspberry Pi and Nvidia Jetson.###

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.