2 posts / 0 new
Last post
ustbzhangm
Offline
Last seen:5 months 1 week ago
加入:2015-08-24 07:50
如何动态更新MAC地址呢

您好!
我想通过串口将我希望的MAC地址发送给14580,然后保存在外部SPI flash中,下次启动的时候就使用新的MAC地址。
请问,我上述想法可以实现吗?我没有找到14580是在哪里读取MAC地址的,
麻烦给我一个思路,谢谢!

Device:
Gongyu_Dialog
Offline
Last seen:1 day 5 hours ago
加入:2016-04-27 07:07
蓝牙上电获取地址的步骤如下,因为有些涉及罗的代码

蓝牙上电获取地址的步骤如下,因为有些涉及罗的代码,流程如下:

找到system_init函数
1. 580上电首先会从OTP里去读地址存到dev_bdaddr,函数流程nvds_read_bdaddr->nvds_read_bdaddr_from_otp
2. rwip_init函数,这个函数因为BLE_HOST_PRESENT定义了,所以跑的是ROM里的版本,不是SDK里的同名函数。
3. 在rwip_init函数里面,会调用到rwble_init->lld_init(false) //false代表不需要reset
4.lld_init函数会调用jump_table_base里的lld_init_func函数
5.lld_init_func里面会调用nvds_get函数去拿NVDS_TAG_BD_ADDRESS里的蓝牙地址。获取的地址就是最后设备会用到的地址。
nvds_get对应SDK代码里的jump_table里的custom_nvds_get_func。
6.custom_nvds_get_func函数里面,查看关于NVDS_TAG_BD_ADDRESS部分。co_null_bdaddr为全0地址。
如果dev_bdaddr里是全0,则调用nvds_get_func函数(ROM固化函数)去拿SDK里面nvds_data_storage结构里的地址。(在nvds.c文件里)
如果不是0,则dev_bdaddr就是实际获取的地址。

所以你的问题,我想你可以修改custom_nvds_get_func里标签NVDS_TAG_BD_ADDRESS里的内容来实现。这样就跳过nvds.c里的nvds_data_storage结构里的地址信息了。