错误 #4205
cpri pma初始化失败,导致tfu 挂死/CPU锁死
由 高 峰 在 3 个月 之前添加.
更新于 11 天 之前.
历史记录
CP端:
CPRI PMA初始化成功后,stc_pclk_init 中有轮询一个判断标致,如果没有初始化成功时会一直锁死在这个位置:
while (1 != (do_read_volatile(SERDES_INIT_FLAG_ADDR)));
会导致AP端读取CP的寄存器异常,比如:TFU中读取STC CLK频率寄存器;
进而会导致操作系统异常(RCU)
此问题一般发生在以下几种情况下:
1. PHY 没有启动,L2或TFU就启动了
2. PHY的版本文件损坏,无法正常初始化
3. PHY的版本不正确,无法正常初始化
目前的猜测是:
CP面的寄存器空间,mmap 内核底层逻辑和DDR是不一样的;驱动重构了CP寄存器访问的mmap
有可能内核态访问CP寄存器空间时,会一直等待对方的类似反馈标志之类的;
由于CP没有初始化成功,AP访问CP寄存器的总线不可用,导致操作系统一直阻塞在读取CP寄存器位置。
以上逻辑是我们自己的猜测,需要和思朗确认
后续遇到类似问题,可以在phy启动后,协议栈启动前,读一下寄存器test_mem 0xb7e060b0 32,看看cpri 初始化函数走到哪里
- 状态 从 审视 变更为 进行中
- 指派给 从 高 峰 变更为 战 弋戈
问题解决了吗?问题单中没有看到【定位原因】,【解决方案】的描述 ,就转到我着来审视?
【原因】当cp端的cpri没有初始化成功时,这时就在ap端访问cp端的地址空间,就会发生ap端挂死。
【解决方法】可以在AP端检查cp端初始化状态成功过后再进行下一步读取cp端地址空间的操作。
需要对 start_phy.sh 中增加对cpri 状态的检查,当cpri没有初始化完成时,会一直等待。
问了横联phy的同事start_phy.sh 现在还没有出现在代码库中。 现在是谁用谁修改。
导出 Atom
PDF