STM32FXX Prozessor - individuelle Kennung auslesen

Gast #7055477
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...
#7055494
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
#7055501
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.
Gast #7055503
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.