Ist es sinnvoll, dass Firmware in der Produktion eindeutig identifiziert wird?

Gibt es in der Großserienfertigung Systeme, die es ermöglichen, eine eindeutige Seriennummer in die Firmware zu programmieren, oder einen freien Speicherplatz für jede durchkommende Leiterplatte?

Ich habe festgestellt, dass die FDA beschlossen hat, mit der Durchsetzung für medizinische Geräte zu beginnen, aber ist dies leicht zu bewerkstelligen, oder würde es die Entwicklung eines eigenen Herstellungsprozesses erfordern?

Was für ein System hast du? Viele CPUs (und High-End-MCUs) haben bereits eine Art ID-Register, das mit einem eindeutigen Wert vorprogrammiert ist.
Überprüfen Sie zunächst, ob Ihre MCU nicht bereits über eine eindeutige Kennung verfügt

Antworten (10)

Die meisten Produktionsprogrammierer sind in der Lage, eine eindeutige Seriennummer in den programmierten Speicher einzufügen, ein Prozess, der normalerweise Serialisierung genannt wird . Dies ist ein Schnappschuss des Serialisierungsbildschirms eines alten Dataman-Programmierers.

Serialisierungsanzeige vom Dataman-Programmierer

serializationist eine Möglichkeit, erfordert jedoch äußerste Sorgfalt, insbesondere wenn der Wertebereich eine Wortgrenze überschreitet. Wenn Sie die Programmierung auslagern, wird es noch kniffliger - wenn ein bekannter Anbieter dies nicht nur einmal, sondern zweimal hintereinander falsch gemacht hat, bevor er schließlich zugab, dass sein Programmierer für das betreffende Teil nicht über mehrere Bytes serialisieren konnte. Am Ende schickten sie ihnen eine eindeutige Datei für jeden Wert des höherwertigen Bytes, für die sie jeweils einen eindeutigen 256-teiligen Programmierjob ausführten, der das niedrigere serialisierte. Für das nächste Design haben wir einen benutzerdefinierten Programmierer gebaut.

Sie fragen vielleicht nach einer reinen Softwarelösung, aber wenn Sie in der Lage sind, Ihrem Board einen billigen IC hinzuzufügen, können Sie einen „Silicon Serial Number“-Chip verwenden.

Dies sind winzige ROM-Chips, die jedes Gerät eine eindeutige Binärzahl enthält. Beispiele sind DS2401 (1-Draht-Bus) und DS28CM00 (I2C) von Maxim, die eine eindeutige 48-Bit-Nummer haben.

Die Nummer ist einzigartig unter allen ICs, die von diesem Hersteller mit dieser Teilenummer hergestellt werden. Es ist offensichtlich nicht einzigartig unter all den SSN-Chips, die von allen auf der Welt hergestellt werden. Aber sie machen es sehr einfach, ein Gerät für Ihr Board auszuwählen und zu wissen, dass jedes Board, das jemals hergestellt wurde, eine andere und eindeutige Nummer davon lesen wird.

Das ist wahrscheinlich der beste Anbieter-Lock-in-Ansatz, den ich je gesehen habe.
"nicht einzigartig unter allen SSN-Chips, die von allen auf der Welt hergestellt werden, offensichtlich" Warum sollte dies "offensichtlich" sein? Andere Identifikatoren, die global eindeutig sein sollen, z. B. Ethernet-MAC-Adressen, erreichen dies durch Präfixzuordnung – der Anbieter verwendet sein Präfix und wählt dann die verbleibenden Bits/Ziffern aus.
@BenVoigt MAC-Adressen sind nicht global eindeutig. Nur regional einzigartig. Es ist möglich, nach Asien zu kommen und ein Gerät mit einer MAC-Adresse zu kaufen, die mit einem Gerät in Europa kollidiert. Heck, auf vielen Geräten können Sie sogar Ihre MAC-Adresse ändern, um absichtlich mit einem Gerät zu kollidieren, das Sie haben.
Hallo @BenVoigt, es gibt viele SSN-IC-Familien, viele Prozessoren/MCUs haben eindeutige IDs, sie sind nur für die IC-Familie einzigartig. Wie viele weltweit eindeutige IC-Nummerierungsschemata können Sie auflisten? (keine Produktnummerierung wie IMEI)

Ja, sicher, wie erwähnt sind Mac-Adressen offensichtlich, normalerweise in einem Flash/EEPROM neben dem Mac, wenn es sich um einen separaten Teil handelt, oder in einem Flash/EEPROM an anderer Stelle. Wichtige Produktdaten (Seriennummer der Platine usw.) können in einem separaten EEPROM oder Flash oder in demselben Gerät gespeichert werden, das zum Speichern anderer Firmware verwendet wird.

Wenn Sie beispielsweise eine Situation haben, in der Feld-Upgrades der Firmware möglich sind, die Teil des Systemdesigns sind, möchten Sie nicht, dass die VPD-Daten gelöscht werden, wenn der Firmware-Flash gelöscht und neu programmiert wird, also müssen Sie dies lösen, indem Sie entweder Schreibschutzfunktionen verwenden des Flash-Geräts (das VPD in seine On-Bank/Bereich legen und diesen Bereich sperren) und nicht unbedingt öffentlich veröffentlichen/dokumentieren, wie man den Schreibschutz-Pin und/oder eine andere Lösung freigibt, so dass man das VPD in mfg und programmieren kann dann halten Sie es andernfalls gesperrt (ein Herunter-/Heraufziehen nach Bedarf, dann, wenn es während/um ICT herum programmiert ist, kann dieses Gerät es in die andere Richtung ziehen).

Es ist wahrscheinlich häufiger als Sie denken, Mediziner sind nur eine sehr sehr kleine Untergruppe von Leuten, die dies tun würden. Vielleicht keine Fernsehfernbedienung, aber wahrscheinlich eine Maus oder Tastatur und sicherlich ein Handy usw.

Wenn/wenn ein Aufkleber auch auf der Platine verwendet wird, kann es sein, dass er einen Barcode hat, sodass die Vorrichtung oder der Bediener während der Herstellung den Barcode, die Montagedrehzahl usw. scannen und dem VPD für diese Platine hinzufügen kann.

Wenn Sie für Feld-Upgrades entworfen haben, möchten Sie zumindest wissen, welche Firmware-Version Sie haben, die einfach in die Firmware kompiliert wird, aber bevor Sie das Feld-Upgrade durchführen, müssen Sie möglicherweise wissen, um welche spezifische Plattform / Platine es sich handelt (um zu überprüfen, ob dies der Fall ist /Verwenden Sie die richtige Firmware und/oder Nuancen der Feldprogrammierung usw.), sodass Sie nicht nur die VPD schützen möchten, sondern möglicherweise auch die VPD-Informationen als Teil des Designs benötigen, um dieses Firmware-Upgrade zu ermöglichen.

Eindeutige Codes für jedes Produkt zu haben, ist gut möglich und machbar. Eine Möglichkeit, dies zu tun, wäre ein Software-Programmiersystem, das die Firmware-Identifikationsnummer für jedes programmierte Gerät sequentiell ändert. Bei manchen Systemen ist dies einfach; Einige Mikrocontroller haben beispielsweise einen reservierten EEPROM-Speicherort speziell zum Speichern einer ID.

Eine andere Alternative wäre das Hinzufügen einer eindeutigen Hardware-ID. Ein Beispiel hierfür ist eine integrierte Silizium-Seriennummer-Schaltung von Dallas Semi (jetzt Maxim Integrated) ( DS2401 ). Dieses Gerät gibt Ihnen eine Seriennummer und Sie haben die Garantie, dass es einzigartig ist. Aus dieser Seriennummer kann auf eine eindeutige Adresse für ein bestimmtes Produkt geschlossen werden.

Massenproduzierte Netzwerkkarten haben ihre Seriennummern in Form von Hardware (MAC)-Adressen, die während der Herstellung in ihren Flash/EEPROM programmiert werden.

Während Seriennummern, die als Aufkleber auf dem Produktgehäuse angebracht sind, entfernt oder erneut angebracht werden können, bietet das Einbrennen von Seriennummern in die spezifische Platine eine weitere Möglichkeit, die Verwendung der Platine zu verfolgen; Höchstwahrscheinlich wird diese Seriennummer auch auf die medizinische Dokumentation gedruckt, um nachzuvollziehen, welches Gerät genau für die medizinische Diagnose oder Operation verwendet wurde.

...ist dies einfach zu bewerkstelligen oder müsste dafür ein eigener Fertigungsprozess entwickelt werden?

Vor etwa 10 Jahren war ich in einer ähnlichen Situation mit einer Medizingeräte-Firmware, die ich für einen meiner Kunden entwickelt habe. Dies war ein Gerät der Klasse 2, das die Messlatte höher gelegt hat. Die Produktionsmengen gingen in die Hunderte.

Wir konnten keinen handelsüblichen Programmierer finden, der Seriennummern automatisch oder halbautomatisch schreiben könnte. Wir haben eine Problemumgehung durchgeführt. Wir hatten eine Werksfirmware, die zum Kalibrieren und Testen verwendet wurde. Diese Werksfirmware kommunizierte mit dem Rest der Testausrüstung über eine serielle Schnittstelle. Als Teil dieses Tests würden wir die Seriennummer herunterladen, die im EEPROM des Mikrocontrollers gespeichert war. (Die Werks-Firmware wurde durch die Feld-Firmware überschrieben.)

SEGGER Produktionsprogrammierer unterstützen das Flashen eindeutiger Seriennummern in MCUs.

Wenn Sie viele Optionen dafür haben (einige aus dieser Antwort entnommen ):

  1. Verwenden Sie die eindeutige ID Ihres Mikrocontrollers, falls verfügbar.
  2. Wählen Sie eine eindeutige Adresse, indem Sie einige externe Jumper auf dedizierte I/Os setzen.
  3. Programmieren Sie während der Produktion eine UID auf Flash oder EEPROM. Die Firmware-Datei selbst kann durch Serialisierung geändert werden. Wenn Ihre Montagelinie diese Funktion nicht hat, Sie sie aber anpassen können, ist dies einfach, indem Sie den Offset der Firmware-Datei mit einem Hex-Editor finden und Ihr bevorzugtes Skript / Ihre bevorzugte Sprache verwenden, um die Datei zu ändern. Manchmal können Sie diese Adresse mit dem Linker-Skript "reparieren".
  4. Verbinden Sie einen externen Chip, der eine UID bereitstellt.
  5. Konfigurieren Sie das interne Flash/EEPROM (falls vorhanden) mit Ihrem Service-Interface oder Bootloader. Dies kann sogar während des Testens erfolgen (in einigen Fällen nicht gerade in der "Produktionslinie"). Einige Geräte haben diese Serviceschnittstelle, an der nur der Hersteller oder autorisierte Techniker einige Werte ändern können. Da dieser Wert unveränderbar sein sollte, stellen Sie sicher, dass der Code geänderte Werte kennzeichnet und weitere Änderungen verbietet. Wenn Sie einen Bootloader haben, stellen Sie sicher, dass dieser Abschnitt bei Feld-Upgrades nicht überschrieben wird.

Wenn Sie Zugriff auf einen guten Hardware-RNG und 16 Bytes zusätzlichen persistenten Speicher haben, besteht eine Möglichkeit, die Ihren Produktionsprozess nicht zu sehr ändert, darin, beim ersten Start eine v4-GUID zu generieren und zu speichern. Sie können die Firmware während der von Ihnen durchgeführten Nachprogrammierungstests auf seriell ausgeben lassen. Es ist nicht sequentiell, aber das spielt für die meisten Anwendungen keine Rolle.

Wenn die Verwendung eines RFID- oder Smart-Tags auf jeder Leiterplatte die Anforderung erfüllt, ist dies die einfachste Methode der Implementierung - unter Ihrer Kontrolle.