亲爱的对话框支持,
我已经用DA14580将DA14583物联网SDK移植到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,
由于我不知道在追踪错误的地方开始,我随机搜索了与断开连接相关的函数调用的代码,并将UART调试输出放到了它们是否被执行。这
gapc_disconnect_ind_handler
是我研究的第一个函数。我比较了“常规断开”和“常规断开”两种情况。"超出范围断开"。
请让我知道哪些是我应该调查的合适函数,以找出它冻结的地方。
BR约翰内斯
嗨gme_johannes,
你能不能在调试模式下运行固件,加载调试器,试着找出代码卡住的地方?
谢谢,PM_Dialog
嗨PM_Dialog,
不幸的是,我从来没有让JTAG/SWD运行https://support.dialog-semiconductor.com/comment/20501#comment-20501)。
我希望您能向我描述一下SDK中的行为如下和超出范围的断开,这样我就有机会只用UART来研究它,但没有调试器。
致以最亲切的问候
约翰内斯
亲爱的PM_Dialog,
我和社警进行了调试。
请见附件截图,代码似乎停止。
我能提供更多的信息吗?
致以最亲切的问候
约翰内斯
嗨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中修改了堆大小:
现在我不觉得有什么问题了
尽管如此,我想知道如何确定合适的值。“1024”是如何被选中的?
如何测试堆大小是否足够我的应用程序使用?
BR约翰内斯
嗨gme_johannes,
很高兴你把问题解决了。没有任何特定的方法来确定适当的值。堆大小的值应该通过实验来确定。
谢谢,PM_Dialog