你好,希望咨询一下,如果我把蓝牙地址烧入OTP,但运行代码还是烧入外部SPI FLASH,是否还能从SPI FLASH正常启动。如果不能,有没有方法可以实现这种方案。谢谢!
嗨,先生
你是想从flash里面直接执行吗?这个对DA14580是不行的,必须复制到ram里面执行哦
可以的,可以查看函数nvds_read_bdaddr。如果是580年,上来就会去OTP读。如果是全0,在函数custom_nvds_get_func里,会去读标签——NVDS_TAG_BD_ADDRESS的内容
如果已经把蓝牙地址烧入OTP了,580年读取OTP时就不会是全0了吧?
嗨Gongyu_Dialog,
DA14580 SDK 5.0.4里nvds_read_bdaddr函数是这样定义的:
静态__inline void nvds_read_bdaddr(void){#if define (__DA14583__) && !(BDADDR_FROM_DA14583_FLASH_DISABLED)//首先从DA14583的内部SPI flash中读取BD地址//如果flash中没有找到BD地址,则尝试从OTP中读取BD地址如果(! nvds_read_bdaddr_from_da14583_flash ())# endif{//从OTP中检查并读取BD地址nvds_read_bdaddr_from_otp ();}}
这里只有在定义了14583的时候才会从Flahs中读,不然的话就去OTP里读。我没有看到自定义读蓝牙地址的函数
问题1:在产品开发中,我们用常量struct nvds_data_struct nvds_data_storage __attribute__(((“nvds_data_storage_area”))节)这个结构体来定义蓝牙地址我看到这个变量实际上是直接被存储到了Sys 0 x2000 RAM中,这0340个地址上(根据散射文件),我想知道,代码是如何把这个内存地址上的蓝牙地址设置到寄存器里的。
问题2:根据文档“使用SUOTA_0 - b - 010”的描述,在spi Flash中,地址0 x1f000这个位置上的产品标题也有BD_addr的定义,我猜这个是在量产中不使用OTP时蓝牙地址的存放位置,但是我没有看到代码和文档中有相关的介绍,应该如何使产品用头来设置蓝牙地址
问题3:在实际的量产中,不需要再使用nvds_data_storage这个变量定义的蓝牙地址,我是否需要把da4580_config_advenced.h文件中CFG_INITIALIZE_NVDS_STRUCT注释掉
谢谢
是这样的
嗨,先生
你是想从flash里面直接执行吗?这个对DA14580是不行的,必须复制到ram里面执行哦
可以的,可以查看函数nvds_read_bdaddr。如果是580年,上来就会去OTP读。
如果是全0,在函数custom_nvds_get_func里,会去读标签——NVDS_TAG_BD_ADDRESS的内容
如果已经把蓝牙地址烧入OTP了,580年读取OTP时就不会是全0了吧?
嗨Gongyu_Dialog,
DA14580 SDK 5.0.4里nvds_read_bdaddr函数是这样定义的:
静态__inline void nvds_read_bdaddr(void)
{
#if define (__DA14583__) && !(BDADDR_FROM_DA14583_FLASH_DISABLED)
//首先从DA14583的内部SPI flash中读取BD地址
//如果flash中没有找到BD地址,则尝试从OTP中读取BD地址
如果(! nvds_read_bdaddr_from_da14583_flash ())
# endif
{
//从OTP中检查并读取BD地址
nvds_read_bdaddr_from_otp ();
}
}
这里只有在定义了14583的时候才会从Flahs中读,不然的话就去OTP里读。
我没有看到自定义读蓝牙地址的函数
问题1:
在产品开发中,我们用常量struct nvds_data_struct nvds_data_storage __attribute__(((“nvds_data_storage_area”))节)这个结构体来定义蓝牙地址
我看到这个变量实际上是直接被存储到了Sys 0 x2000 RAM中,这0340个地址上(根据散射文件),我想知道,代码是如何把这个内存地址上的蓝牙地址设置到寄存器里的。
问题2:
根据文档“使用SUOTA_0 - b - 010”的描述,在spi Flash中,地址0 x1f000这个位置上的产品标题也有BD_addr的定义,我猜这个是在量产中不使用OTP时蓝牙地址的存放位置,
但是我没有看到代码和文档中有相关的介绍,应该如何使产品用头来设置蓝牙地址
问题3:
在实际的量产中,不需要再使用nvds_data_storage这个变量定义的蓝牙地址,我是否需要把da4580_config_advenced.h文件中CFG_INITIALIZE_NVDS_STRUCT注释掉
谢谢
是这样的