当与手机配对时,有时SOC复位:wrap_platform_reset()

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
10个帖子/ 0个新
最后发表
bigheadbaby
离线
最后看到:2年6个月前
加入:2017-12-14 13:52
当与手机配对时,有时SOC复位:wrap_platform_reset()

您好,对话工作人员:
我有一个wrap_platform_reset()的问题,我的客户说有时他连接Soc与手机,Soc将调用wrap_platform_reset()并返回错误代码0xF2F2F2F2
我找到了一些解释:
/*
wrap_platform_reset发生的最明显的原因是由于内存分配失败,这意味着有一个内存泄漏你的西南,你分配数据的地方和你永远不会释放他们(您可以验证在函数的参数错误,应该RESET_MEM_ALLOC_FAIL)。
*/

我检查了堆赋值:
RAM_BSS_1 0 x00815000

* (ke_heap)

ScatterAssert (ImageLength (RAM_BSS_1) < 0 x3000)

这意味着12k用于堆分配。是足够的吗?
如果有内存泄漏在我的sw,它将重置时,malloc触发和更多的堆空间将不会帮助重置问题?
我怎样才能找到它们,什么时候我需要释放这些记忆?实际上这让我很困惑。有没有什么应用笔记可以帮助我理解柯密乐的机理。

谢谢~

设备:
MT_dialog
离线
最后看到:三个月两个星期前
工作人员
加入:2015-06-08 34
嗨bigheadbaby,

嗨bigheadbaby,

关于堆分配,您可以在.map文件中找到为内核消息分配了多少堆(搜索heap_db_area、heap_env_area、heap_msg_area)。0x3000堆非常大,我严重怀疑这是否表明您的堆大小。如果在你的sw中有内存泄漏,你继续分配内存,那么在分配内存时,你将在wrap_platfrom_reset中结束。没有特定的方法来找出内存泄漏在哪里。如果您使用的是ke_malloc为了分配房间,你应该从non_ret_heap分配,你应该自由空间使用ke_free()只要你不需要那个房间并确保所有的消息处理程序返回KE_MSG_CONSUMED为了分配空间被释放。

由于MT_dialog

bigheadbaby
离线
最后看到:2年6个月前
加入:2017-12-14 13:52
亲爱的MT_DIALOG:

亲爱的MT_DIALOG:
谢谢你的解释。
我似乎找到了一些可能的原因,为什么它会导致重置
我们把一些延迟在while(1)主循环,我猜函数rwip_schedule()不能很好地工作......
例如,如果我想用GPIO来完成一个软件的IIC功能,似乎延迟功能会导致复位……这是否意味着我不能在主回路中放入任何延迟动作?
如果我可以,也许我必须关闭消息,这将导致内存泄漏,我猜广告可能会带来一些消息,并最终导致重置。严密的adv action会帮助解决这个问题??是否有任何其他msg可能导致复位时,我没有连接到soc。那么我认为主回路的延迟可能成为可能。
谢谢~ ~ ~

PM_Dialog
离线
最后看到:6小时24分钟前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

你能告诉我为什么你推迟了while(1)吗?有什么具体的原因导致你们增加了延期?请注意,强烈建议不要在此函数中添加任何延迟。原因是schedule_while_ble_on()函数调用rwip_schedule()函数,该函数为所有挂起的消息提供服务。如果你在while(1)中设置一个延迟,这意味着schedule_while_ble_on()也将被延迟,但是队列将继续接收消息,所以调度程序将不得不保留许多消息。因此,您将获得wrap_platform_reset()

谢谢,PM_Dialog

bigheadbaby
离线
最后看到:2年6个月前
加入:2017-12-14 13:52
非常感谢~

非常感谢~
最后,请帮助我理解函数rwip_schedule(), ~~~~~帮助~~~~~
根据我们的软件架构,我会尽量避免延时功能。
我做了一个测试,我现在很确定,如果adv是on,通过我把一个长时间的延迟在1,ke_malloc被定期调用,但rwip_schedule()只能在延迟完成后运行。
但是我认为rwip_schedule()是一个while循环来寻找回调来处理这些消息,
-------------------------------------------
这是否意味着它将完成一次处理所有的消息,或者它不能,这将最终导致内存积累??
-------------------------------------------
如果rwip_schedule()能及时完成所有的消息和释放内存,是否有什么原因会导致这个错误,我只是想了解更多关于KE的schedule机制,如果可以,请提供一些细节给我。如果有PDF注释可以帮助我理解这一点,也请告知我
再次感谢

PM_Dialog
离线
最后看到:6小时24分钟前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

DA14580只在BLE核心处于活动状态以及rwip_schedule()函数执行时调度挂起的消息。消息可以异步地发送到堆栈,但在执行rwip_schedule时将同步地提供服务。在主循环的活动部分中,将通过调用rwip_schedule()授予内核控制权,并且只要需要处理消息和事件,它就会保持控制权。对rwip_schedule()的调用发生在schedule_while_ble_on()中,因为内核要求BLE硬件处于活动状态以处理消息。我强烈推荐你看一看7.2.1主循环回调段UM-B-051: DA14580软件平台参考(SDK5)用户手册。您可以从我们的支持门户网站上找到并下载它。关于你的问题,我不太明白你的意思,你能把你的问题说清楚吗?这个错误还存在吗?

谢谢,PM_Dialog

bigheadbaby
离线
最后看到:2年6个月前
加入:2017-12-14 13:52
谢谢

谢谢
但是我找不到下载这个应用说明的地方,UM-B-051: DA14580软件平台参考(SDK5)用户手册
我点击了你给我的链接,但是只显示了这些信息:

--------------------------------------------------------------
版本日期:20/12/2016
版本号:1.2
教程:

收到更新通知
订阅此页面
最左边列中的主复选框打开或关闭给定的订阅。根据网站的设置,你可能有更多的选择积极订阅 .--------------------------------------------------------------

PM_Dialog
离线
最后看到:6小时24分钟前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

您无法下载它,因为您还没有接受软件许可协议(SLA)然而。请尝试再次下载,并击中将出现从下载的挂锁。在那之后,你将不得不同意许可协议你应该等待,直到你的权限被批准。

谢谢,PM_Dialog

bigheadbaby
离线
最后看到:2年6个月前
加入:2017-12-14 13:52
我仍然不知道去哪里

我仍然不知道在哪里可以找到这个SLA
邮件访问我可以到达这个链接吗?

PM_Dialog
离线
最后看到:6小时24分钟前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

请转到产品DA14580,进入软件和工具。然后尝试下载SDK。在那里你将不得不看到一个挂锁图标-点击,接受协议,你将被授予将SDK访问在几天内。

谢谢,PM_Dialog