This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TCAN4550:在 tcan 模块的 insmod 期间生成的错误代码

Guru**** 2001725 points
Other Parts Discussed in Thread: TCAN4550
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1130334/tcan4550-error-code-generated-during-insmod-of-tcan-module

器件型号:TCAN4550

您好!  

在插入 CAN FD 的内核模块时、我们面临一个问题。 具体而言、我们发现我们的车辆 CAN FD 网络在 TCU 上发出 insmod /iwtest/kernel-module/tcan4x5x.ko 时锁定。 此 CAN FD 网络上至少有4个其他节点、我们注意到在发出此 insmod 命令之前、典型的 CAN FD 流量。 这也是在调用 IP 链路设置 CAN2之前的一段时间、因此不确定插入此内核模块会如何导致问题。 我的理解是、这应该只是插入 CAN FD 模块并设置与的 SPI 通信、但您能否解释插入此模块会如何影响收发器的 CAN_FD_H 和 CAN_FD_L 端?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Akshay、

    我们认为这是驱动程序及其编写方式的问题。 Linux 探测器函数调用 Init 函数、该函数将器件置于正常模式。 但在将波特率配置到器件之前、器件应保持待机模式。 由于器件未配置波特率、因此最有可能使用加电默认值、因此当您尝试通过 CAN 进行通信时会引发大量错误。

    我们将与编写驱动程序更新的第三方进行核对、以查看是否可以修复此问题。

    最棒的

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    感谢您的更新。

    这对我们来说是一个障碍。 您能否提供更新的驱动程序以尽快解决此问题。

    是否有任何工作要做,以便我们能够继续工作?

    此致、

    Akshay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Akshay、

    更新驱动程序后、我将通知您。 不幸的是、我认为这里没有好的解决方案。 问题是驱动程序中的探测器功能。 如果您可以跳过该函数或配置器件波特率设置、则可以正常工作。

    正如我说过的、这是由一家不是 TI 的公司开发的。 我们正与他们合作修复他们的驱动程序。

    同时、我们还编写了可在 MSP430等微控制器上工作的代码。 类似的东西是否适用于您的初始调试?

    最棒的

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    我将向您简要介绍我们正在测试的场景。 如果我们的行为有任何错误、请告知我们。

    我们正在测试 TCAN4550、我们注意到、在 TCU 上调用 insmod 以插入 tcan4x5x.ko 模块时、错误帧会被插入。 这是看到第一条 ER 类型消息时的情况。 大多数 CAN 通信在此之后停止、因为许多 CAN 节点由于 CAN 总线上的错误而进入错误处理状态。

    已上传测试设置的快照

    下面是我们的测试程序:

    *将数据从 PCAN 连续发送到非加固型 TCU。 在坚固型 TCU 中进行数据传输期间插入 CAN 模块后、我们会观察到错误帧正在生成、并在 PCAN 工具中观察到。

    1)非工作条件:

    *从启用了 BRS 位的 PCAN 工具发送数据帧。 然后生成错误帧。

    2)工作条件:
    *从禁用 BRS 位的 PCAN 工具发送数据。 则未观察到问题。

    以下是一些可能有助于您检查问题的快照。

    在测试设置中、我按如下方式连接了示波器探针:

    通道1测量引线:FD_CAN_H

    通道1接地引线:USB_GND

    通道2测量引线:FD_CAN_L

    通道2接地引线:USB_GND

    1) 1)通过 insmod 加载内核模块。

    2) 2)单击 PCAN 查看器上的0x555传输消息框、然后单击键盘上的空格键以手动传输。

    3)示波器应捕获多个有效载荷、如下所示。 pcan 跟踪日志还应捕获错误。 以下是相同的快照:

    4) 4)在示波器屏幕截图中、您可以看到两个失败的发射突发、然后是成功的发射。

    5)这里是第一个失败的传输的屏幕截图。

    6) Snaphot、用于第二次失败的传输。

    7) 7) 下面给出了成功发送的快照。

    8) 8)通过分析上面的传输帧何时单步执行、看起来好像它是在 PCAN 适配器发出 BRS 位后发生的。 我怀疑 tcan4x5x.ko 驱动程序会将 TCU tcan4550芯片设置为无法很好地处理 BRS 位的状态、直到我们在后面的步骤中调用 IP 链接。

    请检查此问题、并告知我们是否需要更改驱动程序、或者我们是否在测试设置中遗漏了任何内容。

    此外、您能否向我们分享 前面聊天中提到的用于微控制器的驱动程序、以便我们可以查看该驱动程序?

    我们什么时候可以从第三方获得驱动程序修复?  

    此致、

    Akshay Naik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Akshay、

    我在您 的另一个主题中为您的问题提供了相同的答案、但为了该主题的好处、我也将在此处添加这些问题。

    总线上的所有注释都应启用相同的设置和功能。  如果 CAN FD 帧在总线上传输、则所有节点必须启用 FD、否则未启用 FD 的节点将在消息上抛出和错误帧。  

    同样、如果 FD 消息以更快的数据速率传输、则所有节点必须启用 BRSE 或等效位速率开关设置、并且必须具有相同的数据位时序设置。  否则、未启用 BRSE 或具有不同数据位时序设置的节点将在消息上投射错误帧。  

    由于错误帧是在节点尝试与不同配置进行通信时生成的、因此根据 CAN FD 协议和标准、显示系统在该测试期间按预期工作。

    这是一个器件支持论坛、我不确定驱动程序何时将 TCAN4550器件从待机模式转换为正常模式。  但是、TCAN4550始终上电进入待机模式。  只有当处理器将工作模式和引脚配置寄存器0x0800[7:6]中的 MODE_SEL 位置1并将其设置为正常模式(2'B10)时、它才会从待机模式转换为正常模式。

    BRS 错误的原因是 CAN 总线上的所有节点的设置都不相同、因此它们能够以比仲裁速率更快的数据速率处理 CAN FD 消息。

    错误帧是在器件级别生成的、因为 CAN FD 协议违反了总线上不同节点的不兼容设置。

    TI 与第三方合作、通过优化 SPI 通信来消除空闲时间并提高数据带宽、从而改进 TCAN4x5x Linux 驱动器。  此驱动程序更新不是为了解决您面临的问题。

    要解决在 TCAN4550转换为正常模式时生成的错误帧、必须首先确保控制寄存器0x1018[9:8]中的 BRSE 和 FDOE 位都设置为"1"、还必须确保标称(仲裁)位时序(寄存器0x101C)_和数据位时序 (寄存器0x100C)配置为与总线上其他节点相同的值、正如我刚才所解释的那样。  如果这些设置与总线上的其他节点不匹配、则会生成错误帧。

    请注意、配置为支持具有比特率切换功能的 CAN FD 消息的器件不会在传统 CAN 消息(非 FD 消息)上投射错误帧 以及不使用比特率切换的 CAN FD 消息、因为消息标头专门指示节点消息是非 FD、FD 还是已启用 BRS。  

    因此、对于 FD 操作、应启用 BRSE 和 FDOE 位、并针对总线上使用的适当数据速率设置 NBTP 和 DBTP 时序值。  这应防止在将器件切换到正常模式时出现错误。

    此致、

    Jonathan