Security_get_unique_device_id () - sw停止

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
7个职位/ 0个新职位
最后发表
bobspam@free.fr
离线
最后看到:6个月6天前
加入:2018-06-20 08:07
Security_get_unique_device_id () - sw停止

你好

我希望获得CPU的唯一ID,以便在生产中进行跟踪。当调用security_get_unique_device_id()函数时,我的软件会陷入停滞。

在文档中,我可以看到“函数使用OTP。hw_otpc_init ()hw_otpc_set_speed ()在使用这个函数之前必须调用函数。”

这两个函数由sys_man/sys_clock_mgr.c在引导过程中调用。

你能跟我确认一下从prvMainTask得到这个数字的实际程序吗?

先谢谢你

致以最亲切的问候

设备:
PM_Dialog
离线
最后看到:1天6小时前
工作人员
加入:2018-02-08 11:03
你好,

你好,

在OTP头中,每个芯片都有一个唯一的位置/时间戳号码。你不应该使用security_get_unique_device_id()函数。请参考数据表,表5:OTP报头详细信息。

OTP中给你这个唯一数字的字段地址是:

职位/包装:0x07F8EA00 - 0x07F8EA07

测试器/时间戳:0x7F8EA08 - 0x07F8EA0E

为此,您应该读取前面提到的地址中的OTP头以获得唯一的ID。

谢谢,PM_Dialog

bobspam@free.fr
离线
最后看到:6个月6天前
加入:2018-06-20 08:07
你好

你好

谢谢你的第一个回答。所有与OTP相关的系统似乎都被关闭了

—0x7F4000区域为空

—0x07F8EA00及以下字节为空。

你能向我确认一下如何启用它吗?

hw_otpc_init(空白)

hw_otpc_set_speedHW_OTPC_SYS_CLK_FREQclk_speed)

hw_otpc_manual_read_on(bool spare_rows)

手册阅读

hw_otpc_close(空白)

???

先谢谢你

致以最亲切的问候

bobspam@free.fr
离线
最后看到:6个月6天前
加入:2018-06-20 08:07
郑重声明,这是正确的

对于记录,读取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()。

PM_Dialog
离线
最后看到:1天6小时前
工作人员
加入:2018-02-08 11:03
你好,

你好,

“所有OTP相关系统似乎都关闭了”是什么意思?您是否使用SmartSnippets工具箱读取OTP头文件?

谢谢,PM_Dialog

bobspam@free.fr
离线
最后看到:6个月6天前
加入:2018-06-20 08:07
你好

你好

我正在编写一些板级自测函数使用SDK1.0.14.1081.我没有使用Eclipse。

当使用segger ozone调试代码和尝试您的建议时,我无法访问OTP内存,所以我不得不调用hw_otpc来设置它。我最初以为是sys_man/sys_clock_mgr.c设置了它,但实际上它在引导后被设置为备用,所以我必须在读取数据之前唤醒设备。

文档不够精确。

PM_Dialog
离线
最后看到:1天6小时前
工作人员
加入:2018-02-08 11:03
你好,

你好,

我们推荐使用我们提供的工具。我们的工具支持网站上有详细的文档。就你而言,老实说,我无法理解你想要达到的目标。

谢谢,PM_Dialog