你好
我希望获得CPU的唯一ID,以便在生产中进行跟踪。当调用security_get_unique_device_id()函数时,我的软件会陷入停滞。
在文档中,我可以看到“函数使用OTP。hw_otpc_init ()和hw_otpc_set_speed ()在使用这个函数之前必须调用函数。”
这两个函数由sys_man/sys_clock_mgr.c在引导过程中调用。
你能跟我确认一下从prvMainTask得到这个数字的实际程序吗?
先谢谢你
致以最亲切的问候
设备:
你好,
在OTP头中,每个芯片都有一个唯一的位置/时间戳号码。你不应该使用security_get_unique_device_id()函数。请参考数据表,表5:OTP报头详细信息。
OTP中给你这个唯一数字的字段地址是:
职位/包装:0x07F8EA00 - 0x07F8EA07
测试器/时间戳:0x7F8EA08 - 0x07F8EA0E
为此,您应该读取前面提到的地址中的OTP头以获得唯一的ID。
谢谢,PM_Dialog
你好
谢谢你的第一个回答。所有与OTP相关的系统似乎都被关闭了
—0x7F4000区域为空
—0x07F8EA00及以下字节为空。
你能向我确认一下如何启用它吗?
hw_otpc_init(空白)
hw_otpc_set_speed(HW_OTPC_SYS_CLK_FREQclk_speed)
hw_otpc_manual_read_on(bool spare_rows)
手册阅读
hw_otpc_close(空白)
???
先谢谢你
致以最亲切的问候
对于记录,读取CPU ID的正确顺序是
uint8_t cpu_id [128];
hw_otpc_init ();
hw_otpc_set_speed (HW_OTPC_SYS_CLK_FREQ_16);
hw_otpc_manual_read_on (0);
memcpy(cpu_id, ((volatile uint64_t *) (0x07F8EA00)), sizeof(uint64_t) * 2);
hw_otpc_manual_read_off ();
hw_otpc_disable ();
我没有尝试再次使用security_get_unique_device_id()。
你好,
“所有OTP相关系统似乎都关闭了”是什么意思?您是否使用SmartSnippets工具箱读取OTP头文件?
谢谢,PM_Dialog
你好
我正在编写一些板级自测函数使用SDK1.0.14.1081.我没有使用Eclipse。
当使用segger ozone调试代码和尝试您的建议时,我无法访问OTP内存,所以我不得不调用hw_otpc来设置它。我最初以为是sys_man/sys_clock_mgr.c设置了它,但实际上它在引导后被设置为备用,所以我必须在读取数据之前唤醒设备。
文档不够精确。
你好,
我们推荐使用我们提供的工具。我们的工具支持网站上有详细的文档。就你而言,老实说,我无法理解你想要达到的目标。
谢谢,PM_Dialog