È pratico che il firmware sia identificato in modo univoco nella produzione


12

Esistono sistemi disponibili nella produzione su larga scala che consentono di programmare un numero seriale univoco nel firmware o dello spazio di memoria libero per ogni PCB che passa?

Ho scoperto che la FDA ha deciso di iniziare ad applicarlo per i dispositivi di livello medico, ma è qualcosa che è facile da realizzare o richiederebbe lo sviluppo del proprio processo di produzione?


7
Che tipo di sistema hai? Molte CPU (e MCU di fascia alta) hanno già una sorta di registro ID preprogrammato con un valore univoco.
Dmitry Grigoryev il

4
Per prima cosa controlla che il tuo MCU non abbia già un identificatore univoco
Jeroen3

Risposte:


14

La maggior parte dei programmatori di produzione è in grado di inserire un numero seriale univoco nella memoria programmata, un processo normalmente chiamato serializzazione . Questa è una presa della schermata di serializzazione da un vecchio programmatore Dataman.

visualizzazione della serializzazione dal programmatore Dataman


serializationè una possibilità ma richiede estrema cura soprattutto se l'intervallo di valori supera un limite di parole. Se esternalizzare la programmazione diventa ancora più complicato - se un noto fornitore ha sbagliato non una, ma due volte di seguito, prima di ammettere finalmente che il loro programmatore per la parte in questione non poteva serializzare su più byte. Finì per inviare loro un file univoco per ogni valore del byte più significativo, per ognuno dei quali eseguivano un unico lavoro di programmazione a 256 pezzi serializzando il valore inferiore. Per il prossimo progetto abbiamo realizzato un programmatore personalizzato.
Chris Stratton,

14

Potresti chiedere una soluzione solo software ma se sei in grado di aggiungere un circuito integrato economico alla tua scheda, puoi utilizzare un chip "Silicon Serial Number".

Questi sono piccoli chip ROM che ogni dispositivo contiene un numero binario univoco. Esempi sono il DS2401 (bus a 1 filo) di Maxim e il DS28CM00 (I2C) che hanno un numero univoco a 48 bit.

Il numero è unico tra tutti i circuiti integrati realizzati da quel numero di parte da quel produttore. Ovviamente non è unico tra tutti i chip SSN prodotti da tutti nel mondo. Ma rendono molto facile scegliere un dispositivo per la tua scheda e sanno che ogni scheda mai realizzata leggerà un numero diverso e univoco da essa.


1
Questo è probabilmente il miglior approccio di blocco del venditore che abbia mai visto.
Base

"non unico tra tutti i chip SSN realizzati da tutti nel mondo, ovviamente" Perché dovrebbe essere "ovvio"? Altri identificatori intesi come univoci a livello globale, ad es. Indirizzi MAC Ethernet, lo realizzano utilizzando l'allocazione dei prefissi: il fornitore utilizza il proprio prefisso e quindi sceglie i bit / le cifre rimanenti.
Ben Voigt,

1
Gli indirizzi MAC di @BenVoigt non sono univoci a livello globale. Solo a livello regionale unico. È possibile venire in Asia e acquistare un dispositivo con un indirizzo MAC che si scontrerà con un dispositivo in Europa. Diamine, su molti dispositivi puoi persino cambiare il tuo indirizzo MAC per scontrarsi deliberatamente con un dispositivo che hai.
Slebetman,

Ciao @BenVoigt, esistono molte famiglie IC SSN, molti processori / MCU hanno ID univoci, sono unici solo per la famiglia IC. Quanti schemi di numerazione IC unici al mondo puoi elencare? (non numerazione dei prodotti come l'IMEI)
TonyM,

5

sì, certamente, come menzionato, gli indirizzi mac sono ovvi, di solito in un flash / eeprom vicino al mac se è una parte separata, o in un flash / eeprom altrove. i dati vitali del prodotto (numero di serie della scheda, ecc.) possono essere inseriti in una eeprom separata o in un flash o nello stesso dispositivo utilizzato per memorizzare altri firmware.

Quando ad esempio si verifica una situazione in cui sono possibili aggiornamenti sul campo del firmware, parte della progettazione del sistema, non si desidera cancellare i dati VPD quando il flash del firmware viene cancellato e riprogrammato, quindi è necessario risolverlo utilizzando le funzionalità di protezione dalla scrittura del dispositivo flash (posizionando il VPD sulla sua banca / area e bloccando quell'area), e non necessariamente pubblicando / documentando pubblicamente come rilasciare il pin di protezione dalla scrittura e / o qualche altra soluzione in modo da poter programmare il VPD in mfg e quindi tenerlo bloccato altrimenti (un pull down / su come richiesto, quindi quando programmato durante / intorno alle ICT quell'apparecchio può tirarlo in altro modo).

Probabilmente è più comune di quanto pensi, la medicina è solo un sottogruppo di persone molto piccolo che lo farebbe. Forse non un telecomando del televisore ma probabilmente un mouse o una tastiera e certamente un telefono cellulare, ecc.

Se / quando viene utilizzato anche un adesivo sulla scheda, è possibile che abbia un codice a barre, in modo che durante la produzione l'apparecchiatura o l'operatore possano scansionare il codice a barre, il numero di giri, ecc. E aggiungerlo al VPD per quella scheda.


se hai progettato per gli aggiornamenti sul campo, almeno vuoi sapere quale versione del firmware hai che è semplicemente compilata nel firmware, ma prima di fare l'aggiornamento sul campo potresti dover sapere quale piattaforma / scheda specifica è (per verificare / utilizzare il firmware e / o le sfumature giuste della programmazione sul campo, ecc.), quindi non solo si desidera proteggere il VPD, ma si può BISOGNO delle informazioni VPD come parte del progetto per consentire l'aggiornamento del firmware.
old_timer

3

Avere codici univoci per ogni prodotto è ben possibile e fattibile. Un modo per farlo sarebbe quello di avere un sistema di programmazione software che cambi in sequenza il numero di identificazione del firmware per ogni dispositivo programmato. Con alcuni sistemi questo è facile da fare; alcuni microcontrollori, ad esempio, hanno una posizione eeprom riservata per la memorizzazione di un ID.

Un'altra alternativa sarebbe quella di aggiungere un ID hardware univoco. Un esempio di ciò è un circuito integrato con numero di serie al silicio di Dallas Semi (ora Maxim Integrated) ( DS2401 ). Questo dispositivo ti fornisce un numero di serie e ti garantisce che sarà univoco. Questo numero di serie può essere utilizzato per inferire un indirizzo univoco per un prodotto specifico.


2

Le schede di rete prodotte in serie hanno i loro numeri di serie sotto forma di indirizzo hardware (MAC) programmati nella loro memoria flash / EEPROM durante la produzione.

Mentre i numeri di serie applicati sull'involucro del prodotto come adesivo possono essere rimossi o riapplicati, il numero di serie bruciato nella scheda specifica solleva un altro modo per monitorare l'utilizzo della scheda; molto probabilmente questo numero di serie verrà anche stampato sulla documentazione medica per tracciare quale dispositivo esattamente è stato utilizzato per la diagnosi o l'operazione medica.


2

... è qualcosa che è facile da realizzare o richiederebbe lo sviluppo del proprio processo di produzione?

Circa 10 anni fa, mi trovavo in una situazione simile con un firmware per dispositivi medici che ho sviluppato per uno dei miei clienti. Questo era un dispositivo di classe 2, che ha alzato il tiro. Le quantità di produzione erano in centinaia.

Non siamo riusciti a trovare un programmatore standard che possa scrivere numeri di serie automaticamente o semi-automaticamente. Abbiamo fatto una soluzione alternativa. Avevamo un firmware di fabbrica che veniva utilizzato per la calibrazione e i test. Questo firmware di fabbrica comunicava con il resto dell'attrezzatura di prova tramite una porta seriale. Come parte di questo test, avremmo scaricato il numero seriale, che era memorizzato nella EEPROM del microcontrollore. (Il firmware di fabbrica è stato sovrascritto dal firmware di campo.)


0

I programmatori di produzione SEGGER supportano il flashing di numeri di serie univoci nelle MCU.


0

Se hai molte opzioni per questo (alcune prese da questa risposta ):

  1. Utilizzare l'ID univoco del microcontrollore, se disponibile.
  2. Selezionare un indirizzo univoco impostando alcuni jumper esterni su I / O dedicati.
  3. Programmare un UID per il flash o EEPROM durante la produzione. Il file del firmware stesso può essere modificato tramite serializzazione. Se la tua catena di montaggio non ha questa funzione ma puoi personalizzarla, è facile da trovare individuando l'offset del file del firmware con un editor esadecimale e usando il tuo script / linguaggio preferito per modificare il file. A volte puoi "correggere" questo indirizzo con lo script del linker.
  4. Inferface un chip esterno che fornisce un UID.
  5. Configurare il flash / eeprom interno (se disponibile) con l'interfaccia di servizio o il bootloader. Questo può essere fatto anche durante i test (in alcuni casi non esattamente nella "linea di produzione"). Alcuni dispositivi hanno questa interfaccia di servizio in cui solo il produttore di tecnici autorizzati può modificare alcuni valori. Poiché questo valore dovrebbe essere non modificabile, assicurarsi che il codice contrassegni i valori modificati e vietare ulteriori modifiche. Se hai un bootloader, assicurati che questa sezione non venga sovrascritta negli aggiornamenti sul campo.

0

Se hai accesso a un buon RNG hardware e 16 byte di spazio di archiviazione persistente, un modo che non comporta un cambiamento eccessivo del processo di produzione è generare un GUID v4 al primo avvio e archiviarlo. Il firmware può essere scaricato su seriale durante qualsiasi test di post-programmazione eseguito. Non è sequenziale, ma non importa per la maggior parte delle applicazioni.


0

Se l'uso di un RFID o Smart Tag su ogni PCB soddisfa i requisiti, sarà il metodo di implementazione più semplice, sotto il tuo controllo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.