亲爱的对话框支持,
我已经将DA14583物联网SDK与DA14580移植到Murata ZY。
我主要是改变了GPIO分配,到目前为止,大多数事情都按照预期工作。
然而,当连接到物联网应用,然后迫使传感器超出范围,它变得无响应,必须发出复位/电源循环。
在UART调试界面中,我无法观察到事件之后的消息,特别是DBG_MSG(“断开连接\ r \ n”);
从user_on_disconnect
不会出现(UART调试工作正常,并显示其他消息)。
我不知道已经修改任何例程可能导致这种行为。
你能帮我追踪这个问题吗?
致以最亲切的问候
约翰内斯
设备:
Additionall发现:
1.我注意到
gapc_disconnect_ind_handler
当超出范围时不会执行(但当我手动点击物联网应用中的“断开”时)。嗨gme_johannes,
请您澄清您的问题是什么,因为当您手动单击“断开”从物联网应用时,gapc_disconnect_ind_handler ?这和超出范围有关系吗?
谢谢,PM_Dialog
嗨PM_Dialog,
因为我不知道从哪里开始跟踪这个bug,所以我随机搜索了与断开连接相关的函数调用的代码,并将UART调试输出放到了代码中,以查看它们是否被执行。的
gapc_disconnect_ind_handler
是我研究的第一个函数。我将“经常断开连接”的情况与。"超出射程,断开连接"。
请让我知道哪些是我应该调查的合适的函数,以找出它在哪里冻结。
BR约翰内斯
嗨gme_johannes,
您可以在调试模式下运行固件,热连接调试器并尝试找到代码卡住的地方吗?
谢谢,PM_Dialog
嗨PM_Dialog,
不幸的是,我从未得到JTAG/SWD运行(参见https://support.dialog-semiconductor.com/comment/20501#comment-20501).
我希望您能描述我在SDK following和超出范围的断开连接的行为,这样我就有机会只与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。
我在最初的IoT项目中添加了很少的代码,主要是为了处理另外两个led。
我正在使用EXTENDED SLEEP,这样堆大小应该自动计算,对吗?那么,我可以修改什么?
当我执行代码并强制超出BT的范围时,调试器将在wrap_platform_reset()中停止,是的。
BR约翰内斯
我已经修改了da1458x_scatter_config.h中的堆大小:
现在我不觉得有什么问题了。
尽管如此,我还是想知道如何确定合适的值。“1024”是如何被选中的?
如何测试堆大小是否足以满足我的应用程序?
BR约翰内斯
嗨gme_johannes,
很高兴你解决了自己的问题。没有任何特定的方法来确定适当的值。堆大小的值应该通过实验来决定。
谢谢,PM_Dialog