PSDK在M30中使用遇到断言中止的情况
已完成支持人员,您好
我目前在调试FreeRTOS下使用PSDK时遇到了标题中所述的问题,以下为问题的具体情况描述:
开发环境:
STM32F412RG 使用同轴线连接至M30顶部接口,仅使用串口
使用Keil开发调试,PSDK版本3.0,无人机固件版本06.00.0600
目前所运行程序改自git中的示例,使用SDK功能涉及到消息订阅、用户日志及命令信号传输,程序在运行一段时间后会中止在如下图所在位置(heap_4.c第281行)
一般都在程序启动十几到几十秒后出现(根据串口输出的日志内容判定),整个程序运行到此中止在断言处。同样的负载硬件及程序在M300上使用SkyPortV2连接运行并未出现此情况。
以下是在部分出现中止时我截下的调用栈信息
根据上述信息看,都是在PSDK内核或提供的接口方法调用到DjiLogger_Output输出日志时出现这种情况,查阅过相关信息但并未找到类似情况和相关的解决方案。
烦请协助分析上述问题,如需提供其他参考信息亦请告知,谢谢!
-
以下是dji_sdk_config.h中的截图,dji_sdk_app_info.h中设置的波特率为460800
这几天撇开业务代码从头开始在demo中尝试使用排除法确认这个问题,有如下发现:
- 在不运行任何功能模块demo的情况下,不会发生所述异常;
- 在启用DATA_TRANSMISSION功能demo,把不使用的几个数据发送方向及高速传输部分注释掉(只保留了低速通道PSDK发到MSDK的部分),并使用默认数据时亦不会发生所述异常(demo中发送数据为"DJI Data Transmission Test Data.\r\n",加结束符应该是35个字节);
- 如果将所发送数据长度调整为64字节,则将发生所述异常;
- 逐步缩小范围,当每次发送的数据长度为52字节时异常不会出现,56字节时会出现(中间长度没有测试);
- 该问题只在M30上,且使用STM32+FreeRTOS情况下出现,在NX上跑Ubuntu,跑一样的例程不会有问题(其他芯片的板手上没有只测试了NX+Linux和STM32F412+FreeRTOS);
- 在两台M30上做了测试,都有出现如上所述的异常。
查阅了文档只提及到命令通道的带宽4KB/s、缓冲区512B和长度超过128会分包的几个情况,看来与此并无关联。烦请再行确认一下是否有类似情况,如有发现也请帮忙指出我这边存在的错处。
-
这边没有412的板子,用的是STM32F407和F429的板子,按照您的描述,分别试了113 byte和295byte,发送数据没有复现到异常。方便更换到407或429的板子开发或测试一下吗? ![](https://djisdksupport.zendesk.com/attachments/token/jkDdncvNOSviAkrlCrmepoKNp/?name=image.png) ![](https://djisdksupport.zendesk.com/attachments/token/PA8fZHgFdJmupR6RDQunuFz5F/?name=image.png)
请先登录再写评论。
评论
6 条评论