配对失败,在配对请求上设置LE键分布的LINKKEY位。

9个帖子/ 0新
最后一篇
光盘
离线
最后一次露面:3年10个月前
加入:2015-11-18 02:51
配对失败,在配对请求上设置LE键分布的LINKKEY位。

你好,

当DA14583连接到Xperia Android 6.0设备时,我们从DA14583获得“配对失败”。

该问题似乎与配对请求的LE密钥分发的LINKKEY位有关。该位以蓝牙核心规范添加。版本4.2,它是4.0和4.0的保留位。
当我们使用Nexus 6(Android 6.0)测试配对序列时,配对工作良好,因为Nexus 6不使用LinkKey位。(我相信Xperia的实现是对的。因为Xperia公开了它使用版本4.2。)

我认为这个程序是由SDK处理的,所以你可以检查一下吗?
我附上详细信息,所以请你检查一下吗?

此致,
光盘

设备:
Joacimwe.
离线
最后一次露面:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
您应该使用SDK 5.0.3

您应该使用SDK 5.0.3来完全解决此问题。

光盘
离线
最后一次露面:3年10个月前
加入:2015-11-18 02:51
你好joacimwe,

你好joacimwe,

非常感谢您的评论。我已经假设了。
实际上我们使用SDK 5.0.3 ...有什么设置来应用补丁或其他东西吗?
5.0.2和5.0.3之间的差异是什么?它是一个对象部分吗?或c文件?
我认为SMP部分是一个对象部分,所以它嵌入在ROM中作为硬件。修复码包含在patch对象中,不是吗?

补丁对象实际上是如何工作的?我们正在使用OTA解决方案并使用Mkimage工具。使用Patch对象是否有任何重要方法/因素?

对许多问题感到抱歉,但我们确实使用了5.0.3,我认为问题是我们的使用/环境的SDK。

非常感谢你,
光盘

Joacimwe.
离线
最后一次露面:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
如果您使用SDK 5.0.3它

如果您使用SDK 5.0.3它应该直接在没有修改或设置的情况下工作。重要文件是Arch_patch.c和.obj文件。您可以检查修补程序的内容是否有3.0.10.1http://support.dialog-seminiondiondiondiond.com/resource/patch-release-sdk30101。我猜SDK 5.0.2和5.0.3之间的差异看起来相似。

如果您想知道ROM修补程序如何详细运行,您应该查看第2.2节http://support.dialog-semicondiondiond.com/resource/b-002-da14580-applicati ...。基本上,您可以在ROM中替换8个32位单词。但是,通常应该没有理由操作修补程序,因为通常由对话框处理的客户。

您是否尝试过直接运行一些SDK 5.0.3示例,例如邻近应用程序?

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨CD,

嗨CD,

JoacimWe是正确的,它是一个已知的问题,应该在SDK5.0.3中固定。修复程序是ROM代码中的补丁,而不是源代码。如果您使用的是5.0.3,则不应申请任何设置。您还可以找到指示的修补程序并查看(这包括在SDK5中)。

谢谢mt_dialog.

光盘
离线
最后一次露面:3年10个月前
加入:2015-11-18 02:51
你好joacimwe和mt_dialog,

你好joacimwe和mt_dialog,

感谢您的快速回复。
之后,我使用DA14580 Dev-kit和Prox_poporter(自定义为配对)进行测试。它可以与Android 6.0配对。(它可以正确使用Linkkey位。)
我们还检查了5.0.2.1 +修补程序(4个重要文件 - Arch_patch.c和.obj文件)是否适用于da14580 dev-kit和prox_reporter环境。它也很好。
现在我们正在检查RAM和堆用。因为我们的旧项目运作良好,但最近一个不起作用....文件大小变得更大,更大,因此堆或堆栈边距可能不足以处理LinkKey位。我不知道,但它有可能吗?根据LinkKey位使用堆文件的使用情况吗?

非常感谢您的支持。]

最好的,
光盘

Joacimwe.
离线
最后一次露面:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
越来越多的补丁

越来越多的补丁当然占用了更多空间。只有8个单词可以直接修补8个单词也意味着如果有更多的补丁需要不同的补丁方法,则占用更多空间。然而,通常有改善的空间;补丁不是真正优化的。

如果在Arch_patch.c中查看,您将找到以下内容,该修补程序是修复了LinkKey Bit的修补程序:
// 0x00031b95 smpc_check_param.
setword32(patch_addr5_reg,0x00031b94);
setword32(patch_data5_reg,0xb500df05);// smpc_check_param svc 5

在patch_table阵列中的相应条目:
(const uint32_t *)my_smpc_check_param,

基本上意味着ROM SMPC_CHECK_PARAM函数的修补副本被放入了您在项目中链接的一些.obj文件。

您可以以更有效的方式解决问题。收回SDK 5.0.2.1使用的补丁文件。

然后替换此代码:
// 0x0002cb43 smpc_check_pairing_feat.
setword32(patch_addr3_reg,0x0002cb40);
setword32(patch_data3_reg,0xdf03e7f5);// smpc_check_pairing_feat svc 3

使用此代码:

setword32(patch_addr3_reg,0x00031be8);
setword32(patch_data3_reg,0xbd00);// pop {pc}

这就是所需要的,你应该看到这个解决方案的空间比在SDK 5.0.3中所做的那些空间少。
请注意,如果在DA14580上使用中央模式,则SMPC_CHECK_PAIRing_feat修补程序仅重要,我猜您不是。

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨CD,

嗨CD,

我无法看到内存用法与链接键位之间的连接,是的修补程序正在进行更大的文件占用空间,但我看不到它之间的关系和设备的行为。

谢谢mt_dialog.

光盘
离线
最后一次露面:3年10个月前
加入:2015-11-18 02:51
嗨Joacimwe和Mt,

嗨Joacimwe和Mt,

我刚刚假设SDK中的SMP层函数使用Malloc()或使用堆区域分配的内存分配,如果设置了LinkKey位,则堆区或分配区域的使用可能会变大......(这只是我们的猜测..。)现在,我们现在无法重现这个问题,似乎我们错过了测试程序或什么...... 5.0.3运行良好,现在我们看不到任何问题。我们想看看它是如何的......

非常感谢您的伟大支持!

最好的,
光盘