你好,
我们使用基于pan1740的USB加密狗作为中心。该外设由boost模式的DA14580组成,通过I2C连接到音频DSP。我们正在使用DSPS代码库,但它已经扩展到可以容纳两个具有安全性的外围设备。PC上的应用程序与中央通信并发出扫描、连接、断开等命令,并从外围设备读取和写入数据。外设与UART没有连接。在外围设备上使用延长睡眠,但在中央设备上不使用睡眠。
为了测试这个设置,我有一个简单的例程,它连接到两个外设,执行一些读写操作,断开连接,然后重复。
我发现一对中的第一个连接通常建立得非常快(< 1s)。第二种连接通常需要更长的时间。我在论坛的其他地方读到一个讨论,这是因为中心忙于维护第一个连接,因此它“看到”第二个外围设备的广告包的机会是有限的。然而,在连接两个外设后,如果我断开第一个外设,然后尝试重新连接,即使DA14580正在“忙于”维护第二个连接,它也会像以前一样快速连接。在一些情况下,第二次连接尝试失败,出现CO_ERROR_CONN_FAILED_TO_BE_EST错误。
澄清
-连接到外围设备1(这非常快)
-连接到外围设备2(这需要更长的时间)
—断开1号外设,2号外设连接
-重新连接到外围设备1(这和以前一样快)
—断开外围设备2的连接,保持外围设备1的连接
-重新连接到外围设备2(这和以前一样慢)
会发生什么呢?
其次,我发现在重复测试例程几次之后(~10-15次),我在地址0x322BE的中心上看到一个硬故障。我的地图文件是这样的
ke_malloc 0x00032215 Thumb Code 0 rom_symdef.txt绝对
ro_symdef .txt绝对
因此,问题似乎是在ke_malloc内部。对吗?
经过一些思考后,我认为可能是主循环中的rwip_schedule()调用不够频繁,无法为队列中的所有事件提供服务。我将调用app_asynch_proc()设置为true,如果我的应用程序层代码不是IDLE。这将导致主循环不进行WFI,从而再次调用rwip_schedule()。这大大改善了情况,但问题并没有消失。
如果你能帮我找找哪里,我会很感激的。我希望让内核分析工作,但定义CFG_DBG导致许多其他需求,我似乎不能满足。
我的堆分配如下所示
#定义REINIT_DESCRIPT_BUF 0
#定义USE_MEMORY_MAP EXT_SLEEP_SETUP
#定义DB_HEAP_SZ 1524
#定义ENV_HEAP_SZ 656
#定义MSG_HEAP_SZ 2048
#定义NON_RET_HEAP_SZ 2560
也许下一个观察结果与第一个有关或由第一个引起——我在这里提到它只是以防万一:
当我连接到两个外设并断开它们时,第二次断开有时会导致报告CO_ERROR_LMP_RSP_TIMEOUT。这是什么意思?
谢谢,
Sandeep
-------------
你好Sandeep,
我正在调查你的问题,会回复你。你能把项目发给我们吗,这样我就能看一看中心实施。
问候,
信用证
谢谢你的回复。
请让我知道如何将项目直接发给你。
与此同时,当指令位于0x322BE时,似乎会抛出硬错误
STRH r3, [r2,#0x00]执行,其中r2设置为0x83000以上保留区域中的地址
谢谢,
Sandeep
------------
你好Sandeep,
你可以在支持门户网站上传你的项目,或者如果你有大小等限制,我可以给你一个安全的共享驱动器,让你上传项目文件。在第二种情况下,我需要您的电子邮件地址发送您的链接和共享驱动器的详细信息。
问候,
信用证
请将共享驱动器链接发送至spsira@gmail.com
谢谢,
Sandeep
-------------
Sandeep,
请使用此密码为我在您的邮件中发给您的链接。
BpuQ63kY
问候,
信用证