This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] CC2640R2F:SIMPLELINK-CC2640R2-SDK_BLE3已知问题和修复

Guru**** 657930 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/770333/faq-cc2640r2f-simplelink-cc2640r2-sdk_ble3-known-issues-and-fixes

器件型号:CC2640R2F

IAR +自动调整堆大小权变措施  

此权变措施适用于所有使用 BLE(5)-Stack + TI-RTOS 运行时对象查看器(ROV)的 IAR  以及 OSAL heapmgr 和自动调整大小的情况。

请注意、CCS 的 ROV2不受影响。 此问题不会影响 cc13x2_26x2 SDK 3.30和更高版本。 该变通办法还将修复 CC2640R2的 BLE5-Stack。

 

如果遇到以下错误、  

"C:/ti/xdctools_x_xx_xx_xx_core/packages/xdc/rov/StructureDecoder.xs "、
第518行:java.lang.exception:target memory read failed at address:(java.lang.exception:目标内存读取失败,
,length:32根据,此读取位于无效地址
应用的剖面图。 应用程序可能未初始化或
损坏。" 

可以通过将以下文件夹的内容解压缩到 SDK 内的 kernel\tirtos\packages 来解决该问题

/cfs-file/__key/communityserver-discussions-components-files/538/iar_5F00_rov_5F00_server.zip

 

simplelink_cc2640r2_sdk_3_30_00_20

1. 从未清除[BTool 已发现的设备列表

2、 当 RSSI 低于-60时、ToF 主/从可能不同步

3、 TOF 在连接间隔大于1秒时不稳定

4. 使用天线阵列2时,角度性能不稳定

5. AoA 角度计算以低角度(0-10度)偏离

6. 缓存为 RAM 应用程序的多角色无法与8个设备配对

7. 当本地 irk 全为零时、不会在地址分辨率超时时时重新生成对等器件的 RPA

8. 使用安全 BLE 连接在不安全的片上 OAD 期间收到 RESET 命令后、CC2640R2 OAD 目标会引导至用户应用程序

9. 启用特定的片外映像对 CC2640R2无效

10. 恢复为不适用于 CC2640R2片外 OAD 的出厂映像

11. BIM 在不使用安全 OAD 时保留额外的闪存页

12. 简单观察者:在发现过程中取消发现收到错误并需要重置电路板

13. 当数据长度更新与 L2CAP 数据包组合时、L2CAP 重新组合在某些情况下失败

14. L2CAP 面向连接的通道在多角色配置中不可用

15. 尝试并发 LE Secure Connections 配对时,同时连接的数量可能会受到限制

16. 启用非连接的广播时,多角色错误地设置了 gapRole_AdvEnabled。

 

simplelink_cc2640r2_sdk_3_20_00_21

在 simple_peripheral 中、更改广播间隔、从器件延迟... 参数不会立即生效

要解决此问题,请在 init 函数中的所有 xxx_SetParam 后面移动 GAPRole_StartDevice()。

2. 当本地 irk 全为零时、不会在地址解析超时时重新生成对等设备的 RPA

 3.简单观察:在发现过程中取消发现收到错误并需要重置电路板

4. L2CAP 面向连接的通道在多角色配置中不可用

5. 尝试并发 LE Secure Connections 配对时,同时连接的数量可能会受到限制

6. 启用非连接的广播时,多角色错误地设置了 gapRole_AdvEnabled。

7. 当不使用安全 OAD 时,BIM 会保留额外的闪存页

8. 使用安全 BLE 连接在不安全的片上 OAD 期间收到 RESET 命令后、CC2640R2 OAD 目标会引导至用户应用程序

9. 恢复为不适用于 CC2640R2片外 OAD 的出厂映像

10. 使用看门狗时,TI ROV 将显示一个未初始化的任务对象。 这是预期的。 请访问 https://e2e.ti.com/support/processors/f/791/p/827739/3061540。

simplelink_cc2640r2_sdk_3_10_00_15

在 simple_peripheral 中、更改广播间隔、从器件延迟... 参数不会立即生效

要解决此问题,请在 init 函数中的所有 xxx_SetParam 后面移动 GAPRole_StartDevice()。

simplelink_cc2640r2_sdk_2_40_00_32

1.在  工程0中禁用 uartlog (xUARTLOG_ENABLE)时、工程不会编译

要解决此问题、请在中添加以下内容:button_service.c、led_service.c、data_service.c

//不要 ifdef 保护这一点,只包括正常内容。
// UartLog.h 已在未定义 UARTLOG_ENABLE
#include 时处理删除日志 

2.在 simple_peripheral 中、更改广播间隔、从器件延迟... 参数不会立即生效

要解决此问题,请在 init 函数中的所有 xxx_SetParam 后面移动 GAPRole_StartDevice()。

simplelink_cc2640r2_sdk_2_30_00_28

1.在  工程0中禁用 uartlog (xUARTLOG_ENABLE)时、工程不会编译

要解决此问题、请在中添加以下内容:button_service.c、led_service.c、data_service.c

//不要 ifdef 保护这一点,只包括正常内容。
// UartLog.h 已在未定义 UARTLOG_ENABLE
#include 时处理删除日志 


simplelink_cc2640r2_sdk_2_20_00_49

1.当我在  预定义符号中使用 CC2640R2DK_5XD /CC2640R2DK_4XS 时、工程将无法编译。如何解决此问题?

答: 遗憾的是、5XD /4XS 的电路板文件未相应更新、将在下一版本中修复。 可通过将  simplelink_cc2640r2_sdk_2_20_00_49\source\ti\blestack\boards\CC2640R2DK_4XS (5xD)\CC2640R2DK_4XS (5xD).c 中的 RFCC26XX_hwAttrs 部分替换为以下代码来解决此问题。

const RFCC26XX_HWAttrsV2 RFCC26XX_hwAttrs ={
.hwiPriority =~0、 /*最低 HWI 优先级*/
.wiPriority = 0、 /*最低 SWI 优先级*/
.xoscHfAlwaysNeeded = true、 /*在 stanby 中保持 XOSC 依赖性*/
globalCallback =空、 /*无特定于电路板的回调*/
globalEventMask = 0 /*未订阅事件*/
}; 

simplelink_cc2640r2_sdk_1_50_00_58

 1.当我 在预定义符号中添加 CC2640R2DK_5XD 时、工程不会编译。如何解决此问题?

答: 您可以将 cc2650em 文件夹从 simplelink_cc2640r2_sdk_1_40_00_45 -->源码--> ti --> blestack -->目标复制到 simplelink_cc2640r2_sdk_1_50_00_58中的相应结构。

simplelink_cc2640r2_sdk_1_40_00_45

1.无法禁用 multi_role 上的非连接广播。

要解决此问题、请在 multi.c 上、在收到 GAP_make_Discovery_don_event 时注释 gapRole_AdvEnabled 的分配为 true。

//如果
(pMsg->opcode =gap_make_Discovery_doad_event)
{
//gapRole_AdvEnabled = true、
}则开始广播 

在应用程序项目上启用 PTM 时、必须对文件"iCall_HCI_tl.c"进行修改、以允许使用 PTM 和 GAPBondMgr。

在 iCall_HCI_tl.c:482之后添加以下内容

#Elif defined (HCI_TL_PTM)

#if defined (GAP_BUK_Mgr)
uint32_t host_tl_defaultPasscode;
// Passcode。
静态空 host_tl_passcodeCB (uint8_t * deviceAddr、uint16_t connectionHandle、
uint8_t uiInputs、uint8_t uiOutputs);
//绑定管理器回调
静态 const gapBondCBs_t host_tl_bondCB =
{
(pfnPasscodeCB_t) host_tl_passcodeCB、//回调代码
NULL //配对状态回调
};

#endif //gap_bond_Mgr

静态 hciEntry_t hciTranslationTable[]= 

3.在应用程序项目上启用 PTM 时- HCI_TL_Init API 已更改,请替换应用程序代码中对 HCI_TL_Init 的调用。

例如、在 simple_peripheral.c 和 SimpleBLEPeripheral_init 中、替换'HCI_TL_Init (NULL、(HCI_TL_CommandStatusCB_t) SBP_sendToNPI、 自实体);'

使用

//注册命令状态信息
HCI_TL_Init (NULL、(HCI_TL_CommandStatusCB_t) SBP_sendToNPI、NULL、self实体); 

simplelink_cc2640r2_sdk_1_35

使用 IAR EWARM IDE 7.80.3时、绑定的器件重新连接时、CCCD 未更新

要解决此问题、对 gattservapp_util.c 中的 GATTServApp_ProcessCCCWriteReq 进行去优化可解决此问题。 通过在函数声明上方插入以下代码来取消优化:

#pragma optimize=none
bStatus_t GATTServApp_ProcessCCCWriteReq (uint16 connHandle、gattAttribute_t *pAttr、 

使用观测器和广播设备构建配置进行链接时出错

在使用 build_config.opt 设置构建堆栈项目以使用观测器和广播设备库时、链接将失败。

换句话说、将 HostConfig 设置为-DHOST_CONFIG=Broadcaster _CFG+观测 器_CFG 将不会成功构建堆栈。

要获得扫描和广播功能、请使用

-DHOST_CONFIG=PERIODIL_CFG+观测 器_CFG 
-DHOST_CONFIG=CENTRAL_CFG+Broadcaster _CFG 
-DHOST_CONFIG=PERIODIL_CFG+CENTRAL_CFG 

3.与丢失绑定密钥的对等设备重新配对时崩溃

要解决此问题,请在堆栈项目中修改 gapbondmgr.c 中的 gapBondMgrAddBond 和 gapBondMgrErasebonding 函数,以使用 KEYLEN,而不是 osal_sv_read 中的 sizeof (smIdentityInfo_t),如下所示

//在尝试
将之前的绑定从控制器的解析列表中删除之前,验证它是否有 irk。

if ((osal_SNV_read (devIRKNvID (bondIdx)、KEYLEN、oldIrk)== Success)&&
(OSAL_isbufset (oldIrk、0xFF、KEYLEN)== false)) 

simplelink_cc2640r2_sdk_1_30

1.与丢失绑定密钥的对等设备重新配对时崩溃

要解决此问题,请在堆栈项目中修改 gapbondmgr.c 中的 gapBondMgrAddBond 和 gapBondMgrErasebonding 函数,以使用 KEYLEN,而不是 osal_sv_read 中的 sizeof (smIdentityInfo_t),如下所示

//在尝试
将之前的绑定从控制器的解析列表中删除之前,验证它是否有 irk。

if ((osal_SNV_read (devIRKNvID (bondIdx)、KEYLEN、oldIrk)== Success)&&
(OSAL_isbufset (oldIrk、0xFF、KEYLEN)== false))