请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AM2634工具/软件:
您好、
我正在寻找一种方法来获取唯一的 TI 编号、无论是序列号还是其他任何产品、这在处理器之间还是在下电上电之间都是唯一的。
但是、当我读出两个不同开发套件之间的数字时、两个开发套件报告的数字都相同。
我尝试了以下“表 2-929. TOP_CTRL 寄存器、基址=50D8 0000h、Length=4096“ of https://www.ti.com/lit/ug/spruj42e/spruj42e.pdf?ts =1756786931208
10h 32 TOP_CTRL_EFUSE_DIEID0 50D8 0010h
14h 32 TOP_CTRL_EFUSE_DIEID1 50D8 0014h
18h 32 TOP_CTRL_EFUSE_DIEID2 50D8 0018h
1CH 32 TOP_CTRL_EFUSE_DIEID3 50D8 001Ch
20h 32 TOP_CTRL_EFUSE_UID0 50D8 0020h
24h 32 TOP_CTRL_EFUSE_UID1 50D8 0024h
28h 32 TOP_CTRL_EFUSE_UID2 50D8 0028h
2 通道 32 TOP_CTRL_EFUSE_UID3 50D8 002Ch
30h 32 TOP_CTRL_EFUSE_DEVICE_TYPE 50D8 0030h
34h 32 TOP_CTRL_EFUSE_FROM0_CHECKSUM 50D8 0034h
38h 32 TOP_CTRL_EFUSE_JTAG_USERCODE_ID 50D8 0038h
14h 32 TOP_CTRL_EFUSE_DIEID1 50D8 0014h
18h 32 TOP_CTRL_EFUSE_DIEID2 50D8 0018h
1CH 32 TOP_CTRL_EFUSE_DIEID3 50D8 001Ch
20h 32 TOP_CTRL_EFUSE_UID0 50D8 0020h
24h 32 TOP_CTRL_EFUSE_UID1 50D8 0024h
28h 32 TOP_CTRL_EFUSE_UID2 50D8 0028h
2 通道 32 TOP_CTRL_EFUSE_UID3 50D8 002Ch
30h 32 TOP_CTRL_EFUSE_DEVICE_TYPE 50D8 0030h
34h 32 TOP_CTRL_EFUSE_FROM0_CHECKSUM 50D8 0034h
38h 32 TOP_CTRL_EFUSE_JTAG_USERCODE_ID 50D8 0038h
我也尝试 用下面读出 MAC ID,但它读回我使用的两个控制卡的所有 0。
std::array get_hardware_id(){
uint32_t mac_ID0 = HW_RD_REG32_RAW (CSL_TOP_CTRL_MAC_ID0);
uint32_t mac_ID1 = HW_RD_REG32_RAW (CSL_TOP_CTRL_MAC_ID1);
return{(uint8_t)(mac_id0 >> 0)、(uint8_t)(mac_id0 >> 8)、(uint8_t)(mac_id0 >> 16)、(uint8_t)(mac_id0 >> 24)、
(uint8_t)(mac_id1 >> 0)、(uint8_t)(mac_id1 >> 8)、(uint8_t)(mac_id1 >> 16)、(uint8_t)(mac_id1 >> 24)、
};
}
它返回两个被测控制卡上的所有 0: 000000000000
在 EFUSE_UID 上执行相同的操作
std::array get_hardware_id(){uint32_t uid0 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_UID0);uint32_t uid1 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_UID1);uint32_t uid2 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_UID2);uint32_t uid3 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_UID3);return{(uint8_t)(uid0 >> 0)、(uint8_t)(uid0 >> 8)、(uint8_t)(uid0 >> 16)、(uint8_t)(uid0 >> 24)、(uint8_t)(uid1 >> 0)、(uint8_t)(uid1 >> 8)、(uint8_t)(uid1 >> 16)、(uint8_t)(uid1 >> 24)、(uint8_t)(uid2 >> 0)、(uint8_t)(uid2 >> 8)、(uint8_t)(uid2 >> 16)、(uint8_t)(uid2 >> 24)、(uint8_t)(uid3 >> 0)、(uint8_t)(uid3 >> 8)、(uint8_t)(uid3 >> 16)、(uint8_t)(uid3 >> 24)};}
两个控制卡都返回非零值、但两个控制卡之间的数字相同。
与 EFUSE_DIEID 相同
std::array get_hardware_id(){uint32_t uid0 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_DIEID0);uint32_t uid1 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_DIEID1);uint32_t uid2 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_DIEID2);uint32_t uid3 = HW_RD_REG32_RAW (CSL_TOP_CTRL_EFUSE_DIEID3);return{(uint8_t)(uid0 >> 0)、(uint8_t)(uid0 >> 8)、(uint8_t)(uid0 >> 16)、(uint8_t)(uid0 >> 24)、(uint8_t)(uid1 >> 0)、(uint8_t)(uid1 >> 8)、(uint8_t)(uid1 >> 16)、(uint8_t)(uid1 >> 24)、(uint8_t)(uid2 >> 0)、(uint8_t)(uid2 >> 8)、(uint8_t)(uid2 >> 16)、(uint8_t)(uid2 >> 24)、(uint8_t)(uid3 >> 0)、(uint8_t)(uid3 >> 8)、(uint8_t)(uid3 >> 16)、(uint8_t)(uid3 >> 24)};}
两个控制卡都返回非零值、但两个控制卡之间的数字相同。
您是否知道我可以拉取什么寄存器、或者更好地说、我可以使用什么 API 函数、以便在芯片之间获得通过下电上电保持一致的唯一 ID?
