7 posts / 0 new
Last post
songsayit
Offline
Last seen:3 years 3 months ago
Joined:2016-05-31 13:35
使用spi写mac地址后, SUOTA升级不了

功能需求:
由于我每个ble板子要使用不同的MAC地址, 因此我将mac地址写到flash的0x1f100, 然后再通过spi读取出来, 赋值给dev_bdaddr, 这样就能显示我写的MAC地址了.
那么现在问题来.
问题描述:
我无法使用手机进行ota升级了. 如果我不是使用spi去读取, 直接调用sdk里的nvds_read_bdaddr_from_otp, 那么ota升级就很正常.

请麻烦帮我解决一下ota升级问题.

Device:
songsayit
Offline
Last seen:3 years 3 months ago
Joined:2016-05-31 13:35
我这边解决了. 原来是spi 管脚被释放了.

我这边解决了.
原来是spi 管脚被释放了.

index219
Offline
Last seen:1 year 2 months ago
Joined:2016-05-23 07:00
你好,我现在也在尝试修改MAC地址,但我操作不成功,

你好,我现在也在尝试修改MAC地址,但我操作不成功,
我直接写的寄存器
SetWord32(BLE_BDADDRL_REG,co_read32p(&bd[0]));
SetWord16(BLE_BDADDRU_REG,co_read16p(&bd[4]));
请问下你是怎么操作的?
你说的赋值给dev_bdaddr?是在开机初始化的时候操作的么?
非常感谢!

Gongyu_Dialog
Offline
Last seen:2 days 18 hours ago
Joined:2016-04-27 07:07
代码上电的时候,工程都会调用custom_nvds_get

代码上电的时候,工程都会调用custom_nvds_get_func去读蓝牙地址。查看代码,如果dev_bdaddr是0(co_null_bdaddr是全0地址),那么就会去调用rom里的函数nvds_get_func去读结构nvds_data_storage里的内容。否则,就直接把dev_bdaddr当作实际的地址。

开机后,我想只要加在代码void rwble_init(void)里的lld_init(false)之前就可以。

更方便的办法,如果不涉及OTP的应用,打开宏CFG_INITIALIZE_NVDS_STRUCT,在生成的bin文件里直接找到写的默认地址字段,直接改就可以。

index219
Offline
Last seen:1 year 2 months ago
Joined:2016-05-23 07:00
非常感谢,直接在BIN文件中修改mac地址的方法

非常感谢,直接在BIN文件中修改mac地址的方法,我已经明白,等批量工具做好了,再使用这方法。
“加在代码void rwble_init(void)里的lld_init(false)之前就可以”,实际我测试了下不行,我试着添加到rwble_init()之前,srand(1);之后,便可以了。
Gongyu_Dialog,还有一个之前的问题,你说MAC唯一地址是要向SIG组织申请,我们前期用量不是很大,我查阅了一些资料,说很多蓝牙厂商都有自己申请过,请问dialog是否可以提供一小段MAC地址,在我们产品正式上市的时候。

Gongyu_Dialog
Offline
Last seen:2 days 18 hours ago
Joined:2016-04-27 07:07
关于地址提供,dialog应该没有这样的支持

关于地址提供,dialog应该没有这样的支持。要不你就用随机的地址应该也可以。

“加在代码void rwble_init(void)里的lld_init(false)之前就可以”,实际我测试了下不行”
//SDK3.0.110里,宏BLE_HOST_PRESENT打开的,所以rwip_init函数默认是空的,走不进去了。

index219
Offline
Last seen:1 year 2 months ago
Joined:2016-05-23 07:00
非常感谢,我现在调试就是用6字节的随机数充当MAC地址的

非常感谢,我现在调试就是用6字节的随机数充当MAC地址的,那最后产品上市的时候,在想办法购买把。