Il firmware è spesso programmato in dispositivi di memoria flash prima della produzione della PCB per ottenere un’alta produttività ed evitare il rallentamento della cadenza di produzione.
Comunque ci sono vantaggi quando si programma la memoria flash dopo che è stata saldata sulla PCB. Il test sul circuito (in-circuit test, ICT), l’interfaccia JTAG (Joint Test Action Group) e i connettori esterni posso essere usati per programmare dispositivi flash senza influenzare il tasso di produttività. La dimensione dell’immagine, l’infrastruttura manifatturiera esistente, la capacità del sistema e i metodi di programmazione richiesti potrebbero essere considerati nella scelta di una soluzione di pre-programmazione ottimale.
Vantaggi di programmazione su scheda
Uno dei vantaggi più significativi di programmazione su scheda è che consente agli ingegneri della progettazione e della produzione di combinare il test e la programmazione circuiti integrati (IC) in un singolo processo produttivo che elimina la necessità di eseguire la programmazione fuori scheda di un IC prima del montaggio dei componenti sulla scheda.
L’utilizzo della memoria flash dipende tipicamente dallo stato di sviluppo di un prodotto. In molte applicazioni i progettisti usano memoria Flash per sviluppare, memorizzare ed eventualmente eseguire firmware e codici applicativi. La programmazione su scheda è spesso usata durante lo sviluppo di nuovo codice applicativo o firmware. Il codice è scritto, compilato e scaricato sul dispositivo flash che è sulla scheda di sviluppo e poi testato sulla PCB target.
Quando H/W e S/W si avvicinano alla produzione è una pratica comune quella di pre-programmare i dispositivi di memoria flash prima d’iniziare la produzione vera e propria di alti volumi di PCB per due ragioni principali. Prima di tutto il firmware caricato sul dispositivo può essere usato per eseguire il booting essenziale e il testing delle PCB durante la produzione per controllare la funzione del sistema/modulo. In secondo luogo il caricamento del firmware finale, del sistema operativo e codice applicativo sul dispositivo flash prima della produzione consente di mantenere un alto volume e cadenza di produzione. Per sostenere questi modelli d’uso i vari fornitori procurano dei sistemi per caricare il firmware e dati nei dispositivi di memoria flash prima del processo di saldatura della PCB.
L’abilità di sfruttare abilmente i sistemi di produzione esistenti, accoppiati con le elevate velocità di programmazione delle memorie flash fa in modo che la programmazione su circuito sia una soluzione pratica e convenzionale per la programmazione di memoria flash, inoltre non ha nessun impatto sulla linea di produzione. Altri vantaggi di programmazione su scheda includono:
- La velocizzazione dei tempi di produzione: se un cambiamento è fatto alla immagine della memoria flash la modifica può essere mandata direttamente alla linea di manifattura, velocizzando così le tempistiche di consegna alla produzione.
- Miglioramento della qualità: la rimozione delle scorte pre-programmate riduce il rischio di mandare in produzione la versione errata di firmware, del sistema operativo o codice applicativo e inoltre il tempo e risorse necessarie alla ricerca delle unità che devono essere rilavorate.
- Una semplificazione della catena di fornitura: tradizionalmente le operazioni di produzione monitorano sia le unità programmate che non programmate, mentre con la programmazione su scheda solo le unità di memoria non programmate devono essere monitorate.
Tecniche di programmazione su scheda
Varie tecniche di programmazione su scheda (o di programmazione su sistema (in-system programming, ISP)) sono usate per caricare firmware e dati su un dispositivo flash dopo la saldatura a riflusso. Queste tecniche includono ICT, JTAG e connessioni esterne (Tab. 1).
ICT è una metodologia di test che controlla le PCBs per difetti di assemblaggio come corto circuiti, circuiti aperti, resistenze e condensatori direttamente dopo che i dispositivi sono montati sui forni di saldatura a riflusso
Dopo aver superato con successo la sequenza di test i dispositivi di memoria flash possono essere programmati direttamente con una strumentazione ICT.
Il tempo di programmazione deve essere molto corto (approssimatamene da 1 a 4 secondi) per evitare d’influenzare negativamente il tasso di produzione. In aggiunta la programmazione di un dispositivo di memoria con ICT richiede tipicamente un’interfaccia con un basso numero di piedini che limita a sua volta il numero di piedini sull’impianto da testare.
JTAG è uno standard IEEE (IEEE 1149.1) che usa un’architettura di monitoraggio dei contorni per testare l’integrità strutturale fra i dispositivi sulla PCB. L’interfaccia JTAG può effettuare l’ISP dei dispositivi di memoria flash. Durante l’ispezione scan dei contorni l’interfaccia permette il controllo diretto dei segnali di memoria e consente di programmare un’immagine dentro un dispositivo flash.
I programmatori di JTAG tipicamente scrivono S/W e dati direttamente sulla memoria flash usando un accesso al bus dei dati simile all’accesso usato per aggiornare il firmware della CPU.
ICT e JTAG sono usati tipicamente per programmare piccole immagini di dati (< di 16 Mbyte) su dispositivi di memoria flash come le NOR dovute alla ridotta bandwidth richiesta da questi processi (un bus con pochi piedini o frequenze di clock basse). La tabella 2 confronta le prestazioni teoriche di scrittura di nodi e interfacce di litografia flash NOR.
Le connessioni esterne e i nuovi modelli ICT sono le tecniche migliori per trasferire grandi immagini di dati che richiedono una bandwidth elevata. Queste due tecniche forniscono un’opportunità per produttori di tool e fornitori di supporto di fornire trasferimenti veloci di firmware ad alta densità e dati a dispositivi di memoria flash. Tester ICT hanno recentemente raggiunto velocità di programmazione di 20 Mbyte/sec.
Le connessioni delle estremità esterne consentono la programmazione su scheda usando due metodi basici. Con un microprocessore i dati sono trasferiti sul dispositivo di memoria flash con un connettore esistente (per esempio USB) usando il microprocessore principale sulla PCB per il controllo. Senza un microprocessore i dati sono trasferiti sul dispositivo flash con un connettore esistente (per es. UART) usando logiche di controllo specifiche sulla PCB dedicate all’ambiente di produzione. In questo caso il microcontrollore non è usato.
Tecniche di connessione esterne e nuovi modelli ICT possono trasferire dati a una velocità molto più elevata. La tabella 3 mostra la larghezza di banda che può essere raggiunta usando celle a livello singolo (single-level cell, SLC) NAND e memorie e-MMC per un dato nodo litografico. In ogni caso il dispositivo, invece che l’interfaccia, limita la bandwidth di programmazione.
Fattori critici per la programmazione su scheda
Quando si sceglie un metodo di programmazione su scheda per programmare immagini su dispositivi flash il tipo di memoria, dimensione dell’immagine, progetto della scheda e capacità di produzione esistenti sono tutti fattori critici da considerare.
Il codice di firmware, il sistema operativo e i file di dati variano da decine di kilobyte a centinaia di megabyte. Per una dimensione dell’immagine più piccola (< di 8 Mbyte) ICT e JTAG sono ideali per via della loro bandwidth bassa. Oggi molte linee di produzione usano JTAG e ICT per testare la funzionalità a livello di scheda, quindi tool addizionali non sono necessari. Con H/W esistente già installato e prodotti flash NOR che possono essere programmati da 1 e 2 Mbyte/secondo, la programmazione su scheda è una soluzione ideale quando il tempo di programmazione non eccede i 4 secondi e non influenza il tasso della produzione.
La prestazione del programma di flash NAND ad alta densità (da 32 MByte a 1 Tbyte) permette l’uso di tecniche di programmazione su scheda ottimizzate. La NAND SLC è la memoria flash più veloce sul mercato (da 5 a 60 Mbyte/sec). Comunque il mercato delle memorie flash sta passando a soluzioni NAND gestite come le memorie embedded e-MMC che hanno velocità di programmazione che va da 10 a 35 Mbyte/sec.
I dispositivi di memoria con elevate capacità di bandwidth usano due tecniche differenti per trasferire immagini con capacità di bandwidth elevata: i nuovi modelli ICT e le connessioni esterne. I recenti modelli ICT possono supportare elevate velocità di programmazione per dispositivi di memori ad alta densità. I connettori di bordo esterni possono usare o il processore sulla scheda o bypassare il processore e programmare direttamente la memoria flash. Entrambe queste tecniche di connessione esterna richiedono o una progettazione della PCB che fa passare i dati attraverso il processore o delle logiche sulla scheda che consenta l’isolamento del bus per programmare la memoria flash.
L’integrazione del testing a livello della scheda e la programmazione su scheda in un singolo processo di produzione forniscono numerosi vantaggi. L’abilità di mandare aggiornamenti d’immagine flash direttamente in linea di produzione accelera il time to market e riduce il rischio di avere immagini flash obsolete in produzione, e questo aiuta a migliorare la qualità. In aggiunta la riduzione del numero di unità pre-programmate e non programmate che hanno bisogno di essere rintracciate riduce la catena di fornitura.
ICT, il JTAG e le tecniche di connessione esterna consentono a un processore di eseguire il boot da una memoria di flash esterna e di far partire il test di funzionalità della PCB subito dopo la saldatura di riflusso. Dati i benefici della programmazione su scheda vale la pena per l’ingegnere di sistema e della produzione di rivalutare il processo di programmazione flash specialmente considerando che il futuro della collocazione dell’immagine dentro la memoria flash si sta evolvendo da fuori scheda a sulla scheda e le tecniche future, come la memoria a cambiamento di fase (phase change memory, PCM) richiederanno la programmazione su scheda.
Il metodo ottimale per programmare su scheda dipende da svariati fattori, inclusi l’infrastruttura esistente della produzione, le capacità del sistema, il tipo di programmazione richiesta come piccoli codice di boot e/o codici e dati a medio-alta densità. È importante considerare tutti questi fattori e lavorare strettamente con i produttori di dispositivi, i fornitori di programmi e OEM per scegliere la soluzione corretta.