SOC有时重置有时与手机配对:WRAP_PLATFORM_RESET()

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

你好亲爱的对话人员:
我有一个问题关于wrap_platform_reset(),我的客户说,有时他用手机连接soc,soc会调用wrap_platform_reset()并返回错误代码0xf2f2f2f2
我找到了一些解释:
/ *
WRAP_PLATFORM_RESET的最明显原因发生是由于内存分配故障,这意味着您的SW中存在内存泄漏,您将在某处分配数据,并且您永远不会释放它们(您可以在函数的参数错误中释放它们,应该是reset_mem_alloc_fail)。
*/

我检查了堆赋值:
RAM_BSS_1 0 x00815000

* (ke_heap)

ScatterAssert (ImageLength (RAM_BSS_1) < 0 x3000)

这意味着12k用于堆分配。是足够的吗?
如果我的sw中有内存泄漏,当malloc被触发时,它将重置,更多的堆空间将无助于重置问题?
我怎样才能找到他们,什么时候我需要释放这些记忆?其实这让我很困惑。有什么应用笔记可以帮助我了解ke melloc机制。

谢谢~

设备:
MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入: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年8个月前
加入:2017-12-14 13:52
亲爱的MT_DIALOG:

亲爱的MT_DIALOG:
谢谢你的解释。
我似乎发现了一些可能的原因,为什么它会导致重置
我们把一些延迟放在while(1)主循环,我猜函数rwip_schedule()不能很好地工作......
例如,如果我想使用GPIO来实现软件IIC功能,似乎延迟功能会导致复位…这是否意味着我不能在主循环中放置任何延迟操作?
如果我可以,也许我必须关闭将引起内存搭接的消息,我猜广告可能会周期性地带来一些消息,最终会产生重置。关闭adv行动将有助于这个问题?当IM未连接到SoC时,是否有其他消息可能会导致重置。然后我认为主循环中的延迟可能是可能的。
谢谢~~~

PM_Dialog
离线
最后看到:32分钟27秒前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

你能让我知道为什么你延迟进入(1)?是否有任何特定的原因为什么添加延迟?请注意,强烈建议不要将任何延迟添加到此功能中。原因是schedule_hille_ble_on()函数调用RWIP_Schedule()函数,该函数用于所有挂起的消息。如果您延迟进入(1),这意味着Schedule_hille_ble_on()也将被延迟,但队列将继续接收邮件,因此调度程序将必须保留其中许多。结果,您将获得Wrap_platform_reset()

谢谢,PM_Dialog

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

非常感谢〜
最后,请务必帮助我理解函数rwip_schedule(), ~~~~~ help ~~~~~
根据我们的软件架构,我将尽力避免延迟功能。
我已经完成了测试,我现在确保如果ADV是开启,通过我延迟延迟1,ke_malloc会定期调用但rwip_schedule()只能在延迟完成后运行。
但是我认为rwip_schedule()是一个while循环来找到回调来处理这些msg,
-------------------------------------------
是一次处理完所有的信息,还是一次处理不完,最终导致内存累积?
-------------------------------------------
如果rwip_schedule()能够及时完成所有的消息并释放内存,是否有什么原因会导致这个错误,我只是想了解更多关于KE schedule的机制,如果可以请提供一些详细信息给我。如果有什么PDF笔记可以帮助我理解这一点,也请告知我
再次感谢

PM_Dialog
离线
最后看到:32分钟27秒前
工作人员
加入: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年8个月前
加入:2017-12-14 13:52
谢谢

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

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

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

PM_Dialog
离线
最后看到:32分钟27秒前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

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

谢谢,PM_Dialog

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

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

PM_Dialog
离线
最后看到:32分钟27秒前
工作人员
加入:2018-02-08 11:03
嗨bigheadbaby,

嗨bigheadbaby,

请转到产品DA14580并导航到软件和工具。然后尝试下载SDK。在那里,你必须看到挂锁图标 - 点击即可接受协议,您将被授予将在几天内进行SDK访问。

谢谢,PM_Dialog