你好,
当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处理的,所以你可以检查一下吗?
我附上详细信息,所以请你检查一下吗?
Best Regards,
光盘
关键词:
设备:
您应该使用SDK 5.0.3来完全解决此问题。
Hello Joacimwe,
非常感谢您的评论。我已经假设了。
实际上我们使用SDK 5.0.3 ...有什么设置来应用补丁或其他东西吗?
5.0.2和5.0.3之间的差异是什么?它是一个对象部分吗?或c文件?
我认为SMP部分是一个对象部分,所以它嵌入在ROM中作为硬件。修复码包含在patch对象中,不是吗?
补丁对象实际上是如何工作的?我们正在使用OTA解决方案并使用Mkimage工具。使用Patch对象是否有任何重要方法/因素?
对许多问题感到抱歉,但我们确实使用了5.0.3,我认为问题是我们的使用/环境的SDK。
非常感谢你,
光盘
如果您使用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示例,例如邻近应用程序?
Hi CD,
JoacimWe是正确的,它是一个已知的问题,应该在SDK5.0.3中固定。修复程序是ROM代码中的补丁,而不是源代码。如果您使用的是5.0.3,则不应申请任何设置。您还可以找到指示的修补程序并查看(这包括在SDK5中)。
谢谢mt_dialog.
Hello Joacimwe and MT_dialog,
感谢您的快速回复。
After that, I tested using DA14580 Dev-kit and prox_peporter(customized to pair). And it can pair with Android 6.0. (It can work with LinkKey bit properly.)
And we also checked whether 5.0.2.1 + patches(4 important files - arch_patch.c and .obj files in 5.0.3) works well or not on DA14580 Dev-kit and prox_reporter environment. It works well too.
Now we are checking RAM and heap usage. Because our old project works well, but recent one doesn't work.... The file size have become bigger and bigger, so heap or stack margin may not be enough to handle LinkKey bit. I don't know, but it it possible? Does usage of heap file change depending on LinkKey bit?
非常感谢您的支持。]
最好的,
光盘
越来越多的补丁course take up more space. The thing that only 8 words can be patched directly also means if there are more patches needed a different patch approach is needed that takes up more space. However there are usually room for improvement; the patches are not really optimized.
如果在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,
That basically means a patched copy of the ROM smpc_check_param function is placed into some .obj file you link in in your project.
您可以以更有效的方式解决问题。收回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修补程序仅重要,我猜您不是。
Hi CD,
我无法看到内存用法与链接键位之间的连接,是的修补程序正在进行更大的文件占用空间,但我看不到它之间的关系和设备的行为。
谢谢mt_dialog.
嗨Joacimwe和Mt,
我刚刚假设SDK中的SMP层函数使用Malloc()或使用堆区域分配的内存分配,如果设置了LinkKey位,则堆区或分配区域的使用可能会变大......(这只是我们的猜测..。)现在,我们现在无法重现这个问题,似乎我们错过了测试程序或什么...... 5.0.3运行良好,现在我们看不到任何问题。我们想看看它是如何的......
非常感谢您的伟大支持!
最好的,
光盘