故障现象:4S店反馈车机上电,整车无声音,车型是外置功放配置,车机重启后恢复,
故障件分析:
1、log看整车无声音是因为a2b 进程异常,无法与外置功放建立连接,所以整车无声音。
2、a2b 进程异常,从代码逻辑以及现有log锁定是a2b 进程初始化AD2428出现i2c error,导致进程退出。
3、a2b 进程退出系统会有检测进而触发retry机制,发现其退出后,会重新给AD2428断电走初始化流程,但是此retry会有次数11此的次数限制,提供的log是只有达到11此的retry 都没有初始化正常,所以就没有在去拉起a2b 进程,因此无声。
4、log是soc重启后恢复。
对策:
1、通过故障注入,台架模拟a2b初始化失败的场景去验证。
2、兜底策略:去掉系统retry a2b进程11次限制,一直retry直到成功为止。
软件设计逻辑:
1、车机对AD2428的操作逻辑;
a.车机上电会通过I2C获取soc端的AD2428的vendor id确认模块是否在线,如果不存在,进程退出重新执行,如果存在则配置A2B协议以及功放端的AD2428建立连接。
2、车机与功放端AD2428建立连接的逻辑;
a.soc通过i2c配置完主机端的AD2428以及功放端的AD2428之后,会通过A2B 协议等待建立连接的中断,此是芯片通过A2B自动建立,无需软件操作。
原因分析:
1、log看整车无声音是因为a2b 进程异常,无法与外置功放建立连接,所以整车无声音。
2、a2b 进程异常,从代码逻辑以及现有log锁定是a2b 进程初始化AD2428出现i2c error,导致进程退出。
3、a2b进程退出系统会有检测进而触发retry机制,发现其退出后,会重新给AD2428断电走初始化流程,但是此retry会有次数11此的次数限制,提供的log是只有达到11此的retry 都没有初始化正常,所以就没有在去拉起a2b 进程,因此无声。
4、现场远程看的时候已经恢复,看log是soc重启后恢复。
对策:
1、兜底策略:去掉系统retry a2b进程11次限制,一直retry直到成功为止;
11次retry重启完成大概需要2min左右,一直retry可以当故障消除后任然可以恢复(retry流程与车机冷启动启动进程一致),另一方面是可以抓取到异常的日志。
2、通过故障注入,台架模拟a2b初始化失败的场景去验证。
a、a2b模块供电软件没有拉起来,模块没有供电,i2c异常。
b、软件上电时序不对,导致i2c异常
c、i2c总线干扰,导致异常。