Is it generally possible to uniquely identify an individual MCU (for licensing purposes) (no MAC address available)

StackOverflow https://stackoverflow.com/questions/15344369

  •  23-03-2022
  •  | 
  •  

Domanda

I am being asked to enhance the firmware installation program for an MCU (specifically, a Freescale MC9S12E64 - though I don't know if this matters).

The purpose of the enhanced installation is to limit the number of times the firmware can be installed. It seems the best way to do this would be to uniquely identify the specific MCU in use during firmware installation, in order to keep track in a central database.

If the MCU had a MAC address, this would seem to be feasible. Unfortunately, these MCU's have no network interface, and hence no MAC address. Looking through the manual for the MCU noted above, I cannot find an indication of a unique identifier for the MCU.

My question is: Do MCU's typically have unique identifiers associated with them - analogous to a MAC address - that can be obtained by software as firmware is burned into these devices?

È stato utile?

Soluzione

Some do, some don't, it is not a given for all devices from all manufacturers.

One solution is to program your own unique identifier into whatever non-volatile storage is available at manufacture. Another method would be to include a device such as Ramtron's F-RAM serial memory, which provides a unique serial number as well as non-volatile memory. Many (possibly cheaper) serial EEPROM devices include unique ID or MACs as well (example)

Altri suggerimenti

The HCS12 has no such feature built-in. Note however that it has one register PARTID for "which S12 derivate am I, of which silicon mask?"

What you would have to do is either to write your own flash programming algorithm that keeps track of the number of writes internally, though in that case you must modify the program. Unfortunately you are using E64, which does not only lack suitable on-chip EEPROM, but also only got 1 flash bank. Meaning that the code writing down this "internal serial number" will have to be executed from RAM. There is an app note for that, on the Freescale site.

Not many do, as it's a pain for the manufacturer to do this - although as pointed out in the comments, it is becoming more popular with the newer Cortex-based parts - the pain must be worth it!

You could add an external device, such as a Dallas/Maxim Onewire serial-number chip. Of course, there's nothing to stop your users modifying the board to make them all report the same ID so they can install it multiple times...

Or program your own ID into flash when you manufacture the devices, and lock the device so it can't be changed (easily) over the debug interface.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top