【Semidrive】X9HP 打开 avm 摄像头导致 mailbox tx 缓冲区溢出问题

一、调试环境

1. 软件环境:X9 PTG4.9 版本。
2. 硬件环境:soc 使用的是 X9HP。

二、问题描述

进入 Android 端的 270 环视预览画面,随机操作预览画面下的控件,暂无复现规律,频繁操作触摸屏复现的概率大些,大概一台机器每天能复现 2-3 次左右,出现问题时 R 核会出现以下打印并且中控触摸会卡死,adb 无法使用:

测试方法:

1.上电开机。

2.在 Android 端打开  avm 应用,频繁操作环视界面的 UI。

3.应用跑一段时间后中控画面卡住,触摸失效,adb 不可用,R 核出现以上打印。

三、问题分析

1. Log 是在 freertos_safetyos\chipdev\mailbox\sd_mbox\mb_controller.c 文件里面申请 mailbox msg 失败打印的,发生在 R 核向 AP 发送消息的时候,因为以前有遇到过因为 R 核 loading 过高导致核间通信 no enough rxbuf 的报错,怀疑又是 R 核 loading 过高导致的问题,让客户把一些不想关的打印去掉,并且把以下这条打印最多的报错 log 去掉:

去掉后依然能复现问题并且不能恢复正常。

2. 目前已找到稳定复现的方法,在 AP1 启动 avm 然后 pkill avm,反复做几次就能复现到问题,先把 R 核一些负载较高的任务先关掉进行测试,看是否能复现,确认是否是负载较高引起的问题,top 命令可以看到没复现问题时 IDLE 还有 64%,但即使空闲剩余这么多还是能复现到问题。
 


3. 在 lk_boot\framework\service\camera\safety_cs.c 中添加以下打印确认导致 mailbox txbuf 溢出的原因是否就是 camera service:



可以发现在出现 mbox 的报错前有三条 camera 的消息 5203 5204 5205 跑到了 dcf_dm_notify 里没有出来,导致 mbox 缓冲 buf 满了:

后续过了一分多钟 mbox 恢复正常了,能看到有三个连续的 5205 出来了,对应的就是前面的 5203 5204 5205 三条消息,由此可以确认导致 mbox 缓冲区溢出的任务就是 camera service。

4. 怀疑是 AP1 的 avm 应用没有及时去取 R 核过来的摄像头数据,后续查看了应用端的代码,在单独线程使用 select 函数监测 camera 设备文件,当 R 核有数据送到就会去 dequeue 数据,逻辑上是有一直在读 R 核过来的数据的。

5. 先不跑 avm app,在 R 核使用接收 Can 消息通过核间通信转发到 AP 的方式来测试核间通信,确认是否是核间通信本来就有问题,发送 Can 数据跑到 50 倍速仍然没有出现问题,这个核间通信消息的频率已经比跑 avm 的时候要高出很多了,所以核间通信本身是没问题的,问题还是回到 camera 这块。

6. 发现客户该项目在跑 avm app 的时候 ddr 的带宽会变得很高,导致 ap2 仪表的车道轨迹线变卡,所以先仅跑 v4l2 获取数据部分,后续对数据的处理先屏蔽,排除因带宽过高导致该问题的可能,经测试带宽对该问题没有影响,依然能复现出问题。

7. 后续测试到添加以下两句打印后复现概率就会明显增大:

询问 Semidrive 原厂得知频繁打印会增加 AP1 uart 的中断,并且 mailbox 那边也是要用 AP1 的中断来处理 R 核过来的数据的,因为中断没有优先级,所以加打印会加长中断的处理时间,原厂建议把打印信息减少来测试。

四、解决方案

直接在 dts 把 AP1 的打印串口 disabled 掉,目前经过三天的压测,没有出现 mailbox 的报错,已经可以确认是中断过多导致的问题了。


福利:【签到有礼】2024/12/16~12/22 一起来学习打卡吧! - 大大通(简体站)

【签到有礼】2024/12/16~12/22 一起来学习打卡吧!签到即有机会获取以下奖品~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值