亲爱的对话支持,
我将DA14583 IOT SDK移植到了Murata Zy,并使用DA14580移植到Murata Zy。
通常,我更改了GPIO分配,到目前为止,大多数事情都按预期工作。
但是,当连接时使用IoT应用程序,然后将传感器迫使传感器脱离范围,因此必须发出重置/功率周期。
在UART调试界面中,我无法在事件发生后观察到一条消息,尤其是dbg_msg(“断开连接\ r \ n”);
从user_on_disconnect
没有出现(UART调试确实可以正常工作并显示其他消息)。
我不知道是否修改了可能导致这种行为的任何例程。
您能协助我追踪这个问题吗?
此致
约翰内斯
设备:
加法结果:
1.我注意到
gapc_disconnect_ind_handler
不在范围内时没有执行(但这是我手动单击IoT应用中的“断开连接”的时间)。嗨gme_johannes,
您能澄清一下您的问题是因为GAPC_Disconnect_ind_handler手动从IoT应用程序中单击“断开连接”?这与超出范围有关吗?
谢谢,pm_dialog
嗨,pm_dialog,
由于我不知道从哪里开始跟踪错误,因此我已经随机搜索了与断开连接相关的函数调用的代码,并将UART调试输出放置以查看它们是否已执行。这
gapc_disconnect_ind_handler
是我调查的第一个功能。我比较了“常规断开”与“超出范围断开连接”的情况。
请让我知道我应该研究哪些适当的功能,以找出冻结的位置。
约翰内斯
嗨gme_johannes,
您能否在调试模式下运行固件,HOT附加调试器并尝试查找代码卡住的位置?
谢谢,pm_dialog
嗨,pm_dialog,
不幸的是我从来没有运行JTAG/SWD(另请参见https://support.dialog-spoomendonductor.com/comment/20501#Comment-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()中,是的。
约翰内斯
我已经修改了da1458x_scatter_config.h中的堆大小:
现在我不再看到这个问题了。
但是,我想知道如何确定适当的值。如何选择“ 1024”?
如何测试堆的大小足以让我的应用程序?
约翰内斯
嗨gme_johannes,
很高兴您弄清楚了您的问题。没有任何特定方法来确定适当的值。堆大小的值应实验确定。
谢谢,pm_dialog