嗨对话!
我有三个问题!(1)如何仅获取设备ID,而不是BD_Address?(2)如果我从OTP定义读取的BD地址,每次电源都不同?(3)如何获得唯一的BD地址?
谢谢!
你的意思是device_name?如果是,则在启动后,它存储在句柄中。“gapm_get_att_handle(gap_idx_devname)”,“您可以调用函数“attmdb_att_get_value”以获取该值。2.没有。每次开机时,都会从OTP读取设备地址。这是一个固定值。3.地址存储在0x40000024和0x40000028中
嗨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 0x1UINT8_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--)/ *等待* /;
//在读取模式下设置OTPsetword32(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时钟
}
“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”的地址。
你的意思是device_name?如果是,则在启动后,它存储在句柄中。“gapm_get_att_handle(gap_idx_devname)”,“
您可以调用函数“attmdb_att_get_value”以获取该值。
2.没有。每次开机时,都会从OTP读取设备地址。这是一个固定值。
3.地址存储在0x40000024和0x40000028中
嗨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时钟
}
“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”的地址。