配对失败,在配对请求上设置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.
离线
最后一次露面:1年5个月前
上师
加入: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.
离线
最后一次露面:1年5个月前
上师
加入:2014-01-14 06:45
如果你用的是sdk5.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个月1周前
职员
加入: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
你好,乔西姆和迪奥拉先生,

你好,乔西姆和迪奥拉先生,

感谢您的快速回复。
在那之后,我使用DA14580开发工具包和prox\u peporter(定制成对)进行了测试。它可以与android6.0配对(它可以与LinkKey位正常工作。)
我们还检查了5.0.2.1+修补程序(5.0.3中的4个重要文件-arch\u patch.c和.obj文件)在DA14580开发工具包和prox\u reporter环境中是否正常工作。效果也不错。
现在我们正在检查RAM和堆的使用情况。因为我们以前的项目做得很好,但最近的一个不起作用。。。。文件大小变得越来越大,所以堆或堆栈边距可能不足以处理LinkKey位。我不知道,但有可能吗?堆文件的使用是否会因LinkKey位的不同而改变?

非常感谢您的支持。]

最好的,
光盘

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

越来越多的补丁当然占据了更多的空间。只有8个单词可以直接修补,这也意味着如果需要更多修补程序,则需要一种占用更多空间的不同修补方法。然而,通常有改进的余地;补丁并没有真正优化。

如果在Arch_patch.c中查看,您将找到以下内容,该修补程序是修复了LinkKey Bit的修补程序:
//0x00031b95 smpc检查参数
setword32(patch_addr5_reg,0x00031b94);
SetWord32(补丁数据5寄存器,0xb500df05)//smpc检查参数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\u ADDR3\u REG,0x0002cb40);
SetWord32(补丁数据3寄存器,0xdf03e7f5)//smpc检查配对功能svc 3

使用此代码:

SetWord32(PATCH\u ADDR3\u REG,0x00031be8);
SetWord32(PATCH_DATA3_REG,0xbd00);//流行音乐{pc}

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

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入: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运行良好,现在我们看不到任何问题。我们想看看它是如何的......

非常感谢您的伟大支持!

最好的,
光盘