跳过主要内容

Security_get_unique_device_id () - sw停止

DA1468x

1年前

发布的bobspam@free.fr50分 6个回答
0的问题

你好

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

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

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

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

先谢谢你

致以最亲切的问候

1年前

PM_Dialog

你好,

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

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

职位/包装:0x07F8EA00 - 0x07F8EA07

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

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

谢谢,PM_Dialog

1年前

bobspam@free.fr 50分

你好

谢谢你的第一个回答。所有与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(空白)

???

先谢谢你

致以最亲切的问候

1年前

bobspam@free.fr 50分

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

1年前

PM_Dialog

你好,

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

谢谢,PM_Dialog

1年前

bobspam@free.fr 50分

你好

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

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

文档不够精确。

1年前

PM_Dialog

你好,

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

谢谢,PM_Dialog