6个职位/ 0个新职位
最后发表
merlin_hung
离线
最后看到:4年11个月前
加入:2016-04-21泰
蓝牙地址烧写问题

你好,希望咨询一下,如果我把蓝牙地址烧入OTP,但运行代码还是烧入外部SPI FLASH,是否还能从SPI FLASH正常启动。如果不能,有没有方法可以实现这种方案。谢谢!

设备:
Jelphi
离线
最后看到:7个月1周前
工作人员
加入:2015-09-10 12:07
嗨,先生

嗨,先生

你是想从flash里面直接执行吗?这个对DA14580是不行的,必须复制到ram里面执行哦

Gongyu_Dialog
离线
最后看到:1周6天前
加入:2016-04-27 07:07
可以的,可以查看函数nvds_read_bdaddr

可以的,可以查看函数nvds_read_bdaddr。如果是580年,上来就会去OTP读。
如果是全0,在函数custom_nvds_get_func里,会去读标签——NVDS_TAG_BD_ADDRESS的内容

merlin_hung
离线
最后看到:4年11个月前
加入:2016-04-21泰
如果已经把蓝牙地址烧入OTP了

如果已经把蓝牙地址烧入OTP了,580年读取OTP时就不会是全0了吧?

内核
离线
最后看到:3年8个月前
加入:2017-04-14 04:35
嗨Gongyu_Dialog,

嗨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注释掉

谢谢

Gongyu_Dialog
离线
最后看到:1周6天前
加入:2016-04-27 07:07
是这样的

是这样的