如何获得唯一的设备ID?

4个帖子/ 0新
最后一篇
水溪
离线
最后一次露面:4年8月前
加入:2014-09-18 07:00
如何获得唯一的设备ID?

嗨对话!

我有三个问题!
(1)如何仅获取设备ID,而不是BD_Address?
(2)如果我从OTP定义读取的BD地址,每次电源都不同?
(3)如何获得唯一的BD地址?

谢谢!

设备:
Gongyu_dialog.
离线
最后一次露面:14小时前5天
加入:2016-04-27 07:07
你的意思是device_name?

你的意思是device_name?如果是,则在启动后,它存储在句柄中。“gapm_get_att_handle(gap_idx_devname)”,“
您可以调用函数“attmdb_att_get_value”以获取该值。
2.没有。每次开机时,都会从OTP读取设备地址。这是一个固定值。
3.地址存储在0x40000024和0x40000028中

水溪
离线
最后一次露面:4年8月前
加入:2014-09-18 07:00
嗨gongyu_dialog

嗨gongyu_dialog
关于第二个问题,我发现每次电源都有不同。我应该定义app_boot_from_otp它实际上从spi闪存引导吗?但如果我undef app_boot_from_otp和所有da14580设备的bd地址相同,就像0x13 0x89 0x67 0x45 0x23 0x01?
void nvds_read_bdaddr_from_otp()
{
const uint16_t bdaddr_offset = 0x7fd4;//在OTP标题中偏移BD地址
#ifndef app_boot_from_otp.
int cnt = 100000;
#define xpmc_mode_mread 0x1
UINT8_T * OTP_BDADDR =(UINT8_T *)0x40000 + BDADDR_OFFSET;//在OTP标题中是BDAddr

setbits16(clk_amba_reg,otp_enable,1);//启用OTP时钟
while(getword16(ana_status_reg)&ldo_otp_ok​​)!= ldo_otp_ok​​ && cnt--)
/ *等待* /;

//在读取模式下设置OTP
setword32(otpc_mode_reg,xpmc_mode_mread);
# 别的
UINT8_T * OTP_BDADDR =(UINT8_T *)0x20000000 + BDADDR_OFFSET;//在OTP标题中是BDAddr
#endif // app_boot_from_otp

Memcpy(&dev_bdaddr,otp_bdaddr,sizeof(dev_bdaddr));
setbits16(clk_amba_reg,otp_enable,0);//禁用OTP时钟

}

Gongyu_dialog.
离线
最后一次露面:14小时前5天
加入:2016-04-27 07:07
“app_boot_from_otp”是

“app_boot_from_otp”与cfg_boot_from_otp有关。如果定义,则表示引导过程从OTP开始。OTP代码将复制到SRAM从0x20000000开始。

如果从Flash直接启动,请不要定义CFG_BOOT_FROM_OTP。

关于函数“NVDS_READ_BDADDR_FROM_OTP”,如果没有涉及OTP引导过程,则会尝试从OTP(0x7fd4)中获取地址。
并将地址值复制到“dev_bdaddr”。

稍后函数“custom_nvds_get_func”将用于获取BD地址。如果“dev_bdaddr”有零,则将调用“nvds_get_func”以获取“const struct nvds_data_struct nvds_data_storage”的地址。