Forum: Mikrocontroller und Digitale Elektronik STM32FXX Prozessor - individuelle Kennung auslesen


von Hanna (Gast)


Lesenswert?

Hallo zusammen,

für zukünftige Entwicklungen möchte ich gerne weiterhin auf STM32 
Prozessoren setzen.
Je nach Ausbaustufe mit Cortex M0, M3, M4.
Um individuelle Passwörter für das jeweilige Gerät zu generieren würde 
ich gerne so etwas wie eine einmalige, individuelle Prozessorkennung 
auslesen.

Ich habe so etwas schonmal auf PC Seite gemacht, in dem ich die MAC 
Adresse der Netzwerkkarte ausgelesen habe, diese war dann Grundlage für 
mein individuelles, nur für dieses Gerät gültige Passwort.

Gibt es so etwas in der Art auch beim STM32?

Also eine Art Prozessorseriennummer o.ä. die wirklich einmalig und 
individuell ist?

Wofür brauche ich das?
Kunde X Kauft das Standardpacket, möchte aber nun nach 1 Jahr doch noch 
diverse Premiumsoftwarefunktionen freigeschaltet haben.
Er liest am Display seine induviduelle Kennung, gibt mir diese und 
bekommt ein individuelles Passwort zur Freischaltung generiert



Falls ja, wie liest man diese aus? Benutze momentan STM Cube mit STM-IDE 
als Entwicklungsumgebung.

Wäre toll wenn jemand ne Idee hat...

von Frank K. (fchk)


Lesenswert?

Ich kann nicht sagen, ob ALLE STM32 eine eineindeutige ID haben. Die 
größeren haben eine ID, aber ob die wirklich eineindeutig ist, weiß ich 
nicht. Ich meine nicht - da haben immer 1000 oder so Chips die gleiche 
ID.

Ob die kleineren eine ID haben, wäre in jedem Einzelfall zu prüfen.

Ich baue auf meine Boards immer soetwas drauf:

http://ww1.microchip.com/downloads/en/devicedoc/Atmel-8807-SEEPROM-AT24MAC402-602-Datasheet.pdf

Da ist eine eineindeutige ID im ROM-Teil drin (also nicht lösch- oder 
änderbar), und der 256 Byte EEPROM-Teil ist frei benutzbar.

Es gibt auch OneWire-Seriennummernchips, z.B.:

https://datasheets.maximintegrated.com/en/ds/DS2401.pdf

fchk

von STK500-Besitzer (Gast)


Lesenswert?

Hanna schrieb:
> Also eine Art Prozessorseriennummer o.ä. die wirklich einmalig und
> individuell ist?

Ja.
Manche haben eine einzigartige ID; viele haben eine OTP-Memory-Area.

von Tassilo H. (tassilo_h)


Lesenswert?

Faul wie ich bin, mache ich das so:
1
// memory location with the processors UID, here should be 3 dwords/12 bytes
2
#ifdef STM32F4
3
#define CONFIG_UID ((volatile uint8_t*)(0x1FFF7A10))
4
#endif
5
#ifdef STM32F7
6
#define CONFIG_UID ((volatile uint8_t*)(0x1FF0F420))
7
#endif

Verwendung dann als CONFIG_UID[0] bis CONFIG_UID[11]. Das gilt für den 
STM32F407 oder STM32F767, die Seriennummer gibt es auch bei anderen 
Modellen, aber dann an anderer Adresse, wo steht im Datenblatt.

von A. B. (Gast)


Lesenswert?

Hanna schrieb:
> Also eine Art Prozessorseriennummer o.ä. die wirklich einmalig und
> individuell ist?

Ein klares jein: Manche Typen haben ein "Unique device ID register (96 
bits)" mit einer solchen. (Die "abgespeckten" Typen (etwa G030 statt 
G031) bisweilen nicht, oder sie ist zwar da, aber eben nicht garantiert 
und in abweichendem Format.) Soll das typübergreifend sein, müsste man 
die noch um die Typkennung erweitern.

Also: RM konsultieren.

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.