CCS CC2640R2 蓝牙配置报告和调试

问题描述

我需要帮助调试 ble 设置。

我有一个使用 simple_peripheral 并且运行良好的项目。这个项目是去年开发的。

我有一个完美运行的十六进制文件。问题是sdk文件没有添加到SVN。我们只保存了 ccs 文件

当我运行新版本时,BLE 不起作用。可以检测到外围设备,但连接后设备断开连接。并且无法从设备读取数据。

该项目使用 RFP Single Ended 和 EXTBIAS。 而且它不使用32kHz晶体。

我怀疑某些 SDK 文件已更改且尚未保存。

项目编译后如何查看设置?该工具是否会生成任何报告?

我正在测试移除了 tdi 和 tdo 引脚的新版电路板。我无法调试这张卡,但是旧的 hex 文件在它上面编程时可以工作,所以这应该不是问题。

解决方法

我在 simple_repipheral 项目上使用 cc2640r2 时出现了相同的症状。

就我而言,它与空闲堆内存有关。该项目可以在不连接任何设备的情况下完美运行,但是当它连接到设备时会使用更多堆内存,并且它会崩溃。如果它连接到设备,那么要使用通知将需要更多的堆。

问题 1:ROV 中的堆调试器在 simple_peripheral 设置下不起作用。为了让 ROV 显示 HeapMem 管理器,HeapMem 必须被激活。

解决方案 1:转至配置文件 (TOOLS>app_ble.cfg)。该文件有一个导入链接:ble_stack_heap.cfg。搜索此文件并将此文件中的代码复制粘贴到 app_ble.cfg 中。然后,您可以修改堆配置。设置 HeapMem (0x81),在 ROV 中调试。

问题 2:BLE 确实与设备建立了稳定的连接。

解决方案 2:调试您的项目。在尝试连接到设备之前和之后调试 HeapMem。连接后评估是否有足够的 HeapMem。

就我而言,连接后没有足够的 HeapMem。因此,我只是释放了更多的堆栈(例如减少任务堆栈)以获得更多可用的堆。这解决了我的问题。