ezserial固件通过OTA升级到自己的版本,发现mac地址改变了

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
YaTr_3516311
Level 5
Level 5
25 sign-ins First solution authored 100 replies posted

Hi,

我这边有个蓝牙模块,本身自带的是ezserail的固件。然后我通过其OTA的功能,升级了一下,升级成了我们自己的版本(我们会把版本号打印出来,如截图)。但是发现每次重新上电,打印出来的这个local bluetooth address的地址都会变掉,请问是什么原因导致的?蓝牙的mac地址是存在ss的地方的吗?照理说OTA完,应该不会变啊

pastedImage_1.png

0 点赞
1 解答
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

从文件中烧录MAC地址的确是储存在SS section。但是EZ-Serial的mac地址是在application中使用随机数重新生成的,在烧写完成之后,第一次上电的时候,利用随机数发生器产生一个随机地址。而且EZ-Serial是在比较老的SDK版本上开发的,所以在用其他的代码进行OTA之后,可能会有MAC地址变化的问题。

module烧录工具中设置地址使用的方法是修改hex文件,所以是存储在SS section中。

建议您那边先给设备烧录一个自己的application,之后在这个application上进行OTA操作。

在原帖中查看解决方案

0 点赞
10 回复数
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

请检查下application中是否使能了RPA功能:wiced_bt_ble_enable_privacy ( WICED_TRUE );

0 点赞

1. 如果用了这个接口函数,我记得只会影响advertising的时候时候,master scan这个设备的地址,会有变化。 read_local_addr读取的数据也会受到影响吗?

2.我的code里没有使用wiced_bt_ble_enable_privacy ( WICED_TRUE )

pastedImage_0.png

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

请问是每次重新上电地址都会变化还是只有OTA之后第一次才会变化?

读取地址的时候能否将地址类型打印出来看一下?

0 点赞

1. 每次重新上电,会变化

2. 怎么将地址类型打印出来?wiced_bt_dev_read_local_addr函数只有一个地址参数啊

0 点赞

这个问题看的如何了,今天我们的客户会问及,希望能尽快给与回答

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

请问你是否试过直接将OTA的工程烧录进去,每次上电地址是否会变化?

我这边使用OTA的demo测试了一下,没有复现这个问题。

0 点赞

1. 我是这么测试的。首先设备里有一个ezserail的官方固件,然后就ota到我的demo版本(这个版本是通过WICED-Studio 6.2的工具编译出来的)然后就发现每次上电,mac地址就变了(mac地址是根据如下接口函数获取。我的demo版本没有调用enable_privacy的接口函数

            /* Bluetooth is enabled */

            wiced_bt_dev_read_local_addr(bda);

            WICED_BT_TRACE("Local Bluetooth Address: [%B]\r\n", bda);

2. 针对mac地址变化的问题,我做几次实现。发现

1) 把ezserail固件通过WICED_MOD_Programmer.exe固件写入,如果写入的时候选择了 address setting,然后再ota到我的demo版本(通过WICED-Studio 6.2的工具编译出来),那么重新上电后mac地址就不会改变;如果未选择,那么每次上电就会改变

pastedImage_0.png

2)ezserail固件通过WICED_MOD_Programmer.exe固件写入(未选择address setting),ota到我的demo版本(同一个demo版本code,一个是通过6.2的WICED-Studio编译出来的,一个是通过6.4编译出来的),6.4编译出来的版本就不会有mac地址变化的情况

3)ezserail固件通过WICED_MOD_Programmer.exe固件写入(未选择address setting),ota到hellosensor的话没有mac地址的问题

4)mac地址是存在ss的地方吗?ota的时候理论上是不会修改ss地址的值还是会修改的?

pastedImage_6.png

希望尽快给与建议及解决方案

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

从文件中烧录MAC地址的确是储存在SS section。但是EZ-Serial的mac地址是在application中使用随机数重新生成的,在烧写完成之后,第一次上电的时候,利用随机数发生器产生一个随机地址。而且EZ-Serial是在比较老的SDK版本上开发的,所以在用其他的代码进行OTA之后,可能会有MAC地址变化的问题。

module烧录工具中设置地址使用的方法是修改hex文件,所以是存储在SS section中。

建议您那边先给设备烧录一个自己的application,之后在这个application上进行OTA操作。

0 点赞

所以您的意思是不建议在ezserail的固件上进行OTA?

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

是的,建议您在自己程序的基础上进行OTA升级。

0 点赞