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

12

Gibt es Systeme in Großserienfertigung, mit denen eine eindeutige Seriennummer in die Firmware oder ein freier Speicherplatz für jede durchgehende Leiterplatte programmiert werden kann?

Ich habe festgestellt, dass die FDA beschlossen hat, es für Medizinprodukte durchzusetzen. Ist dies jedoch einfach zu bewerkstelligen oder muss ein eigener Herstellungsprozess entwickelt werden?

Lukeyb
quelle
7
Was für ein System hast du? Bei vielen CPUs (und High-End-MCUs) ist bereits eine Art ID-Register mit einem eindeutigen Wert vorprogrammiert.
Dmitry Grigoryev
4
Überprüfen Sie zunächst, ob Ihre MCU noch keine eindeutige Kennung hat
Jeroen3

Antworten:

14

Die meisten Produktionsprogrammierer sind in der Lage, eine eindeutige Seriennummer in den programmierten Speicher einzufügen, ein Vorgang, der normalerweise als Serialisierung bezeichnet wird . Dies ist ein Ausschnitt des Serialisierungsbildschirms eines alten Dataman-Programmiergeräts.

Serialisierungsanzeige vom Dataman-Programmierer

Steve G
quelle
serializationDies ist eine Möglichkeit, erfordert jedoch äußerste Sorgfalt, insbesondere wenn der Wertebereich eine Wortgrenze überschreitet. Wenn Sie die Programmierung auslagern, wird es noch kniffliger. Hatte ein bekannter Anbieter dies nicht nur einmal, sondern zweimal hintereinander falsch verstanden, bevor er schließlich zugab, dass sein Programmierer für das betreffende Teil nicht über mehrere Bytes serialisieren konnte. Es endete damit, ihnen eine eindeutige Datei für jeden Wert des höherwertigen Bytes zu senden, für die sie jeweils einen eindeutigen 256-teiligen Programmierauftrag ausführten, der die niedrigere serialisierte. Für das nächste Design haben wir einen kundenspezifischen Programmierer gebaut.
Chris Stratton
14

Möglicherweise fragen Sie nach einer reinen Softwarelösung, aber wenn Sie in der Lage sind, Ihrem Board einen billigen IC hinzuzufügen, können Sie einen Chip mit der Silicon-Seriennummer verwenden.

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

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

TonyM
quelle
1
Das ist wahrscheinlich der beste Ansatz, den ich je gesehen habe.
Basic
"Nicht einzigartig unter allen SSN-Chips, die von jedem auf der Welt hergestellt werden, offensichtlich" Warum sollte dies "offensichtlich" sein? Andere Kennungen, die global eindeutig sein sollen, z. B. Ethernet-MAC-Adressen, verwenden die Präfixzuweisung. Der Anbieter verwendet das Präfix und wählt dann die verbleibenden Bits / Ziffern aus.
Ben Voigt
1
@BenVoigt MAC-Adressen sind nicht global eindeutig. Einfach regional einzigartig. Es ist möglich, nach Asien zu kommen und ein Gerät mit einer MAC-Adresse zu kaufen, das 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 zusammenzustoßen, das Sie haben.
Slebetman
Hi @BenVoigt, es gibt viele SSN-IC-Familien, viele Prozessoren / MCUs haben eindeutige IDs, sie sind nur für die IC-Familie eindeutig. Wie viele weltweit eindeutige IC-Nummerierungsschemata können Sie auflisten? (nicht Produktnummerierung wie IMEI)
TonyM
5

ja sicher, wie erwähnt sind mac adressen offensichtlich, normalerweise in einem flash / eeprom neben dem mac, wenn es sich um ein separates teil handelt, oder in einem flash / eeprom an einer anderen stelle. Wichtige Produktdaten (Seriennummer der Karte usw.) können in einem separaten EEPROM oder Flash oder auf demselben Gerät gespeichert werden, auf dem auch andere Firmware gespeichert ist.

In Situationen, in denen beispielsweise vor Ort 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. Sie müssen dies also entweder mit Schreibschutzfunktionen beheben des Flash-Geräts (Setzen der VPD in die Bank / den Bereich und Sperren dieses Bereichs) und nicht notwendigerweise Veröffentlichen / Dokumentieren des Freigebens des Schreibschutzstifts und / oder einer anderen Lösung, sodass Sie die VPD in mfg und programmieren können Lassen Sie es dann ansonsten verriegelt (ein Ziehen nach unten / oben nach Bedarf, dann wenn während / um ICT programmiert, kann dieses Gerät es in die andere Richtung ziehen).

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

Wenn ein Aufkleber auch auf der Platine verwendet wird, weist diese möglicherweise einen Barcode auf, sodass das Gerät oder der Bediener während der Herstellung den Barcode, die Baugruppendrehzahl usw. scannen und dem VPD für diese Platine hinzufügen kann.

Oldtimer
quelle
Wenn Sie vor Ort Upgrades geplant haben, möchten Sie zumindest wissen, welche Firmware-Version Sie haben, die einfach in die Firmware kompiliert wird. Bevor Sie jedoch vor Ort ein Upgrade durchführen, müssen Sie möglicherweise wissen, um welche 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.) Sie möchten also nicht nur die VPD schützen, sondern BRAUCHEN möglicherweise die VPD-Informationen als Teil des Designs, um diese Firmware-Aktualisierung zu ermöglichen.
old_timer
3

Es ist gut möglich und machbar, eindeutige Codes für jedes Produkt zu haben. Eine Möglichkeit wäre, ein Software-Programmiersystem zu haben, das die Firmware-Identifikationsnummer für jedes programmierte Gerät nacheinander ändert. Bei einigen Systemen ist dies einfach zu bewerkstelligen. Einige Mikrocontroller verfügen beispielsweise über einen reservierten EEPROM-Speicherort 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 für Dallas Semi (jetzt Maxim Integrated) ( DS2401 ). Dieses Gerät gibt Ihnen eine Seriennummer und Sie werden garantiert, dass es einzigartig sein wird. Diese Seriennummer kann verwendet werden, um eine eindeutige Adresse für ein bestimmtes Produkt abzuleiten.

Adam Z
quelle
2

Serienmäßig hergestellte Netzwerkkarten haben ihre Seriennummern in Form einer Hardware-Adresse (MAC-Adresse), die während der Herstellung in ihr Flash / EEPROM programmiert wird.

Während Seriennummern, die als Aufkleber auf dem Produktgehäuse angebracht sind, entfernt oder erneut angebracht werden können, bietet das Einbrennen der Seriennummer 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 zu verfolgen, welches Gerät genau für die medizinische Diagnose oder Operation verwendet wurde.

Anonym
quelle
2

... ist das einfach zu bewerkstelligen oder müsste ein eigener Herstellungsprozess entwickelt werden?

Vor ungefähr 10 Jahren befand ich mich mit einer Medizinproduktefirmware, die ich für einen meiner Kunden entwickelt hatte, in einer ähnlichen Situation. Dies war ein Gerät der Klasse 2, das die Messlatte höher legte. Die Produktionsmengen lagen bei Hunderten.

Wir konnten keinen Standardprogrammierer finden, der Seriennummern automatisch oder halbautomatisch schreiben konnte. Wir haben eine Problemumgehung durchgeführt. Wir hatten eine werkseitige Firmware, die zum Kalibrieren und Testen verwendet wurde. Diese werkseitige Firmware kommunizierte mit dem Rest der Testausrüstung über eine serielle Schnittstelle. Im Rahmen dieses Tests würden wir die Seriennummer herunterladen, die im EEPROM des Mikrocontrollers gespeichert war. (Die werkseitige Firmware wurde von der Feldfirmware überschrieben.)

Nick Alexeev
quelle
0

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

filo
quelle
0

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

  1. Verwenden Sie die eindeutige ID Ihres Mikrocontrollers, falls verfügbar.
  2. Wählen Sie eine eindeutige Adresse aus, indem Sie einige externe Jumper auf dedizierten E / A setzen.
  3. Programmieren Sie während der Produktion eine UID für Flash oder EEPROM. Die Firmware-Datei selbst kann durch Serialisierung geändert werden. Wenn Ihre Fertigungsstraße nicht über diese Funktion verfügt, Sie sie jedoch anpassen können, können Sie den Versatz der Firmware-Datei mit einem Hex-Editor leicht ermitteln und die Datei mithilfe Ihres bevorzugten Skripts / Ihrer bevorzugten Sprache ändern. Manchmal können Sie diese Adresse mit dem Linker-Skript "reparieren".
  4. Stellen Sie einen externen Chip bereit, der eine UID bereitstellt.
  5. Konfigurieren Sie das interne Flash / EEPROM (falls verfügbar) mit Ihrer Service-Schnittstelle oder Ihrem Bootloader. Dies kann sogar während des Testens geschehen (in einigen Fällen nicht genau in der "Produktionslinie"). Einige Geräte verfügen über diese Serviceschnittstelle, über die nur der Hersteller von autorisierten Technikern bestimmte Werte ändern kann. Da dieser Wert nicht geändert werden darf, 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.
Ronan Paixão
quelle
0

Wenn Sie Zugriff auf ein gutes Hardware-RNG und 16 Byte zusätzlichen permanenten Speicher haben, müssen Sie beim ersten Start eine v4-GUID generieren und speichern. Sie können die Firmware während der von Ihnen ausgeführten Nachprogrammierungstests auf seriell sichern. Es ist nicht sequentiell, aber das spielt für die meisten Anwendungen keine Rolle.

Reid Rankin
quelle
0

Wenn die Verwendung eines RFID- oder Smart-Tags auf jeder Leiterplatte den Anforderungen entspricht, ist dies die einfachste Methode zur Implementierung - unter Ihrer Kontrolle.

Guill
quelle