Forum: Mikrocontroller und Digitale Elektronik Unique Device ID / Chip ID für MSP430 MCUs generieren


von Sören K. (burnersk)


Lesenswert?

Für ein Projekt von mir benötige ich eine eindeutige, nicht änderbare 
und vom Hersteller vorgegebene Identifikation der MCU.

Als MCU setzte ich den Texas Instruments MSP430FR5994 ein.

Eine schnelle Recherche brachte aber die Info, dass die MSP430-Serie 
keine Device ID bereitstellt.

Bei der Recherche bin ich allerdings auch auf das offizielle MSP430 FAQ 
Dokument von TI gestoßen:
http://processors.wiki.ti.com/index.php/MSP430_FAQ

Dort ist unter der Frage "Is there any thing like Device ID on MSP430 
devices?" aufgezeigt, das man etwas ähnliches wie eine "unique Device 
ID" über den "Die Record" erstellen kann.

Im Datenblatt zum MSP430FR5994 gibt es die Tabellen 6-39 (Device IDs) 
und 6-40 (Device Descriptor Table).

Allein vom Namen der Tabelle 6-39, also "Device IDs", könnte man davon 
ausgehen, dass der MSP430 eine Device ID hat. Jedoch ist es eher eine 
"Device Class ID". Trotzdem auch nützlich als Teil einer "unique Device 
ID" Generierung.

Mit der Tabelle 6-40 ("Device Descriptor Table") wird es dann 
interessant.

Meine Idee ist jetzt, die Informationen (Zahlenwerte) wie folgt zu 
verketten (nicht zu addieren) um eine numerische "unique Device ID", 
welche ich dann ähnlich einer MAC-Adresse bei Computern präsentiere.

* Eigener fester Wert für TI-Prozessoren: 0x01
* Info Block - Device ID
* Info Block - Hardware Revision
* Die Record - Lot/Wafer ID
* Die Record - Die X Position
* Die Record - Die Y Position
* Die Record - Test Results

Bei meinem MSP430FR5994 könnte eine derartig generierte "unique Device 
ID" dann wie folgt aussehen: 0x0182A10011111111222233334444

Was mit aufgefallen ist: "Lot/Wafer ID" ist eine 16-Bit Zahl und die 
Waferanzahl für die MSP430FR5994 Produktion wird vermutlich 65535 
übersteigen.

Fällt jemanden ein, wie man die Kollisionsmenge (z.B. beim Lot/Wafer ID 
Zähler Überlauf) noch weiter verringern kann?
Ich würde "ungern" die bei der Herstellung fest vergebene 128-Bit 
Zufallszahl verwenden, da diese u.a. für den PRNG/Verschlüsselung 
verwendet wird.

von Sowieso (Gast)


Lesenswert?

Wie wäre es mit einer von dir generierten Zufallszahl, beispielsweise 
von einem GUID Generator. Die Software dafür findet man im Netz.

von Sören K. (burnersk)


Lesenswert?

Sowieso schrieb:
> Wie wäre es mit einer von dir generierten Zufallszahl

Stimmt, ich könnte den DRNG mit nur der festen 128-Bit Zufallszahl 
initialisieren und der/die erste/n "Zufallswert/e" wäre/n dann die 
Ergänzung zur "unique Device ID".

Auch bei einem Factory-Reset wären die Zufallswerte bei einem fixen Seed 
ja immer gleich (weil DRNG).

Direkt im Anschluss darf ich aber nicht vergessen, aus dem DRNG wieder 
ein "PRNG" zu machen :D Sprich einen neuen "zufälligen" Seed über NICHT 
NUR die feste 128-bit Zufallszahl zu machen.

von macload1 (Gast)


Lesenswert?

Also, 65536 Wafer eines selben Chips, das ist schon mal ne ganze Menge!
Beachte, dass auf einem selben Wafer zwischen 1000 und 10000 von diesen 
Chips sein können (je nach Größe des Chips und Größe des Wafers. 
Vielleicht sind es sogar noch mehr...).

Bist du dir sicher, dass die Zahl überläuft?

von Sören K. (burnersk)


Lesenswert?

macload1 schrieb:
> Also, 65536 Wafer eines selben Chips, das ist schon mal ne ganze Menge!
> Beachte, dass auf einem selben Wafer zwischen 1000 und 10000 von diesen
> Chips sein können (je nach Größe des Chips und Größe des Wafers.
> Vielleicht sind es sogar noch mehr...).
>
> Bist du dir sicher, dass die Zahl überläuft?

Ich kenne natürlich nicht die Verkaufszahlen dieser einen MCU. 
Allerdings aus meiner Erfahrung...

Ich (dienstlich) wollte TPM 2.0 Chips von Infineon abnehmen. Speziell 
von den 2.0 Chips gibt es keine Distributoren. Also habe ich bei 
Infineon angefragt und eine Mindestabnahme von 500.000 Stück (50 Wafer) 
und pro Jahr genannt bekommen.

Bei NXP und TI sieht das ähnlich aus für "Spezialchips" (eigentlich 
braucht die ja jedes Mainboard).

Vermutlich wird der Wafer-ID nicht schnell überlaufen, aber es könnte 
möglich sein.

: Bearbeitet durch User
von Jack (Gast)


Lesenswert?

Sören K. schrieb:
> Für ein Projekt von mir benötige ich eine eindeutige, nicht änderbare
> und vom Hersteller vorgegebene Identifikation der MCU.

Wie wichtig ist die Eindeutigkeit? Was passiert, wenn zufällig mal ein 
zweites Gerät mit der gleichen Nummer auftaucht?

> Allein vom Namen der Tabelle 6-39, also "Device IDs", könnte man davon
> ausgehen, dass der MSP430 eine Device ID hat. Jedoch ist es eher eine
> "Device Class ID". Trotzdem auch nützlich als Teil einer "unique Device
> ID" Generierung.

Ich würde mir die Verwendung dieser konstanten Anteile schenken. Die 
ändern doch nichts an der Eindeutigkeit.

> Ich würde "ungern" die bei der Herstellung fest vergebene 128-Bit
> Zufallszahl verwenden, da diese u.a. für den PRNG/Verschlüsselung
> verwendet wird.

Das Stichwort dazu heißt KDF 
https://en.wikipedia.org/wiki/Key_derivation_function

Wenn das nicht geht, man kann IDs auch als Hardware kaufen 
https://www.maximinte
grated.com/en/products/digital/memory-products/DS2401.html
http://www.microchip.com/wwwproducts/en/24AA02UID

Beitrag #5368368 wurde vom Autor gelöscht.
von Chris S. (aaa)


Lesenswert?

Ti hat Normalerweise ein 24bit lot-code und ein 6bit wafer-code.
Es ist aber auch leicht denkbar, dass die restlichen 2 bits andere 
Aufteilungen
ermöglichen mit einem shortened lot code.
Ich würde davon ausgehen, dass dieser nicht Überläuft.

von Arc N. (arc)


Lesenswert?

Sören K. schrieb:
> Ich (dienstlich) wollte TPM 2.0 Chips von Infineon abnehmen. Speziell
> von den 2.0 Chips gibt es keine Distributoren.

Mouser hat einige SLB9665-Varianten und eine Variante des SLB9670 auf 
Lager

Ansonsten wie schon erwähnt: GUID erzeugen.
Kommandozeile unter Linux: uuidgen
Windows in der PowerShell: [guid]::NewGuid()

Daran könnte man noch die Wafer-/Chip-Informationen hängen und dann 
einen Hash-Wert erzeugen oder einen HMAC (Keyed-Hash Message 
Authentication Code) erzeugen.

von Der Zahn der Zeit (Gast)


Lesenswert?

Im User Manual MSP430x2xxx las ich zufällig gerade, dass es für den 
TLV-Bereich, also die Device-spezifischen Kalibrierungseinstellungen, 
eine 16-Bit Checksum (Adr. 0x10C0) gibt, die vielleicht ausreichen 
könnte. Die müsste es doch auch bei den FRs geben. Änderbar ist sie 
natürlich schon, wenn man alle Hürden umschifft.

von tracer (Gast)


Lesenswert?

Natürlich reicht eine 16bit ID nicht.

Waver/lot und Koordinaten reichen aber und sind unique.

von Chris S. (aaa)


Lesenswert?

Wo siehst du dass diese 16bit ist, ich lese da 32bit.
Mfg
Chris

von tracer (Gast)


Lesenswert?

Chris S. schrieb:
> Wo siehst du dass diese 16bit ist, ich lese da 32bit.
> Mfg
> Chris

Einen Post über meinem.
Musst du richtig lesen, Chris. ;-)

von Chris S. (aaa)


Lesenswert?

Ich lese dies eben anders.
http://processors.wiki.ti.com/images/9/92/Msp430fr59xx_die_record.png
Da sind 32bit für die Wafer-Lot ID.
z.B.
F1xx \ G2xx\ F4xx haben keine uniq ID.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.