2148022_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2148022_zh-CN

2148022_zh-CN

S32G:连续 4~5 次 A53 不正常 RESET 后报告了 PFE 固件错误

PFE 专家们好

客户:LGE/Mobis

平台:S32G2

模块PFE 从属驱动程序 1.6.0

我们的客户使用 BSP36、PFE 从驱动程序 1.6.0 和 PFE MCAL 驱动程序 1.3.0。

客户正在实施 A53 不正常的 RESET。如果 A53 不发送心跳,M7 将强制 RESET A53。

经过 4~5 次连续 RESET 测试后,PFE FW 输出以下错误日志。

이미지 (1).png

它们的使用顺序如下

/* 1.禁用 GIC500 的中断路由器 */

disable_a53_interrupt_routing();

/* 2.删除 PFE 逻辑接口 */
pfe_logif_disable();

/* 3. 清除从属 HIF 内部 Rx bd */
Eth_43_PFE_ChannelBdFlushRx(PFE_PHY_IF_ID_HIF1);

/* 4. 清除 PFE 端口一致性寄存器 */
REG_WRITE32(0x4007CA00,0x0);

/* 5.关闭 A53 内核/分区 */
Bl_DisableCore(0, 1);
Bl_DisableCore(1, 1);
Bl_DisableCore(2, 1);
Bl_DisableCore(3, 1);
Bl_DisablePartition(1);

/* 6.启用 GIC500 的中断路由器 */
enable_a53_interrupt_routing();

/* 7.打开 A53 内核/分区 */
Bl_StartApplication();

我搭建了类似的环境,无法重现问题,我的测试日志正常。

Snipaste_2025-08-07_11-29-01.jpg

您能帮忙分析一下在什么情况下会出现错误吗?

感谢您的支持。

顺祝商祺!

狮子座

PFERe: S32G: PFE FW error reported after after 4~5 consecutive A53 ungraceful reset

这也让我们感到困惑。阅读代码后,我认为这是针对 1 个 EMAC 连接到同一驱动器的多个 HIF 通道时的用例。但我认为,现在已经不推荐使用这种情况了。而且绝对不能在从属模式下使用。

我看到这条命令没有出错,但不知道是否会产生这个错误:
libfci_cli logif-update -i emac2 --egress hif

Re: S32G: PFE FW error reported after after 4~5 consecutive A53 ungraceful reset

你好@Sebastian_Raizer

令我困惑的是 tx_port =PFE_PHY_IF_ID_HIF。在什么情况下 tx_port 等于PFE_PHY_IF_ID_HIF?我将要求客户分享他们的 PFE 配置。

BR、

狮子座

Re: S32G: PFE FW error reported after after 4~5 consecutive A53 ungraceful reset

你好@Sebastian_Raizer

感谢您的回答,我会向客户确认他们是如何配置 PFE 的。

BR、

狮子座

Re: S32G: PFE FW error reported after after 4~5 consecutive A53 ungraceful reset我的 PFE 同事提供的补充信息。
通常情况下,在 PFE Linux 从属设备上执行函数 fp_replica_hif_rx_scaling(),但 if(PFE_PHY_IF_ID_HIF == tx_port) 条件为假,因此跳过此代码,函数返回 new_port = tx_port;。
对于针对 PFE Linux 从属驱动程序的帧,在这种情况下 tx_port 的值应为 7(HIF1)。但是不知何故这里的值是 3,我认为这是在 PFE Linux 独立组网 (SA) 驱动程序的多接口模式中使用的特殊值。此值不应用于 Linux 从属设备。这可能是网桥或灵活解析器配置错误的提示。
Re: S32G: PFE FW error reported after after 4~5 consecutive A53 ungraceful reset

你好,这个错误来自函数 fp_replica_hif_rx_scaling() 中的 FW。这是对该函数中 while 循环的无限循环保护。它试图找到下一个要发送数据包的活动 HIF,但找不到(它刚刚被 BD 冲洗禁用)。

要进一步调查,请尝试查看是否有启用流量传播的特定选项。Linux 驱动程序真的只配置了一个 HIF 吗?我不确定这段 FW 代码是一直执行还是只在某些特定配置下执行。FW 应确定该帧针对的是禁用接口,并将其丢弃。

另外,在调用 Eth_43_PFE_ChannelBdFlushRx() 时,Linux 驱动程序必须处于非活动状态。如果内核处于恐慌状态,情况确实如此,但视它们触发信号心跳损失的方式而定,情况可能并非如此。为了确保这一点,也许在调用 BD flush API 之前关闭 Linux 分区更为安全。或者,他们可以确保内核处于 "恐慌 "模式或其他模式,在这种模式下不会执行任何操作。

我猜他们使用的是桥接模式,而且在恢复过程中看起来流量是流动的。在您的环境中也是这样设置的吗?

Tags (1)
No ratings
Version history
Last update:
‎11-20-2025 03:24 PM
Updated by: