亲爱的对话团队,
我使用UART在DA14585开发工具包和另一个制造商的开发板之间进行通信。在广泛的数据交换的情况下,通过调用平台重置函数并在那里暂时中断通信过程。在调试会话中执行代码时会发生。在正常操作期间会发生什么 - 当使用代码的图像闪烁在DA14585上?如何避免代码执行陷入困境(看门狗在UART通信期间冻结)?此时的SW重置也会为我工作,但是,正如我从函数内容中看到的那样,必须为此定义生产宏,这不是此处的情况。是否有任何步行可能,而不会在SDK代码中进行更改?
void platform_reset_func(uint32_t错误){uint16_t tmp;#if(!production_test)//触发器如果重置原因是reset_after_suota_update assert_warning以外的(错误== reset_after_suota_update);#Endif //触发SW RESET TMP = GETWORD16(SYS_CTRL_REG);TMP =(TMP&〜REMAP_ADR0)|0;//地图0 tmp | = sw_reset;setword16(sys_ctrl_reg,tmp);}
关键词:
设备:
嗨moguilevski。
谢谢你的问题在线。这意味着发生平台重置。perform_reset()调用τheplatform_reset_func(),该平台()在ROM代码中实现。为什么您获得此断言的最可能原因是由于内存不足,因为您正在分配从未消耗的消息。例如,如果要分配通知消息,并且您有一个小的连接间隔,则邮件堆叠堆积,直到连接事件到达,但在连接事件到达之前,使用大的连接间隔耗尽内存。您可以增加连接间隔。可能,在您的应用程序中,每次连接后可能会有某种内存泄漏,因为错误代码是reset_mem_alloc_fail。为此,请检查是否有任何挂起的消息,并确保在处理消息时会消耗您获得的消息,或者如果您正在分配它们应该释放的数据。
谢谢,PM_DIALOG.
非常感谢您的详细答案。
你好
我也遇到了困难。我参考示例代码O“da14531-da14585-586_reading_i2c_accelerometer_ble”。并运行到platform_reset_func()。
在Funtion void user_svc1_accel_x_send_ntf()中:
使用代码应用内存:
struct musts1_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);
我们用小连接intervalas运行,如果你说,内存不足,如何释放内存?
嗨yykx,
谢谢你的评论。如果您可以使用问题创建新的论坛线程,这将是很棒的。
您提到使用DA14531-DA14585-586_Reading_i2c_accelerometer_ble sw示例。
您是否在该示例中完成了任何修改,或者您将使用它如提供?
请分享您所做的修改。
什么是连接间隔和堆大小?可能的解决方案可能是增加连接间隔或增加堆大小。
谢谢,PM_DIALOG.