Come continuazione del suo mini PCB Linux basato su ESP32, Clem Mayer esplora come ottenere l’output video da un chip RP 2040 (Fonte: hackster.io).
Nell’ottobre del 2023, Clem Mayer, conduttore di element14 Presents, si è lasciato ispirare dal Raspberry Pi Compute Module 4 e ha voluto costruire il proprio computer a scheda singola. Tuttavia, invece di utilizzare un SoC più tradizionale, è riuscito a ottenere una versione molto leggera di Linux in esecuzione su un ESP32-S3, completo di piedinatura esistente del connettore Compute Module 4 per la compatibilità con altre schede portanti. All’epoca, Mayer espresse interesse per la creazione di un coprocessore GPU basato sul chip RP2040 del Raspberry Pi Pico e sul sottosistema PIO che potesse essere utilizzato per generare segnali DVI e pilotare display esterni. E in questo progetto dimostra come è riuscito a raggiungere questo obiettivo.
Pico DVI
Gli standard DVI, DisplayPort, HDMI e persino VGA si affidano tutti a I2C per impostare le connessioni iniziali al dispositivo host e configurare il display prima ancora che sia necessario un driver. Per questo motivo, Mayer sapeva di poter sfruttare la libreria PicoDVI di Wren6991, che consente a un chip RP2040 di inviare segnali DVI tramite PIO e controllare uno schermo. Ha rapidamente flashato il codice di esempio su un Raspberry Pi Pico e ha collegato una scheda breakout HDMI al Pico, ma alla fine non ha ottenuto alcun segnale. Ciò era dovuto a una differenza di impedenza attraverso il bus del segnale, poiché la mancanza di resistori e le diverse lunghezze dei conduttori causavano un peggioramento eccessivo della temporizzazione del segnale. Una volta ordinato e assemblato su alcune schede Pico DVI Sock prefabbricate, l’RP2040 è stato finalmente in grado di visualizzare un testo di esempio su uno schermo.
Invio e disegno di dati grafici
Come accennato in precedenza, i connettori del display dispongono di linee I2C per leggere/scrivere i dati di configurazione del display. Ma andando oltre il display, tutti i connettori PCIe hanno anche un set di connettori per SMBus compatibile con I2C e può essere facilmente scritto con una chiamata di sistema in Linux. Il codice finale di Mayer per il Pico è ancora basato sul progetto PicoDVI, ma invece di manipolare i singoli pixel, ha fatto sì che il Pico agisse come un dispositivo periferico I2C per accettare comandi e convertirli in chiamate Adafruit GFX che alla fine vengono scritte sullo schermo da un buffer.
Progettazione di circuiti stampati
Una volta completata la validazione sia sulla breadboard che sul breakout, Mayer ha progettato un PCB più compatto che avrebbe ospitato il Raspberry Pi Pico, il connettore HDMI e tutti i componenti di supporto necessari come un regolatore di tensione e una serie di resistori per l’adattamento dell’impedenza. Forse l’aspetto più interessante della scheda è il connettore PCIe x1 nella parte inferiore che le consente di inserirsi nella scheda madre di un computer proprio come farebbe una scheda grafica, consentendo così a un programma di pilotare un display tramite I2C.
Per vedere di più su come Mayer ha progettato e fabbricato questa GPU basata su Pico, è disponibile un video sul canale YouTube di element14 Presents.
Join our groups on Telegram…