1

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?

Lundin
  • 195,001
  • 40
  • 254
  • 396
Dan Nissenbaum
  • 13,558
  • 21
  • 105
  • 181
  • 1
    It seems odd to me though that you allow users to re-program the MCUs themselves, i.e. you give them access to the actual binary, which could be used to create a complete copy-cat design of your product. You are fine with that and thereby don't consider your intellectual property of any value, yet you want to restrict how many times they can program the MCU? How does this make sense? – Lundin Mar 12 '13 at 15:46
  • The manufacturer will possess an installer that wraps the binary, and the installer must be connected to the internet to validate an activation code. – Dan Nissenbaum Mar 12 '13 at 18:18
  • @Lundin (nametag added) – Dan Nissenbaum Mar 12 '13 at 18:26
  • @DanNissenbaum - "must" only until someone reverse engineers it, or logs what it sends to the programmer, or stops before programming the security bit and reads the file back out of the part.. – Chris Stratton Mar 13 '13 at 22:28
  • Please do not ask the same quersion on mulitple stack exchange sites http://electronics.stackexchange.com/questions/60569/is-it-generally-possible-to-uniquely-identify-an-individual-mcu-for-licensing-p – Chris Stratton Mar 13 '13 at 22:33
  • @ChrisStratton However, I received different answers on both sites, and both sets of answers help. They're different communities and the question overlaps both communities equally. – Dan Nissenbaum Mar 14 '13 at 22:18
  • Perhaps, but it is not permitted http://meta.stackexchange.com/questions/64068/is-cross-posting-a-question-on-multiple-stack-exchange-sites-permitted-if-the-qu – Chris Stratton Mar 14 '13 at 22:35

3 Answers3

5

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)

Clifford
  • 88,407
  • 13
  • 85
  • 165
2

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.

Martin Thompson
  • 16,395
  • 1
  • 38
  • 56
  • Actually a lot of the more modern microcontrollers - smaller arm cortex parts in particular - are offering it now, but even having a unique ID won't really accomplish the poster's goal with any real strength. – Chris Stratton Mar 13 '13 at 22:29
2

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.

Lundin
  • 195,001
  • 40
  • 254
  • 396