2.1.0 SDK-POSTURE-运行过程过一段时间报错

u010750922 2026-08-28 09:51:21

示例中在radar_framework_2d_frame_cb移植了自己的点云处理算法,然后通信协议改了一下,其余雷达参数一类没有更改,请问一下这种报错是什么报错,有什么解决办法?

 

...全文
149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RuifDu 08-28 11:18
  • 打赏
  • 举报
回复

你好:
可以根据mepc(指令指针)对照汇编看一下(在工程目录下的Lst文件夹内)报错的是哪段代码,向上追溯一下。
从上面的错误信息来看,a0寄存器和mtval非常接近,可能是想a0中存了一段指针指向0x8780630A,需要设置偏移(0x0C)来访问,访问了非法地址(mtval: 0x87806316)。你可以把这张图贴给AI,内核是RISC-V,他可以给你更多解释。
另外,如果确定计算时间充裕,不太建议持续使用printf打印调试信息,这可能对系统行为有一些影响。

u010750922 08-28 13:13
  • 举报
回复
@RuifDu const uart_device_t *uart = (uart_device_t *)HAL_DEV_Find(HAL_DEV_TYPE_UART, UART1_ID); uart_device_t *temp_dev = (uart_device_t *)uart; if(LL_UART_IsActiveFlag_TXFNF(uart_instance[temp_dev->uart_id])!=0) LL_UART_TransmitData(uart_instance[temp_dev->uart_id], data); 1. 看了一汇编,对应的代码是在这一块,HAL_DEV_Find 这个函数能不能反复调用,这个是传输协议的函数,会反复调用它,2. 另一个串口开了打印函数,100ms频率反复打印(这个是调试信息,实际中可以不打印这么快)大概10多分钟会落入这种报错,3. 请问一下 这种问题大概是什么原因造成的?
hqq_10086 08-28 17:10
  • 举报
回复
@u010750922 你好: 1.HAL_DEV_Find可以反复调用的, 建议查找设备的处理增加NULL判断。 uart_device_t *temp_device = (uart_device_t *)HAL_DEV_Find(HAL_DEV_TYPE_UART, UART1_ID); if (temp_device == NULL) { return 0; } 2.如果怀疑串口每100ms打印导致access fault,高频调用可能会增加内存碎片和竞争导致的问题,也可能是因为任务栈使用增加导致当前问题,可以优先尝试把任务栈增大测试快速确认。
u010750922 08-28 17:26
  • 举报
回复
@hqq_10086 下午测试去掉了频繁打印,基本上没什么打印,还是爆一样的错误,最后怀疑是hifPHYCtrl.phyRecv(&pBuff[hifPHYRecvCtrl.recvSize], 0xFFFF);接收函数,因为我们使用了私有协议,一直接收不符合HIF数据,缓存一直累积增加导致堆栈溢出了,现在在这里做了请缓存的操作,还在长时间测试不知道怎么样
1条回复

229

社区成员

发帖
与我相关
我的任务
社区描述
欢迎来到正和微芯官方社区,这里是毫米波雷达技术爱好者、开发者、技术专家以及行业领袖的聚集地。我们致力于提供一个开放、合作、创新的交流平台,让每一位成员都能在这里找到价值、获得启发、实现成长。
硬件架构射频工程物联网 企业社区 广东省·珠海市
社区管理员
  • Possumic正和微芯官方
  • sblxk008
  • 波谱Sense
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧