你好,
我们正在使用基于PAN1740的USB加密狗作为中心。外围由通过I2C连接到音频DSP的BOOST模式的DA14580组成。我们使用的是DSPS代码库,但已将其扩展以容纳两个具有安全性的外围设备。PC上的应用程序与中心交谈,并发出命令以进行扫描,连接,断开连接等,并读取和写入/向外围设备读取数据。外围设备与UART无关。外围设备上使用了延长的睡眠,但中央未使用睡眠。
为了测试设置,我有一个简单的例程,该例程连接到两个外围设备,执行一些读写和写入,断开连接和重复。
我发现一对中的第一个连接通常很快建立(<1s)。第二个连接通常需要更长的时间。我在论坛上其他地方读到的讨论说,这是因为中央正在忙于保持第一个联系,因此有机会“看到”第二个外围的广告包有限。但是,连接到两个外围设备后,如果我断开第一个外围设置,然后尝试重新连接,即使DA14580正在“忙于”维护第二个连接,它也会像以前一样快速连接。在某些情况下,第二个连接尝试只是使用co_error_conn_failed_to_be_est错误而失败。
澄清
- 连接到外围1(这很快)
- 连接到外围2(这需要更长的时间)
- 断开外围1,留下外围2连接
- re-连接到外围1(这与以前一样快)
- 断开外围2,留下外围1连接
- re-连接到外围2(这与以前一样慢)
会发生什么?
其次 - 我发现在重复几次测试例程(〜10-15)后,我在地址0x322BE的中心上看到了一个硬故障。我的地图文件看起来像这样
ke_malloc 0x00032215拇指代码0 rom_symdef.txt绝对
ke_free 0x000322d7拇指代码0 rom_symdef.txt绝对
因此,问题似乎在ke_malloc内。那是对的吗?
经过一些头部刮擦后,我认为主循环中的RWIP_SCHEDUE()可能经常被调用以为队列中的所有事件。如果我的应用程序层代码不是空闲的,则将调用呼叫到app_asynch_proc()以返回true。这将导致主循环不wfi,因此再次调用rwip_schedule()。这已经改善了情况,但问题并没有消失。
我真的很感谢您在哪里寻找的帮助。我希望能使内核分析能够工作,但是定义CFG_DBG会导致许多我似乎无法满足的其他要求。
我的堆分配如下所示
#define reneit_descript_buf 0
#define use_memory_map ext_sleep_setup
#define db_heap_sz 1524
#define env_heap_sz 656
#define msg_heap_sz 2048
#define non_ret_heap_sz 2560
也许下一个观察结果与第一个观察有关或引起 - 我在这里提到以防万一:
当我连接到两个外围设备并断开它们时,第二个断开连接有时会导致co_error_lmp_rsp_timeout报告。这是什么意思?
谢谢,
桑迪普
--------------------------
你好桑德普,
我正在研究您的查询,并会回到您身边。您可以向我们发送该项目,以便我可以查看中央实施。
问候,
LC
感谢您的答复。
请让我知道如何直接将项目发送给您。
同时,当指令在0x322BE时,似乎抛出了硬故障
strh r3,[r2,#0x00]用R2设置为0x83000的保留区域中的地址执行
谢谢,
桑迪普
----------------
你好桑德普,
您可以在支持门户中将项目上传到这里,或者如果您的大小等约束,我可以向您发送一个安全的共享驱动器,供您上传项目文件。在第二种情况下,我需要您的电子邮件地址将链接和详细信息发送到共享驱动器。
问候,
LC
请将到共享驱动器的链接发送到spsira@gmail.com
谢谢,
桑迪普
--------------------------
桑迪普,
请使用此密码作为我在电子邮件中发送给您的链接。
BPUQ63KY
问候,
LC