平台复位功能

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
5个职位/ 0个新
最后发表
moguilevski
离线
最后看到:2周6天前
加入:2019-04-30需要
平台复位功能

亲爱的团队对话框,

我使用UART进行DA14585开发套件和另一个制造商的开发板之间的通信。在大量数据交换的情况下,通信进程有时会通过调用平台重置函数而中断,并被卡在那里。它发生在代码在调试会话中执行时。当带有代码的图像在DA14585上闪现时会发生什么?如何避免代码执行卡住(看门狗是冻结在UART通信期间)?此时SW重置对我来说也可以,但是,正如我从函数内容中看到的,必须为此定义PRODUCTION_TEST宏,这里不是这样的。在不更改SDK代码的情况下,是否有任何走动的可能?

platform_reset_func(uint32_t error) {uint16_t tmp;如果重置原因不是RESET_AFTER_SUOTA_UPDATE,则触发断言ASSERT_WARNING(error == RESET_AFTER_SUOTA_UPDATE);#endif //触发SW reset tmp = GetWord16(SYS_CTRL_REG);tmp = (tmp & ~REMAP_ADR0) | 0;//映射ROM地址0 tmp |= SW_RESET;SetWord16 (SYS_CTRL_REG tmp);}

关键词:
设备:
PM_Dialog
离线
最后看到:1周3天前
工作人员
加入:2018-02-08 11:03
嗨moguilevski。

嗨moguilevski。

谢谢你在网上提出的问题。这意味着将发生平台重置。Τhe platform_reset_func()由platform_reset()调用,这是在ROM代码中实现的。获得此断言的最可能原因是内存不足,因为您正在分配从未使用过的消息。例如,如果您正在分配通知消息,并且连接间隔较小,则消息会在连接事件到达之前堆积起来,但是如果连接间隔较大,则会在连接事件到达之前耗尽内存。您可以增加连接间隔。在您的应用程序中,可能在每次连接之后都会出现某种内存泄漏,因为错误代码是RESET_MEM_ALLOC_FAIL。为此,请检查是否有任何挂起的消息,并确保您正在使用消息处理时获得的消息,或者如果您正在分配数据,则应该释放这些消息。

谢谢,PM_Dialog

moguilevski
离线
最后看到:2周6天前
加入:2019-04-30需要
非常感谢

非常感谢您详细的回答。

yykx
离线
最后看到:3个月1周前
加入:2020-08-03 28

我也遇到了困难。我引用示例代码o“da14551 -da14585-586_reading_i2c_accelerometer_ble”。然后运行到platform_reset_func()。

在函数void user_svc1_accel_X_send_ntf():

应用内存代码:

struct custs1_val_ntf_ind_req* req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_ntf_ind_req, string_length);

我们用小的连接间隔运行,如果如你所说,内存不足,如何释放内存?

PM_Dialog
离线
最后看到:1周3天前
工作人员
加入:2018-02-08 11:03
嗨yykx,

嗨yykx,

谢谢你的评论。如果你能创建一个新的论坛帖子来讨论你的问题,那就太好了。

您提到您正在使用da14551 -da14585-586_reading_i2c_accelerometer_ble SW示例。

您是否对示例进行了任何修改,或者正在按照提供的方式使用它?

请分享您所做的修改。

连接间隔和堆大小是多少?一个可能的解决方案可能是增加连接间隔或增加堆大小。

谢谢,PM_Dialog