有关 TM4C129ENCPDT 器件的唯一 ID 寄存器(UNIQUEID0至 UNIQUEID3)的一些问题
我知道这些不是随机值。 它们是顺序的、还是在所有128位之间存在某种分布? 如果是连续的、哪个字包含最低有效位(各个器件最有可能不同的位)? 如果不按顺序排列、我们是否可以预期不同器件的所有四个字之间存在差异?
数据表只给出了这个解释:"这些寄存器包含一个唯一的128位标识符、用户不能修改这个标识符。 该值对于每个单独的芯片都是唯一的、但不是随机值。 此唯一设备标识符可用于启动安全启动过程、也可用作 USB 或其他终端应用的序列号。" (数据表日期为2014年6月18日、第5.5节、寄存器182至185。)
这个问题的原因是软件需要为以太网通信提供一个唯一的 MAC 地址。 在示例程序中、这些数字存储在 USER0和 User1中。 如果任一寄存器未编程(包含0xffffffff)、则示例程序会进入 while (1)陷阱。 出于生产目的、我们希望恢复一些更强大的功能。 一种方法是抓取唯一 ID 的六个字节。 另一种可能是生成随机数、然后将其保留在闪存或 EEPROM 中。 srand()/rand()生成的随机数的问题是,我们可能会在多个器件上获得相同的结果,这将导致网络冲突。 我们将研究如何使用芯片的加密加速器硬件来生成随机数。 但独特的 ID 解决方案是迄今为止最简单的。