队员们好
最近,我们的客户发现 S32K3 RTD 驱动程序会禁用 FlexCAN 的内存 ECC 功能。虽然默认情况下启用了 ECC 功能。
客户 Xingyu 遇到的问题是,一些 CAN MB 永远卡住,无法再接收特定 ID。我们发现根本原因是某些 CAN MB 存在 ECC 错误,从而改变了该 MB 的 ID 文件。启用内存修正功能后,客户的问题就不复存在了。
请问为什么在 CAN RTD 的初始化过程中禁用了该功能?请优先考虑这个问题,而且客户是批量生产领域的客户,并向我们提供解释。
谢谢& ,致以最崇高的敬意、
理查德
感谢您的答复。让我再澄清一下:
1.客户使用的是旧 RTD 2.0.0 版本。我注意到最新的 RTD 版本似乎也禁用了这种内存修正功能。
2.请参阅下面的 CAN 寄存器映射(从 0x40304000 开始)。
请问为什么启用该功能会影响正常的发送和接收过程?
客户 20,000 多种产品中的一种产品出现了这种随机问题,我们的质量团队参与其中。客户启用该内存校正功能后,CAN MB ECC 问题得以解决,并能正常收发数据。
BR
理查德
你好@RichardLi、
过去,当默认启用 FlexCAN 的 ECC 时,FlexCan 驱动程序会出现 ECC 问题,上电复位后无法正常传输和接收数据。此外,RTD 驱动程序不支持 FlexCan 的 ECC。因此,他们默认禁用了这一功能。
关于客户的背景,您能告诉我相关信息吗?
1。他们使用了哪个 RTD 软件包版本?
2.遇到问题时,FlexCan 寄存器的值是多少?
顺祝商祺!
丹
感谢您的支持。我们将等待 RTD 团队的反馈。
在这里,我列出了我们与客户在线调试时剪下的一些寄存器,其中大部分寄存器都显示了出来。至于 xdm 配置文件,我们将联系客户,看他们能否根据公司政策提供给我们。
BR
理查德
你好@RichardLi、
1.我向 RTD 团队提交了查询票(ARTDCC3-368),要求他们做出解释。
2.根据您的附图,我发现 ESR1[BIT0ERR] 的值 = 1。该值错误位可能是由于 CAN 收发器之间的物理连接或节点之间的 CAN 位定时不一致造成的。能否将更多配置文件(.xdm 或 .arxml文件)以及偏移 0 至 C14h 寄存器的值?
顺祝商祺!
丹
你好@LiekLi、
您认为我们是否可以要求客户提供他们的 xdm 文件,以帮助 SW 团队进一步分析?或者我们只需要 RTD 团队给出一个解释,就足以关闭此票?
BR
理查德
嗨,理查德、
解释 RTD 为何禁用此功能就足够了。
你好@RichardLi、
这就是他们的答复:
" 关于为什么默认禁用 ECC 的问题:我想说的是,当我们创建 RTD 代码库时,它们是从传统的 MCAL 代码库继承的,因此它们可能一直存在到现在。这对于我们来说很难审查所有代码,以确定有关专用勘误表的具体代码。
此外,在 S32K3 上,我们在低级 FlexCAN 驱动程序中实现了对 ECC 的支持:ARTD-53030[CAN]在 S32K3 平台上实现对 RAM ECC 操作的支持 - NXP Jira"
顺祝商祺!
丹
感谢您的及时反馈。我将把这一解释传达给客户,看看他们是否有进一步的问题。
此致,
理查德
RTD 团队是否有任何最新消息?谢谢!
BR
理查德