您好,对话工作人员:
我有一个wrap_platform_reset()的问题,我的客户说有时他连接Soc与手机,Soc将调用wrap_platform_reset()并返回错误代码0xF2F2F2F2
我发现一些解释说:
/ *
wrap_platform_reset发生的最明显的原因是由于内存分配失败,这意味着有一个内存泄漏你的西南,你分配数据的地方和你永远不会释放他们(您可以验证在函数的参数错误,应该RESET_MEM_ALLOC_FAIL)。
* /
我检查了堆分配:
RAM_BSS_1 0x00815000
{
*(KE_HEAP)
}
散点索(ImageLength(RAM_BSS_1)<0x3000)
}
这意味着12k用于堆分配。这是足够的吗?
如果我的SW中存在内存泄漏,它将重置Malloc触发,并且更多堆空间无帮助重置问题?
我如何找到它们,当我需要释放这些内存时?实际上这会让我很多。有没有应用笔记可以帮助我理解Ke Melloc机制。
谢谢〜
设备:
嗨bigheadbaby,
关于堆分配,您将能够找到在.map文件中为内核消息分配多少堆(搜索堆_db_area,heap_env_area,heap_msg_area)。一个0x3000堆非常大,如果这表明你的堆大小,我会认真怀疑。如果您的SW中存在内存泄漏,并且在分配内存时,请在某些点处保持分配内存,您将在WRAP_PLATFROM_RESET中结束。没有具体方法可以找到内存泄漏的位置。如果要使用ke_malloc以分配房间,则应从NON_RET_HEAP分配,并且只要您不再需要该房间即可使用KE_FREE()释放空间,并确保所有消息处理程序返回KE_MSG_CONSUMED按顺序返回KE_MSG_CONSUMED为了释放分配的空间。
谢谢mt_dialog.
亲爱的mt_dialog:
谢谢你的解释。
似乎我发现了一些可能导致重置的可能性
我们延迟了(1)主循环,我猜funcion rwip_schedule()不能与之良好......
例如,如果我想使用GPIO来填充软件IIC函数,似乎延迟函数会导致重置......这是否意味着我不能在主循环中放置任何延迟动作?
如果我可以,也许我必须关闭消息,这将导致内存泄漏,我猜广告可能会带来一些消息,并最终导致重置。严密的adv action会帮助解决这个问题??是否有任何其他msg可能导致复位时,我没有连接到soc。那么我认为主回路的延迟可能成为可能。
谢谢~ ~ ~
嗨bigheadbaby,
你能告诉我为什么你推迟了while(1)吗?有什么具体的原因导致你们增加了延期?请注意,强烈建议不要在此函数中添加任何延迟。原因是schedule_while_ble_on()函数调用rwip_schedule()函数,该函数为所有挂起的消息提供服务。如果你在while(1)中设置一个延迟,这意味着schedule_while_ble_on()也将被延迟,但是队列将继续接收消息,所以调度程序将不得不保留许多消息。因此,您将获得wrap_platform_reset()
谢谢,PM_DIALOG.
非常感谢~
最后,请帮我了解函数Rwip_schedule(),~~~~~帮助~~~~~
根据我们的软件架构,我会尽量避免延时功能。
我做了一个测试,我现在很确定,如果adv是on,通过我把一个长时间的延迟在1,ke_malloc被定期调用,但rwip_schedule()只能在延迟完成后运行。
但我认为Rwip_schedule()是一段时间循环,以找到回调来处理这些消息,
-------------------------------------
这是否意味着它会在一段时间内完成所有消息,或者它不能最终导致内存累积???
-------------------------------------
如果rwip_schedule()可以在时间完成所有消息和释放内存,则有可能导致此错误的原因,我只想了解有关Ke计划机制的更多信息,如果可以,请为我提供一些细节。如果有一些PDF笔记可以帮助我理解这一点,请也会才能实现我
再次感谢
嗨bigheadbaby,
DA14580仅在BLE核心处于活动状态以及RWIP_SCHEDULE()函数执行时安排挂起的消息。消息可以向堆栈异步发送,但在执行RWIP_Schedule时,它们将同步地服务。在主循环的活动部分中,内核将被授予对RWIP_SCHEDULE()调用的控件,并且只要需要处理消息和事件,它将保持控制。由于内核要求BLE硬件来处理消息,因此在Schedule_While_ble_On()中呼叫呼叫_while_ble_on()中发生。我强烈建议您查看7.2.1主回调段落UM-B-051: DA14580软件平台参考(SDK5)用户手册。您可以找到它并从我们的支持门户下载它。关于你的问题,我无法理解你的意思是什么,所以请你澄清你的问题吗?你还有这个错误吗?
谢谢,PM_DIALOG.
谢谢
但是我找不到下载这个应用说明的地方,UM-B-051: DA14580软件平台参考(SDK5)用户手册
我点击了你给我的链接,但是只显示了这些信息:
-----------------------------------------------------------------------------
版本日期:20/12/2016
版本号:1.2
教程:
收到更新通知
订阅此页面
左侧最多列中的主复选框转或关闭给定的订阅。根据网站的设置,您可能有活动订阅的其他选项.------------------------------------------------------
嗨bigheadbaby,
您无法下载它,因为您还没有接受软件许可协议(SLA)然而。请尝试再次下载并击中下载中显示的挂锁。之后,您必须同意许可协议你应该等待,直到你的权限被批准。
谢谢,PM_DIALOG.
我仍然不知道在哪里可以找到这个SLA
邮件访问我可以到达这个链接吗?
嗨bigheadbaby,
请转到产品DA14580,进入软件和工具。然后尝试下载SDK。在那里你将不得不看到一个挂锁图标-点击,接受协议,你将被授予将SDK访问在几天内。
谢谢,PM_DIALOG.