你好,
我已经将 EMAC0 配置为 2500 MBPS,并进行了所需的 SERDES 通道配置。ECU运行期间,以太网通信正常进行。
关闭所有访问以太网通信的应用程序后,我从ECUM触发ECU睡眠请求,将MCU模式设置为SOC待机模式,并选择HSE_CM7作为主核心。
ECU唤醒后恢复正常运行,COM、SOAD、TCPIP和ETHIF层工作正常。但在ETHIF层调用“提供TX缓冲区”API时,返回错误信息,提示TX缓冲区已满,导致无法发送以太网帧。
以下列出了尝试解决此问题的修复方法:
1. 尝试使用“Eth_43_Pfe_Deinit”关闭 PFE 驱动程序,并通过调用“Eth_43_Pfe_Init”启动 PFE 驱动程序,但如果执行 Init API,CPU 将在执行后锁定。
2. 尝试使用 Eth_43_Pfe_SetController 模式将以太网控制器关闭,然后通过将模式设置回“Active”来激活它,结果导致总线故障。
请告知此问题的潜在解决方案。
PS>
使用的配置器:EB tresos
以太坊 PFE RTD 版本:1.3.0
SDK:GOLDVIP
你好,Avinash_7373
感谢您的回复。
1.当 SOC 进入待机模式时,分区 2 的 PFE 时钟将被禁用,唤醒后应检查是否已重新启用分区 2。您可以尝试在 PFE 初始化之前检查 PRTN2_STAT.PCS 状态。
2. 检查 SERDES 是否正常工作。
BR
乔伊
嗨@Joey_z
1.PFE 仅用于 M 型核心。
2. 我使用的是开发板: S32G-VNP-RDB3
问候,
阿维纳什·V
你好,Avinash_7373
感谢您与我们联系。
1. PFE 是否仅用于 M 核心?你们都用过A核心组件吗?
2.您使用的是客户的开发板还是我们的开发板?
BR
乔伊
嗨@Joey_z ,
Partition_2 状态寄存器中的位域在睡眠前保持为1 ,在睡眠状态下更新为0 ,在唤醒后(即 MCU 模式设置为正常后)更新回1 。
SerDes 工作正常。此外,我还尝试了 EMAC2 的 RGMII 模式,其中 ETH Phy 连接器 (RJ45) 和控制器 (NXPS32G399A) 之间不涉及 SERDES,即使在这种情况下,问题仍然存在。
如果 Partition_2 在唤醒后需要任何重启顺序,请告知。
问候,
阿维纳什·V
你好,Avinash_7373
您的问题很可能是唤醒后 PFE 初始化问题。检查时钟和相关的 PFE 配置,并确保其已初始化到理想状态。
1. 检查 PFE 初始化是否已放入引导加载程序中,并在应用程序唤醒后正确重新初始化。
2. 根据备用流程检查相关配置。请参阅 RM 32.5.5“运行模式到待机模式”。
BR
乔伊
嗨@Joey_z ,
请查看以下睡眠-觉醒顺序:
1. 我正在使用 API " EcuM_SelectShutdownTarget()"请求 ECU 进入睡眠模式,这反过来会根据 ECUM 的实现将 MCU 模式设置为待机模式。
2. 当ECU进入睡眠模式后,它会轮询唤醒事件,CAN收发器检测到总线活动并使用EcuM_SetWakeupEvent() API设置唤醒事件,然后ECU恢复正常运行。
关于引导加载程序,NXP引导加载程序(blob文件刷写在闪存的0x0地址)和M-core应用程序刷写在0x400000地址。A核心目前在任何地方都没有使用。
问候,
阿维纳什·V
你好,Avinash_7373
感谢您的回复。
能否介绍一下你们的待机和唤醒顺序?
1. 如何设置核心和分区?
2.你的应用程序中是否使用了引导加载程序和A核心?
BR
乔伊
你好, Avinash_7373
你的问题有进展吗?如果您需要继续获得支持,请将您的代码上传到以下链接,以便我们更好地分析问题?
BR
乔伊