banner

Blog

May 03, 2023

Tutto sull'USB

Come molte persone hanno sottolineato, ciò che conta con USB-C non è solo lo standard, ma le implementazioni. Dopotutto, sono le implementazioni con cui dobbiamo effettivamente confrontarci, ed è qui che sorgono la maggior parte dei problemi con USB-C. C'è qualche difetto nello standard, come la mancanza di contrassegni sui cavi fin dall'inizio, ma a questo punto sono convinto che lo standard USB-C sia molto migliore di quanto alcuni pensino.

Vorrei guidarti attraverso alcune implementazioni USB-C in prodotti reali, open source, adiacenti e semplicemente interessanti. Sono tutti imperfetti in qualche modo – non può essere altrimenti, dato che devono fare i conti con il disordinato mondo reale, dove la perfezione è una rarità.

Oggi diamo un'occhiata al Pinecil. Un saldatore della Pine64, uscito qualche anno fa, che mantiene il prezzo basso e la qualità alta. Presenta sia un jack a botte che una porta USB-C per l'ingresso di alimentazione: un gradito allontanamento dalla strategia del ferro Miniware, dove né il TS100 con solo jack a botte né i ferri TS80 con punta proprietaria a basso consumo lo hanno fatto. E, dato il suo design basato su punte in stile TS100 T12, non c'è da meravigliarsi che Pinecil abbia preso un meritato posto nel mondo degli hobbisti.

Ora, potresti pensare che Pinecil dovrebbe essere un dispositivo semplice. Il modo consueto per ottenere elevata potenza da una porta USB-C è un IC trigger Power Delivery (PD) e potresti semplicemente usarlo. Tuttavia, se hai letto l'articolo sull'alimentazione USB-C, potresti ricordare lo scenario del caricabatterie da 45 W contro 60 W, in cui tale soluzione fallirebbe immediatamente. Nel complesso, la configurabilità dei circuiti integrati di trigger è piuttosto bassa e, quando si riscontra un problema di compatibilità PD con alcuni alimentatori, non è possibile fare nulla al riguardo se non sostituire il circuito integrato con un circuito integrato con logica leggermente diversa, se esiste anche un sostituto, e di solito non è così. Ciò è costoso e limitante per un prodotto di uso reale.

Pinecil ha scelto la strada del "software stack PD + IC frontend PD", dedicando parte dell'MCU alla natura in tempo reale delle comunicazioni PD. Il frontend PD utilizzato è il FUSB302, collegato all'MCU tramite la normale interfaccia I2C. Il microcontrollore stesso è cambiato dal GD32VF103 in Pinecil v1 al BL706 in Pinecil v2 – entrambi RISC-V.

Ora, qui ho iniziato a parlare in astratto, ma ha senso parlare dell'hacker che fa il lavoro reale per rendere possibile lo stack PD – in effetti, l'intero stack software Pinecil. La persona responsabile del PD e del software Pinecil in generale è [Ralim], noto per il suo firmware IronOS inizialmente sviluppato per TS100, TS80 e altri saldatori con MCU montati. Pine64 ha contattato [Ralim] quando Pinecil era solo un concetto, chiedendo se sarebbe stato disponibile per il porting di IronOS, incluso il lavoro PD richiesto.

Nel corso degli anni, l'approccio "frontend + MCU" ha dato i suoi frutti enormi. Uno dei motivi principali è la compatibilità con l'alimentatore: ci sono moltissime variazioni nelle comunicazioni con l'alimentatore USB-C, poiché le cose PD possono essere difficili da implementare, soprattutto quando si tratta di edgecase. Il firmware iniziale dei ferri Pinecil, infatti, non funzionava con numerosi alimentatori in circolazione, inclusi, ad esempio, alcuni power brick Apple.

Ora, la cosa bella è che, ogni volta che qualcuno segnalava un problema di compatibilità dell'alimentatore su GitHub, [Ralim] poteva rintracciare il problema, tramite il debug remoto "prova questo binario" o acquistando direttamente lo stesso alimentatore. Quindi, risolverebbe il problema modificando il modo in cui lo stack tratta i casi limite, testando la soluzione e caricando una nuova versione del firmware Pinecil su GitHub affinché tutti possano utilizzarla. Nel giro di un anno, la maggior parte dei problemi USB-C sono scomparsi e, se hai un problema con Pinecil, è probabile che tu abbia solo bisogno di aggiornare il firmware dalla vecchia versione flashata in fabbrica.

Nel corso degli anni, lo stack è diventato piuttosto maturo e, soprattutto, testato in battaglia: al giorno d'oggi è difficile trovare un alimentatore con cui il Pinecil non funzioni. Per motivi di debug e comodità degli hacker, se colleghi un alimentatore USB-C al tuo Pinecil tenendo premuto il pulsante +, ti verrà mostrato un menu di debug PD che elenca tutti i profili: in un certo senso, Pinecil è uno strumento debugger PD che puoi potrebbe già possedere.

CONDIVIDERE