[nrf51][nrf52] 非静态地址设置白名单,导致程序死机

发布者:未来架构师最新更新时间:2022-08-18 来源: csdn关键字:nrf51  nrf52  白名单  程序死机 手机看文章 扫描二维码
随时随地手机看文章

静态地址规则

这种特定类型的蓝牙地址可作为公共地址的一种流行替代方法,因为使用它无需付费。


随机静态地址可以通过以下两种方式之一使用:


可以在设备的使用寿命内分配和固定它

可以在启动时更改

但是,无法在运行时更改它。


随机静态地址的格式如下:

在这里插入图片描述

随机静态地址格式


1和1固定在最低有效位

剩余的46位由开发人员/制造商随机选择

重要说明:所有蓝牙设备都必须使用以下两种类型之一:公共地址或随机静态地址。

在这里插入图片描述

静态设备地址的特征可总结为:


最高两个 bit 为 “11”。

剩余的 46bits 是一个随机数,不能全部为0,也不能全部为1。

在一个上电周期内保持不变。

下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。如果改变,上次保存的连接等信息,将不再有效。

静态设备地址的使用场景可总结为:

46bits 的随机数,可以很好地解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。

地址随机生成,可以解决公共设备地址申请所带来的费用和维护问题。


/* 确认是否为静态地址

静态设备地址的特征可总结为:

最高两个 bit 为 “11”。

剩余的 46bits 是一个随机数,不能全部为0,也不能全部为1。

在一个上电周期内保持不变。

下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。如果改变,上次保存的连接等信息,将不再有效。

静态设备地址的使用场景可总结为:

46bits 的随机数,可以很好地解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。

地址随机生成,可以解决公共设备地址申请所带来的费用和维护问题

*/


bool mac_addr_is_static(uint8_t *addr)

{

    if ((addr[5] & 0xC0) == 0xC0)

    {

        uint16_t sum = 0;

        for(uint8_t i = 0; i < 6; i++)

        {

            sum += addr[i];

        }

        // 00:00:00:00:00:C0   FF:FF:FF:FF:FF:FF

        if (sum != 0xC0 && sum != 0x5FA)

        {

            return true;

        }

    }

    return false;

}


关键字:nrf51  nrf52  白名单  程序死机 引用地址:[nrf51][nrf52] 非静态地址设置白名单,导致程序死机

上一篇:[nrf51][nrf52] sd_power_gpregret_set 特殊寄存器
下一篇:[嵌入式框架][nrf52820][nrf52840] 硬件USB_HID

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved