Part Number: TM4C129ENCPDT
A few questions on the TM4C129ENCPDT device's unique ID registers (UNIQUEID0 through UNIQUEID3)
I understand that these are not random values. Are they sequential or is there some distribution across all 128 bits? If sequential, which word contains the least significant bits (the bits most likely to be different from part to part)? If not sequential, can we expect differences in all four words across different parts?
The datasheet gives only this explanation: "These registers contain a unique 128-bit identifier that cannot be modified by the user. This value is unique to each individual die but is not a random value. This unique device identifier can be used to initiate secure boot processes or as a serial number for USB or other end applications." (Datasheet dated June 18, 2014, section 5.5, registers 182 through 185.)
The reason for this question is that software needs to provide a unique MAC address for Ethernet communications. In the example programs, these numbers were stored in USER0 and USER1. If either register is not programmed (contains 0xffffffff) then the example programs enter a while(1) trap. For production purposes we'd like to fall back on something a bit more robust. One possibility is to grab six bytes of the UNIQUE ID. Another possibility is to generate random numbers and then persist them in FLASH or EEPROM. The problem with random numbers generated by srand()/rand() is that we are likely to get identical results on multiple parts, which will cause a network conflict. We would investigate using the chip's crypto accelerator hardware to generate random numbers. But the UNIQUE ID solution is by far the simplest.