亲爱的对话支持,
我已经将DA14583 IOT SDK与DA14580移植到MurataZy。
大多数情况下,我改变了GPIO作业,到目前为止大多数事情都按预期工作。
然而,当连接时。使用IOT应用程序,然后强制传感器超出范围,它变得无响应,必须发出重置/电源周期。
在UART调试接口中,我无法观察事件后的消息,尤其是dbg_msg(“断开连接\ r \ n”);
从user_on_disconnect.
没有出现(UART Debug确实正常工作并显示其他消息)。
我不知道修改了可能导致这种行为的任何例程。
你能帮我追踪这个问题吗?
此致
约翰内斯
设备:
添加剂调查结果:
我注意到了这一点
gapc_disconnect_ind_handler.
超出范围时未执行(但是当我手动单击IOT应用程序中的“断开”时)。嗨gme_johannes,
您能否澄清您的问题,因为从IOT应用程序手动单击“断开连接”时,您的问题是自填充_Disconnect_ind_handler?这与范围超出了吗?
谢谢,PM_DIALOG.
嗨pm_dialog,
由于我不知道在追踪错误的地方开始,我随机搜索了与断开连接相关的函数调用的代码,并将UART调试输出放到了它们是否被执行。这
gapc_disconnect_ind_handler.
是我调查的第一个功能。我比较了“常规断开”与“超出范围断开”的情况。
请告诉我哪个是我应该调查的适当功能,以了解它冻结的地方。
BR Johannes.
嗨gme_johannes,
请在调试模式下运行固件,热连接调试器,并尝试找到代码困扰的地方?
谢谢,PM_DIALOG.
嗨pm_dialog,
不幸的是,我从未有过JTAG / SWD运行(另见https://support.dialog-semicondiondiondum/comment/20501mment-20501.)。
我希望你可以向我描述SDK关注和超出远程断开的行为,这样我有机会只使用UART来调查它,但没有调试器。
此致
约翰内斯
亲爱的pm_dialog,
我用SWD运行调试。
请参阅附加的屏幕截图,代码似乎停止。
我可以提供更多信息吗?
此致
约翰内斯
嗨gme_johannes.
发生Wrap_platform_reset()的最明显原因是由于内存分配故障,这意味着您的软件中存在内存泄漏,您可以在某处分配数据,并且您从未释放它们(您可以在参数错误中验证函数,应该是reset_mem_alloc_fail)。为应用程序选择最佳堆,您应该通过更改DA1458x_config_Advanced.h文件中的堆的大小进行实验。内存分配没有任何问题,但它取决于您尝试分配多少内存,显然您正试图分配更多内存而不是可用的内存,并且您可以获得该断言。您能否请确保固件粘贴到Wrap_platform_reset()?
谢谢,PM_DIALOG.
嗨pm_dialog,
实际上,错误是reset_mem_alloc_fail。
我为原始物联网项目添加了很少的代码,主要是处理两个LED。
我正在使用延长睡眠,这样堆大小应该自动计算,正确?那么,我可以修改什么?
当我执行代码并强制超过BT的范围时,调试器将停止在WRAP_PLATFORM_RESET()中,是。
BR Johannes.
我在da1458x_scatter_config中修改了堆大小:
现在我不再看到这个问题了。
尽管如此,我想知道如何确定适当的价值。如何选择“1024”?
如何测试堆大小足以对我的申请?
BR Johannes.
嗨gme_johannes,
很高兴你识上你的问题。确定适当的值没有任何特定方法。堆大小的值应通过实验决定。
谢谢,PM_DIALOG.