Est-il pratique que le firmware soit identifié de manière unique en production

12

Existe-t-il des systèmes disponibles dans la fabrication à grande échelle qui permettent de programmer un numéro de série unique dans le micrologiciel ou un espace mémoire libre pour chaque PCB qui passe?

J'ai trouvé que la FDA a décidé de commencer à l'appliquer aux appareils de qualité médicale, mais est-ce quelque chose de facile à accomplir ou nécessiterait-il de développer votre propre processus de fabrication?

Lukeyb
la source
7
De quel type de système disposez-vous? De nombreux CPU (et MCU haut de gamme) ont déjà une sorte de registre ID préprogrammé avec une valeur unique.
Dmitry Grigoryev
4
Vérifiez d'abord que votre MCU n'a pas déjà un identifiant unique
Jeroen3

Réponses:

14

La plupart des programmeurs de production sont capables d'insérer un numéro de série unique dans la mémoire programmée, c'est un processus normalement appelé sérialisation . Ceci est une capture de l'écran de sérialisation d'un ancien programmeur Dataman.

affichage de sérialisation du programmeur Dataman

Steve G
la source
serializationest une possibilité mais nécessite un soin extrême, surtout si la plage de valeurs traverse une limite de mot. Si vous externalisez la programmation, cela devient encore plus délicat - un fournisseur bien connu avait mal fait cela une fois mais deux fois de suite, avant d'admettre finalement que leur programmeur pour la partie en question ne pouvait pas sérialiser sur plusieurs octets. Ils ont fini par leur envoyer un fichier unique pour chaque valeur de l'octet le plus significatif, pour chacun desquels ils ont exécuté un travail de programmation unique de 256 pièces sérialisant le plus bas. Pour la prochaine conception, nous avons construit un programmeur personnalisé.
Chris Stratton
14

Vous demandez peut-être une solution logicielle uniquement, mais si vous êtes en mesure d'ajouter un circuit intégré bon marché à votre carte, vous pouvez utiliser une puce «Silicon Serial Number».

Ce sont de minuscules puces ROM dont chaque périphérique contient un numéro binaire unique. Les exemples sont le DS2401 de Maxim (bus 1 fil) et le DS28CM00 (I2C) qui ont un numéro unique de 48 bits.

Le numéro est unique parmi tous les circuits intégrés fabriqués à partir de ce numéro de pièce par ce fabricant. Ce n'est pas unique parmi toutes les puces SSN fabriquées par tout le monde dans le monde, évidemment. Mais ils facilitent le choix d'un appareil pour votre carte et savent que chaque carte jamais fabriquée en lira un numéro différent et unique.

TonyM
la source
1
C'est probablement la meilleure approche de verrouillage des fournisseurs que j'ai jamais vue.
Basic
"pas unique parmi toutes les puces SSN fabriquées par tout le monde dans le monde, évidemment" Pourquoi cela devrait-il être "évident"? D'autres identifiants destinés à être uniques au monde, par exemple les adresses MAC Ethernet, l'accomplissent en utilisant l'allocation de préfixe - le fournisseur utilise leur préfixe puis choisit les bits / chiffres restants.
Ben Voigt
1
Les adresses MAC @BenVoigt ne sont pas uniques au monde. Juste régionalement unique. Il est possible de venir en Asie et d'acheter un appareil avec une adresse MAC qui se heurtera à un appareil en Europe. Heck, sur de nombreux appareils, vous pouvez même changer votre adresse MAC pour heurter délibérément un appareil que vous avez.
slebetman
Salut @BenVoigt, de nombreuses familles de circuits intégrés SSN existent, de nombreux processeurs / MCU ont des ID uniques, ils ne sont uniques qu'à la famille de circuits intégrés. Combien de schémas de numérotation IC uniques au monde pouvez-vous répertorier? (pas la numérotation des produits comme IMEI)
TonyM
5

oui, certainement, comme mentionné, les adresses mac sont évidentes, généralement dans un flash / eeprom à côté du mac s'il s'agit d'une partie séparée, ou dans un flash / eeprom ailleurs. les données vitales du produit (numéro de série de la carte, etc.) peuvent être placées dans un eeprom ou un flash séparé ou dans le même appareil utilisé pour stocker un autre firmware.

Lorsque vous avez une situation, par exemple, où des mises à niveau sur le terrain du micrologiciel sont possibles, une partie de la conception du système, vous ne voulez pas que les données VPD soient effacées lorsque le flash du micrologiciel est effacé et reprogrammé, vous devez donc résoudre cela en utilisant soit des fonctionnalités de protection en écriture du périphérique flash (mettre le VPD dans sa banque / zone et verrouiller cette zone), et pas nécessairement publier / documenter publiquement comment libérer la broche de protection en écriture et / ou une autre solution de sorte que vous pouvez programmer le VPD dans mfg et puis maintenez-le verrouillé autrement (un tirage vers le bas / haut selon les besoins, puis lorsqu'il est programmé pendant / autour des TIC, ce luminaire peut le tirer dans l'autre sens).

C'est probablement plus courant que vous ne le pensez, le médical n'est qu'un très petit sous-ensemble de gens qui feraient cela. Peut-être pas une télécommande de télévision mais probablement une souris ou un clavier et certainement un téléphone portable, etc.

Si / quand un autocollant est également utilisé sur la carte, vous pouvez trouver qu'il a un code-barres, de sorte que lors de la fabrication, le luminaire ou l'opérateur peut scanner le code-barres, l'assemblage rev, etc. et l'ajouter au VPD pour cette carte.

old_timer
la source
si vous avez conçu des mises à niveau sur le terrain, vous voulez au moins savoir quelle version de micrologiciel vous avez, qui est simplement compilée dans le micrologiciel, mais avant de faire la mise à niveau sur le terrain, vous devrez peut-être savoir de quelle plate-forme / carte spécifique il s'agit (pour vérifier / utilisez le bon firmware et / ou les nuances de la programmation sur le terrain, etc.) donc non seulement vous voulez protéger le VPD, vous pouvez BESOIN des informations VPD dans le cadre de la conception pour permettre cette mise à niveau du firmware.
old_timer
3

Avoir des codes uniques pour chaque produit est bien possible et réalisable. Une façon de le faire serait d'avoir un système de programmation logiciel qui modifie séquentiellement le numéro d'identification du micrologiciel pour chaque appareil programmé. Avec certains systèmes, cela est facile à faire; certains microcontrôleurs, par exemple, ont un emplacement eeprom réservé spécifiquement pour stocker une ID.

Une autre alternative serait d'ajouter un ID matériel unique. Un exemple de ceci est un circuit intégré de numéro de série en silicium Dallas (maintenant Maxim Integrated) de Dallas ( DS2401 ). Cet appareil vous donne un numéro de série et vous êtes assuré qu'il sera unique. Ce numéro de série peut être utilisé pour déduire une adresse unique pour un produit spécifique.

Adam Z
la source
2

Les cartes réseau produites en masse voient leur numéro de série sous forme d'adresse matérielle (MAC) programmé dans leur mémoire flash / EEPROM pendant la fabrication.

Bien que les numéros de série appliqués sur le boîtier du produit comme autocollant puissent être retirés ou réappliqués, le fait de graver le numéro de série sur la carte spécifique soulève une autre façon de suivre l'utilisation de la carte; très probablement, ce numéro de série sera également imprimé sur la documentation médicale pour suivre exactement quel appareil a été utilisé pour le diagnostic ou l'opération médicale.

Anonyme
la source
2

... est-ce quelque chose de facile à réaliser ou nécessiterait-il de développer votre propre processus de fabrication?

Il y a environ 10 ans, j'étais dans une situation similaire avec un firmware de dispositif médical que j'ai développé pour l'un de mes clients. Il s'agissait d'un appareil de classe 2, ce qui a relevé la barre. Les quantités produites étaient de centaines.

Nous n'avons pas pu trouver un programmateur standard qui pourrait écrire des numéros de série automatiquement ou semi-automatiquement. Nous avons fait une solution de contournement. Nous avions un firmware d'usine qui était utilisé pour l'étalonnage et les tests. Ce firmware d'usine communiquait avec le reste de l'équipement de test via un port série. Dans le cadre de ces tests, nous téléchargions le numéro de série, qui était stocké dans l'EEPROM du microcontrôleur. (Le firmware d'usine a été remplacé par le firmware de terrain.)

Nick Alexeev
la source
0

Les programmeurs de production SEGGER prennent en charge le flashage de numéros de série uniques dans les MCU.

filo
la source
0

Si vous avez de nombreuses options pour cela (certaines tirées de cette réponse ):

  1. Utilisez l'ID unique de votre microcontrôleur s'il est disponible.
  2. Sélectionnez une adresse unique en configurant certains cavaliers externes sur des E / S dédiées.
  3. Programmez un UID pour flasher ou EEPROM pendant la production. Le fichier du firmware lui-même peut être modifié via la sérialisation. Si votre chaîne de montage ne dispose pas de cette fonctionnalité mais que vous pouvez la personnaliser, il est facile de le faire en localisant le décalage du fichier du firmware avec un éditeur hexadécimal et en utilisant votre script / langage préféré pour modifier le fichier. Parfois, vous pouvez "corriger" cette adresse avec le script de l'éditeur de liens.
  4. Interfacez une puce externe qui fournit un UID.
  5. Configurez le flash / eeprom interne (si disponible) avec votre interface de service ou votre chargeur de démarrage. Cela peut même être fait pendant les tests (pas exactement dans la "ligne de production" dans certains cas). Certains appareils ont cette interface de service où seul le fabricant de techniciens autorisés peut modifier certaines valeurs. Étant donné que cette valeur ne doit pas être modifiable, assurez-vous que le code marque les valeurs modifiées et interdit toute modification supplémentaire. Si vous avez un chargeur de démarrage, assurez-vous que cette section n'est pas remplacée dans les mises à niveau sur le terrain.
Ronan Paixão
la source
0

Si vous avez accès à un bon RNG matériel et à 16 octets de stockage supplémentaire persistant, une façon qui n'implique pas de trop changer votre processus de production est de générer un GUID v4 au premier démarrage et de le stocker. Vous pouvez demander au micrologiciel de le vider en série pendant les tests de post-programmation que vous exécutez. Ce n'est pas séquentiel, mais cela n'a pas d'importance pour la plupart des applications.

Reid Rankin
la source
0

Si l'utilisation d'une RFID ou d'une étiquette intelligente sur chaque PCB répond aux exigences, ce sera la méthode de mise en œuvre la plus simple - sous votre contrôle.

Guill
la source