测试目标板:nrf52840开发板
AAR(Accelerated Address Resolver)加速地址解析器
加速地址解析器是一个加密支持功能,用于实现蓝牙核心规范v4.0中描述的可解析的私有地址解析过程。可解析的私有地址生成应使用ECB实现,而不受AAR的支持。
该程序允许两个共享密钥的设备根据它们的设备地址生成和解决哈希值。按照本章所述配置,AAR模块可以在接收的数据包上实现实时地址解析。这允许使用已知共享密钥列表(在蓝牙中称为身份解析密钥(IRK))进行实时数据包过滤(白名单)。
EasyDMA
EasyDMA是一种易于使用的直接内存访问模块,它允许一些外设实现直接访问数据RAM。这种机制在多种应用中都有显著的优势,例如它可以实现高效的数据传输和处理,减少CPU的介入,从而提高系统的整体性能。
nRF52系列,EasyDMA被用于SPI串行外设(如SPIM和SPIS)中,进行RAM数据与寄存器的传输。此外,它也可以用于ADC接口,通过EasyDMA直接将采样结果保存到RAM,无需外部定时器即可实现连续采样。
AAR(加速地址解析)实现了EasyDMA功能,用于向RAM进行读写操作。当END、RESOLVED和NOTRESOLVED事件被触发时,表示EasyDMA已经完成了对RAM的访问。
如果IRKPTR、ADDRPTR和IRKPTR没有指向数据RAM区域,则EasyDMA传输可能导致硬故障或RAM损坏。
解析可解析地址(Resolving a resolvable address)
解析可解析地址(Resolving a resolvable address)是蓝牙低功耗(Bluetooth Low Energy,BLE)通信中的一个关键步骤。在BLE中,为了增加隐私保护和安全性,设备通常不会直接使用其公共地址进行通信,而是采用可解析的随机地址。这些随机地址可以在一定的时间内变化,从而降低了设备被跟踪和识别的风险。
然而,在某些情况下,比如建立连接或进行特定的数据交换时,接收方需要知道发送方的真实身份。这时,就需要进行地址解析。解析可解析地址涉及使用特定的密钥和算法来将可解析的随机地址转换回其对应的真实地址或设备标识。
在BLE协议中,每个设备通常都会有一个唯一的身份解析密钥(Identity Resolving Key,IRK)。当接收方收到一个可解析的随机地址时,它会使用自己存储的IRK来尝试解析这个地址。如果解析成功,接收方就能确认发送方的身份,并继续后续的通信过程。
这个过程确保了只有拥有正确IRK的设备才能解析出可解析随机地址背后的真实设备,从而增强了通信的安全性和隐私保护。
根据蓝牙核心规范,一个私有的可解析的地址由六个字节组成。
要解析一个地址,必须使ADDRPTR寄存器指向数据包的起始位置。通过触发START任务来启动解析器。当AAR使用IRK数据结构中找到的一个身份解析密钥(IRK)成功解析地址时,会生成一个RESOLVED事件。AAR将从IRK0开始,使用从IRK0到IRK15寄存器中指定的IRK。NIRK寄存器指定了应使用多少个IRK。如果AAR模块无法使用指定的IRK列表解析地址,它将生成一个NOTRESOLVED事件。
IRK(Identity Resolving Key,身份解析密钥)。
AAR(加速地址解析)会遍历IRK数据结构中的可用IRK列表,并根据蓝牙核心规范v4.0 [Vol 3]第10.8.2.3章描述的可解析私有地址解析程序,为每个IRK尝试解析地址。解析地址所需的时间会因可解析地址在列表中的位置而异。此外,其他外设和CPU执行的RAM访问也会影响解析时间。
简而言之,AAR模块会按照IRK列表的顺序尝试使用每个IRK来解析接收到的可解析随机地址。解析过程受到多种因素的影响,包括地址在列表中的位置以及系统中其他活动的干扰。为了获得最佳的解析性能,通常需要优化IRK列表的排序和减少系统中的并发访问冲突。
AAR(加速地址解析)仅将接收到的地址与模块中编程的地址进行比较,而不检查地址的类型。
AAR(加速地址解析)在成功解析地址后或尝试使用IRK数据结构中的NIRK个IRK进行解析后将停止工作。AAR在停止后会生成一个END事件。这意味着AAR模块会按照预设的IRK列表进行地址解析尝试,直到找到匹配的IRK并成功解析地址,或者尝试了所有可用的IRK(最多NIRK个)仍未成功解析为止。一旦解析过程完成,无论成功还是失败,AAR都会发出一个END事件,以通知系统地址解析阶段已经结束。
将数据包预加载到RAM中的地址解析
AAR例子
以下示例展示了如何使用地址解析(AAR)将无线电(RADIO)数据包接收与地址解析进行串联。
AAR(地址解析)可以在无线电(RADIO)接收到AAR所需的6个字节并将其存储在RAM中后立即启动。ADDRPTR指针必须指向数据包的起始位置。
当无线电(RADIO)将数据包加载到RAM中时,可以开始进行地址解析