Forum: Mikrocontroller und Digitale Elektronik Die / Maskrom


von r_u_d_i (Gast)


Lesenswert?

Hi

ich frage  mich die ganze Zeit und auch schon länger, wie man in einer 
Die / Maskrom eine UID einbrennen kann.

Wenn dieses grosse Die erstellt wird, wird dann tatsächlich an einer 
Stelle des jeweiligen SoC oder IC oder dergleichen, eine andere 
Schaltung gebrannt, die eine UID später erzeugen?

Und das nächste Die? Enthält dann wieder eine andere Maske?
Die UID wird bereits bei der Planung des Die und damit den einzelnen ( 
wie nennt man das Einzelteil? )SoC / IC oder dergleichen

Kann man solche "Einbrennungen" ( mir fehlt der Fachbegriff dafür ) 
später an einer Stelle des Fertigunsprozesses einer "corrigere" Routine 
unterziehen? Warum auch immer.

lg
rudi ;-)

von user (Gast)


Lesenswert?

Die UID in einem µC wird meistens über ein (E)(E)PROM realisiert.

von r_u_d_i (Gast)


Lesenswert?

user schrieb:
> Die UID in einem µC wird meistens über ein (E)(E)PROM realisiert.

Das wäre aber nicht gut da überschreibar, zumindest löschbar oder 
zerstörbar?
Beitrag "Re: Warum EEPROM nur 100.000 mal beschreibbar"

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Es gibt da OTP-Zellen (one-time programmable), die werden für sowas
genutzt.

Klar, zerstören kannst du immer alles. ;-)  Hilft das irgendwie in der
Sache?

Masken-ROM macht niemand unter ein paar Hunderttausend Bauteilen mit
völlig gleichem Bitmuster.  Vermutlich wird sowas am ehesten noch
entweder für ganz billige Massen-Controller genutzt oder für sowas
wie Bootloader.

von G. H. (schufti)


Lesenswert?

würde mich nicht wundern wenn das beim belichten gleich mitgelasert 
wird...
bei billigen/einfachen chips wo keine Funktionskontrolle (oder bloß 
Stichproben) vorgesehen sind rechnet sich OTP wohl nicht.

von r_u_d_i (Gast)


Lesenswert?

Jörg W. schrieb:
> Klar, zerstören kannst du immer alles. ;-)  Hilft das irgendwie in der
> Sache?
>
> Masken-ROM macht niemand unter ein paar Hunderttausend Bauteilen mit
> völlig gleichem Bitmuster.  Vermutlich wird sowas am ehesten noch
> entweder für ganz billige Massen-Controller genutzt oder für sowas
> wie Bootloader.

Jörg vielen Dank!
Kannst du dir das mal ansehen?
Beitrag "Re: ESP8266 einzelne Code Funktion ziehen (ASM) rboot"

Der ESP hat im ROM an der Stelle seine ID sitzen. ( idapro)

Ginge es - theoretisch! - die UID zu zerstören oder gar zu verändern?

Mich hat der Beitrag bissal nachdenklich gemacht:
Beitrag "Re: Warum EEPROM nur 100.000 mal beschreibbar"
Aber wie könnte man an denen Adressen die Spannung erhöhen?
( ich höre dein Lachen bis hier her ! ;-) )

Ist das jetzt sicher ( UDI ) oder eher "..wenn der Tag kommen muss dann 
kommt er auch".

lg
rudi ;-)

von r_u_d_i (Gast)


Lesenswert?

Jörg W. schrieb:
> Es gibt da OTP-Zellen (one-time programmable), die werden für sowas
> genutzt.

Sorry ( push# )

heisst das, dass man "auch erst" zu einem späteren Zeitpunkt diese OTP 
Zellen ( SoC wurde zgeschnitten ) im Werk 'programmieren' kann und auf 
dem Die noch gar nichts machen kann / noch nichts machen muss?

Wie sieht sowas aus? Schickt man bestimmte Befehle an bestimmten Pins 
nach einem bestimmten Takt? Oder kann man sich das Vorstellen, dass der 
Bootloader auch solche Befehle "einmalig" oder mehrmalig entgegennehmen 
kann und die OTP Zellen nur ursächlich einrichten bzw auch in einem Edit 
Mode editieren kann?

Danke!
lg
;-)

von r_u_d_i (Gast)


Lesenswert?

"Es existieren jedoch auch "unechte" OTP-Speicher, welche als sog. 
"OTP-Area" in bestimmten Flash-Speichern implementiert sind. Diese 
Speicherbereiche bestehen in der Regel aus normalen Flash-Zellen, welche 
durch eine Zusatzlogik gegen Veränderung gesichert werden"

Das sagt wiki noch dazu.

"Einzelne OTP-Bereiche existieren auch in bestimmten Bauelementen, wie 
beispielsweise Flash-Speichern, Smartcards und Mikrocontrollern, wobei 
diese dazu dienen, Seriennummern oder andere Identifikationsdaten 
unabänderlich zu speichern. Ein Beispiel dazu ist die IMEI der meisten 
modernen Handys."


Ok - wie kann man das prüfen ob es sich um echte oder unechte handelt?
Gibt es ein Verfahren?

lg
;-)


https://de.wikipedia.org/wiki/One_Time_Programmable

von bekannt (Gast)


Lesenswert?

Mögliche Variante wäre auch noch simples (Anti-)Fusing

https://en.wikipedia.org/wiki/Antifuse#Antifuses_in_integrated_circuits

Und ja, das wird im Werk direk auf dem Die gemacht, vorstellbar bspw. 
beim testen noch im Waferverbund.

von r_u_d_i (Gast)


Lesenswert?

bekannt schrieb:
> Mögliche Variante wäre auch noch simples (Anti-)Fusing
>
> https://en.wikipedia.org/wiki/Antifuse#Antifuses_in_integrated_circuits
>
> Und ja, das wird im Werk direk auf dem Die gemacht, vorstellbar bspw.
> beim testen noch im Waferverbund.

Danke!

Es geht u.a. auch darum:

Der ESP hat eine UID ( DiskOnChip )
Der kann aber auch zusätzlich noch eine Companion ID erhalten,
d.h.
Viele SoC's haben dann eine gleiche ID, die einem Modul Hersteller, Unit 
Hersteller.. zugeordnet werden.

Meine Überlegung war dann,
wenn zur Herstellung nicht bekannt ist, wieviele SoCs ein 
Modulhersteller abnimmt, wie kann "espressif" wissen, wieviele sie dann 
mit der gleichen Companion ID "bestücken" muss?

Mein erster Gegengedanke war dann, dass diese Die / Wafer dann erst 
hergestellt wird, wenn es einen "Companion" Käufer gibt.

Wenn es im Waferverbund so geht, dass man eine bestimmte Anzahl dann auf 
diesem Wafer dem einen zuteilt, einen anderen Abschnitt einen anderen 
usw.,
dann ok

Aber die Sache ist die, dass es anscheinend geht, wenn Module bereits 
auf dem Markt sind, dass diese mit einer Companion ID versehen werden 
können,
kann es mir aber nicht vorstellen; denke eher dann ab Werk auf dem 
Wafer?.

lg
;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

r_u_d_i schrieb:
> Der ESP hat im ROM an der Stelle seine ID sitzen.

Ja, und?  Warum nicht?

Du kannst dir auch einen Dallas^H^H^H^H^H^HMaxim Onewire-Button kaufen,
der hat auch eine eindeutige Seriennummer.  Trotzdem macht sich für
die paar Cent kein Hersteller die Mühe, jedem Chip seine eigene
Maske zu generieren.

Ob man die nun in einen Speicherbereich abbildet oder über irgendeinen
Bus abfragen kann, ist doch dabei völlig schnuppe.

r_u_d_i schrieb:
> Ok - wie kann man das prüfen ob es sich um echte oder unechte handelt?

Die Ansteuerlogik weiß das.  Die entsprechenden Zellen lassen sich
nur während des Fertigungstests programmieren und werden am Ende
des Tests gegen weitere Schreibzugriffe verriegelt.  (Das kann man
durchaus brutal machen, indem sich beispielsweise im entsprechenden
Block gar keine Programmierspannung mehr anlegen lässt.)

Klar könnte man die ganz theoretisch irgendwo auf Bitebene wieder
löschen, genauso wie du in irgendwelchen Hinterhof-Laboren für
hinreichend viel Geld halt die Lockbits eines AVRs löschen lassen
kannst.  Der Dreh- und Angelpunkt ist, dass der Aufwand dafür höher
sein muss als der Nutzen, den du aus solcherart Aktion ziehen kannst.
Solange du damit dein AVR-Programm sicherst, mit dem jemand anders
sowieso bloß kein Geld verdienen wird, ist das egal.  Wenn du eine
EC-Karte bauen willst, solltest du besser gesicherte Technologien
benutzen.

von r_u_d_i (Gast)


Lesenswert?

r_u_d_i schrieb:
> Der ESP hat eine UID ( DiskOnChip )

quatsch ;-)

eine ChipID wollte ich schreiben :)
mit dem DiskOnChip hab ich vor paar Minuten hantiert,
so ein 'Gedankenüberschlag', da wurden benachbarte Zellen nicht 
ausreichend gelöscht ;-)

von r_u_d_i (Gast)


Lesenswert?

Jörg W. schrieb:


Vielen Dank Jörg!
Ok soweit verstanden.
Werde mich da in die Richtung noch vertiefen.

> Wenn du eine EC-Karte bauen willst, solltest du besser gesicherte
> Technologien benutzen.

Ein Payment Dienstleister will den SoC einsetzen, wie was wer ist noch 
nicht im Detail bekannt - solange die FW aber über aussenstehende 
Speicher abgewickelt wird, ist das alles nicht so sicher. Das ist das 
Manko beim ESP. Es gibt zwar Ansätze, aber letztendlich ist die FW 
ausserhalb. :(
HW Crypt ist unbeschrieben, undokumentiert, aber vorhanden.

lg
;-)

von 6a66 (Gast)


Lesenswert?

r_u_d_i schrieb:
> Das wäre aber nicht gut da überschreibar, zumindest löschbar oder
> zerstörbar?
> Beitrag "Re: Warum EEPROM nur 100.000 mal beschreibbar"

ICh gehe davon aus dass das dann im gleichen prozess gemacht wird wie 
auf den restlichen Chip. Also entweder Flash, EEPROM oder Fuse. Die 
Chips der Prozessoren werden auch über spezielle Zugriffsmöglichkeiten 
selektiert und dann evtl sogra umkonfiguriert: Wennd as Flash eine 
Produktionsfehler hat, wird der Chip dann halt mit 64k anstatt 128k 
verkauft, wenn der AD nicht sauber geht dann in der Vaiante ohne AD). 
Dazu benötigt der Hersteller Zugriff auf Parametriermöglichkeiten, 
vermutlich über das JTAG-Interface. In ddiesem Zuge wird dann auch eien 
"seriennumemr" oder "User-ID" oder wie man das auch nenne will 
geschrieben.

Bei OTP gehe ich davon aus dass das ähnlich realisiert wird. Da steckt 
aber heute meist ein (E)EPROM oder FLASH-Prozess hinter den Zellen. Der 
Content wird dann halt schon ab Werk geflasht/programmiert. Die Zeit des 
wirklichen MASK-ROM ist meines Wissen bereits schon mindestens 10 Jahre 
vorbei.

G. H. schrieb:
> würde mich nicht wundern wenn das beim belichten gleich mitgelasert
> wird...

Halte ich für zu viel Aufwand, dann einfacher mit programmierbaren 
Zellen und die beim Die-Test mitprogrammieren.

r_u_d_i schrieb:
> Ginge es - theoretisch! - die UID zu zerstören oder gar zu verändern?

Latürnich nur wenn Du weißt wie der Hersteller da ran kommt. Mir sind 
aber keine Dokumente irgendwelcher Hersteller öffentlich bekannt wie man 
an solche Bereiche rankommt. Kann mir auch vorstellen dass das, bevor 
die geschrieben werden, einfach geht, nach dem Beschreiben aber eine 
Sicherung geschossen wird damit das nicht mehr zugreifbar ist.

rgds

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

6a66 schrieb:

> Die Zeit des
> wirklichen MASK-ROM ist meines Wissen bereits schon mindestens 10 Jahre
> vorbei.

Ich könnte mir vorstellen, dass es bei einigen fernöstlichen
Produkten in Millionenstückzahlen noch eine Rolle spielt.  Vermutlich
sind auch fest eingebaute Bootloader (U-Boot etc.) noch als Maske
implementiert.

> Kann mir auch vorstellen dass das, bevor
> die geschrieben werden, einfach geht, nach dem Beschreiben aber eine
> Sicherung geschossen wird damit das nicht mehr zugreifbar ist.

So ist es.  Die Teile nennen sich auch im Herstellerjargon OTP,
d. h. nachdem sie einmalig auf dem Tester programmiert worden sind,
lassen sie sich selbst mit Kenntnis der Hersteller-Interna nicht
noch einmal umprogrammieren.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Jörg W. schrieb:
>> Die Zeit des
>> wirklichen MASK-ROM ist meines Wissen bereits schon mindestens 10 Jahre
>> vorbei.
>
> Ich könnte mir vorstellen, dass es bei einigen fernöstlichen
> Produkten in Millionenstückzahlen noch eine Rolle spielt.  Vermutlich
> sind auch fest eingebaute Bootloader (U-Boot etc.) noch als Maske
> implementiert.

Ja, das denke ich auch, und zwar insbesondere bei solchen Bausteinen für 
Türklingeln, Glückwunschkarten und allereinfachste Armbanduhren.

Ich kann mir vorstellen, dass Masken-ROMs aber auch für die Bootloader 
und Initalisierungsfunktionen in Satelliten eingesetzt werden. Dort hat 
man ja gewaltig mit kosmischer Strahlung zu kämpfen. Die eigentliche 
Firmware kann dann ja redundant in mehreren Flashes gespeichert sein, 
wobei der Bootloader nur Firmware mit einwandfreier Prüfsumme anspringt 
oder ins RAM kopiert.

Die klassischen OTP waren übrigens meist EPROMs ohne Fenster. Dadurch 
konnte man wesentlich billigere Gehäusematerialien wählen. Solche OTPs 
hatten dann auch keinen Veränderungsschutz, sondern man konnte auch 
später noch mit Hilfe der EPROM-typischen Programmierspannungen 
(25V/21V/12,V) die Bits in eine Richtung (meist 1->0) umklappen. Mir ist 
nicht bekannt, ob es auch OTPs mit 0->1 gab, denn diese 
Programmierrichtung war ja nur bei den allerersten (P-MOS?) EPROMs 
gebräuchlich.

Völlig OT: Beim Z80 hatte NOP die OP-Code 0x00 und RST38 den OP-Code 
0xff. Um zu erkennen, dass ein Programm in einen nicht programmierten 
EPROM-Bereich gesprungen/abgestürzt war, brachte man gelegentlich an 
Adresse 0x0038 eine passende Auffangroutine unter.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

6a66 schrieb:
> Die
> Chips der Prozessoren werden auch über spezielle Zugriffsmöglichkeiten
> selektiert und dann evtl sogra umkonfiguriert: Wennd as Flash eine
> Produktionsfehler hat, wird der Chip dann halt mit 64k anstatt 128k
> verkauft, wenn der AD nicht sauber geht dann in der Vaiante ohne AD).

Oder noch übler: einige Hersteller machen sich nicht einmal die Mühe, 
teilweise defekte Bausteine durch Konfigurationsbits zu kennzeichnen 
oder gar Funktionsblöcke zu deaktivieren. Ein Beispiel hierfür ist das 
Paar LPC2214/LPC2294. Erstgenannter hat "keinen" CAN-Controller, 
letzterer vier Stück. Dennoch findet man bei beiden die entsprechenden 
Register. Vielleicht geht es dabei aber auch nur um die Fälligkeit von 
Lizenzzahlungen für die CAN-Blöcke.

Das ganze kann zu ziemlich schwer auffindbaren Fehlern führen, wenn man 
nämlich einen zu generischen Bootloader hat, der auf blauen Dunst alle 
Peripherieblöcke einer Bausteinfamilie initialisiert und dabei ggf. 
einen defekten Block aktiviert, der zu Störungen führt. So etwas 
passiert auch bei Bausteinen, die auf dem Chip viel mehr Peripherie 
haben als an den Gehäusepins nach außen bereitgestellt. Fehlende 
Pull-Up/Down-Widerstände führen dann durchaus zu unerwünschten 
Interrupts oder gar zu einer viel zu hohen Leistungsaufnahme. Bekanntes 
Beispiel: Atmel AT91RM9200. Bei dem Prozessor ist im QFP-Gehäuse nur ein 
USB-Host-Anschluss herausgeführt, im BGA hingegen zwei. Leider kann man 
Interrupts nur für beide Ports gemeinsam konfigurieren, da sie an einem 
gemeinsamen Root-Hub hängen.

Wenn man sich die Dies von RAMs oder Flash-Bausteinen anschaut, sieht 
man häufig auch eine ungerade Anzahl von Speicherkacheln, z.B. fünf 
statt vier. Hier dient in der Tat eine Kachel als Ersatz für Defekte und 
wird während des Fertigungstests fest konfiguriert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas S. schrieb:
> Vielleicht geht es dabei aber auch nur um die Fälligkeit von
> Lizenzzahlungen für die CAN-Blöcke.

Oder einfach nur Preispolitik: der Chip ohne CAN wird billiger
verkauft, um die entsprechende Kundschaft anzulocken.  Solange aber
davon keiner Millionenstückzahlen ordert, lohnt es einfach nicht,
tatsächlich einen kleineren IC zu gießen, da die Einstandskosten
viel zu hoch wären.

Allerdings kannst du dich als Kunde natürlich nicht drauf verlassen,
immer und in alle Ewigkeit mit dem billigeren Chip bereits deine
gewünschte Funktionalität zu bekommen.  Außerdem wird bei dem, für den
die Funktionalität nicht garantiert ist, diese auch gar nicht erst
getestet (was zu einer nicht unwesentlichen Kosteneinsparung beiträgt,
er wird also nicht nur billiger verkauft, sondern ist dann für den
Hersteller auch tatsächlich billiger).

von Axel L. (axel_5)


Lesenswert?

r_u_d_i schrieb:
> r_u_d_i schrieb:
>> Der ESP hat eine UID ( DiskOnChip )
>
> quatsch ;-)
>
> eine ChipID wollte ich schreiben :)
> mit dem DiskOnChip hab ich vor paar Minuten hantiert,
> so ein 'Gedankenüberschlag', da wurden benachbarte Zellen nicht
> ausreichend gelöscht ;-)

So eine Chip-ID wird normalerweise mit Fuses gemacht, weil EEPROM und 
Flash zusätzliche Fertigungsschritte verlangen, also mehr Kosten. Bei 
Fuses werden im Prinzip einfach nur Vias durchgebrannt. Von daher ist 
eine Chip-ID auch später veränderbar, wobei gebrannnte Vias eben schon 
durch sind und nicht wieder geheilt werden können. Die Chip ID wird dann 
in der Regel auf dem Wafertester mit gebrannt und dann auch gleich 
getestet.

Das kann im Prinip auch im fertigen Chip gemacht werden, das Problem 
ist, dass der Pin für die Programmierspannung normalerweise nicht am 
Gehäuse anliegt, sondern nur am Die. Man kommt da also nicht dran. Kann 
aber auch sein, dass die die Programmierspannung intern genrieren, dann 
würde das auch im fertigen Chip gehen. Halte ich aber für 
unwahrscheinlich, denn das kostet extra Aufwand/Geld.

Gruss
Axel

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.