2394102_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2394102_zh-CN

2394102_zh-CN

SJA1110 的连接问题

尊敬的恩智浦半导体成员们:


此工单可能与以下主题相关:

SJA-1110-Qbv配置

SJA1110-Qbv-AdminBaseTime-Configuration


在配置 S32G-VNP-RDB3 板上的 SJA1110 交换机的 Qbv 时,我一直使用 NXP 的 S32G SJA1110 SDK 来设置 gPTP/Qbv 参数,编译新的sja1110_uc.bin文件,并将其部署到 A-core Linux 电路板支持包 的固件文件夹中。


最初,我使用 PFE0 接口(SJA1110 交换机端口 4)作为 gPTP 主服务器,并将 ADMINBASETIME 设置为 0。我进行了一些测试和验证,一切迹象都表明它的行为符合预期。

然而,在项目进行过程中,我不得不重新分配角色,以便现在 gPTP 主控节点将来自连接到端口 3 的外部设备。

从我连接这个外部设备的那一刻起,Qbv 的性能就会变得非常不稳定。

我进行了一些测试,例如从较大的循环值开始:

Cycle = 1 sec -> 125000000
CycleExt (12.5%) = 15625000

segment 1 = 0.25 sec TCs 0 and 1 GATESTATUS 1 and 0
segment 2 = 0.25 sec TCs 2 and 3 GATESTATUS 6 and 7
segment 3 = 0.25 sec TCs 4 and 5 GATESTATUS 2 and 3
segment 4 = 0.25 sec TCs 6 and 7 GATESTATUS 4 and 5

port 3: TRIGGER_TIME = 1250000 (2x625000)
port 4: TRIGGER_TIME = 3125000 (4x781250)
ports 5...: TRIGGER_TIME = 125000

为了进行测试,我从客户端(S32G PFE0 接口)向连接在同一网络上的另一个 Linux 设备(作为服务器)发送 UDP 数据包。

我在服务器端使用 tcpdump 工具捕获数据包,并分析结果。

在这种情况下,传输会在几秒钟后开始,但一旦开始,它就会正常工作(1 秒周期,给定流量优先级的 25%):

Screenshot 2026-07-08 084413.png

然后,我将 GATESTATUS 分成四个段,但将周期时间缩短至 200 毫秒:


Cycle = 200ms -> 25000000
CycleExt = 3125000

segment 1 = 50 ms TCs 0 and 1 GATESTATUS 1 and 0
segment 2 = 50 ms TCs 2 and 3 GATESTATUS 6 and 7
segment 3 = 50 ms TCs 4 and 5 GATESTATUS 2 and 3
segment 4 = 50 ms TCs 6 and 7 GATESTATUS 4 and 5

port 3: TRIGGER_TIME = 250000
port 4: TRIGGER_TIME = 625000
ports 5...: TRIGGER_TIME = 25000

这样做是可行的,但我需要等待 30 秒到 2 分钟才能开始传输数据包。


Screenshot 2026-07-08 085025.png

在随后的测试中,我观察到了同样的模式:

  • 当循环时间缩短至 100 毫秒时,我需要等待 2 到 4 分钟才能开始传输;
  • 当循环时间缩短到 50 毫秒时,我需要等待 5 到 6 分钟才能开始传输。

等等。因此,周期长度越短,Qbv 实际开始前的等待时间就越长。在此之前,交通一直处于阻塞状态。


但是,当我进行以下配置时,观察到了另一种奇怪的现象:

Cycle = 0.5 ms -> 62500
CycleExt = 7812

segment 1 = 30 μsec TCs 0, 1, 2, 4, 5, and 7: GATESTATUS 0, 1, 2, 3, 5, 6, and 7
segment 2 = 300 μsec TC 6: GATESTATUS 4
segment 3 = 170 μsec TCs 0, 1, 2, 4, 5, and 7: GATESTATUS 0, 1, 2, 3, 5, 6, and 7

在这种情况下,除了TC6之外,所有交通流量都将通过。

当我反转配置时:

Cycle = 0.5 ms -> 62500
CycleExt = 7812

segment 1 = 30 μsec TC 6: GATESTATUS 4
segment 2 = 170 μsec TCs 0, 1, 2, 4, 5, and 7: GATESTATUS 0, 1, 2, 3, 5, 6, and 7
segment 3 = 300 μsec TC 6: GATESTATUS 4

在这种情况下,只有 TC6 的流量会被传输,而其他 TC 的流量将被阻止。


我认为,这指向了时间同步问题。

以下是我在S32DS上配置gPTP的方法:

Screenshot 2026-07-08 090805.png

Screenshot 2026-07-08 091033.png

值得一提的是,这个外部 gPTP 主服务器提供的同步时间戳基于当前的 Unix 纪元:

Screenshot 2026-07-01 110153.png


当 PFE0 用作主控时,它会提供从 0 开始的同步时间戳:


Screenshot 2026-07-08 091440.png

这种行为该如何解释?


感谢您的支持!


顺祝商祺!

吉列尔梅

Re: Connectivity issue in SJA1110

你好@GuilhermeS32G

是的,请稍候,您将获得访问权限。除了保密协议外,汽车以太网还属于出口管制政策的范畴。

我认为,ECT 工具是交换机动态重配置相关代码的绝佳来源。

是的,将 Unix epoch gPTP时间戳拆分为 ADMINBASETIME[0:31] 和 ADMINBASETIME[32:63] 是正确的方法。

顺祝商祺!

帕维尔

Re: Connectivity issue in SJA1110

@PavelL


感谢您的反馈,

确实,这种ECT工具似乎是正确的选择。

但是,我仍然无法下载它。上面写着:“SJA11XX 标准软件 - 您的申请表已收到”。我可能需要等待一段时间才能获得访问权限。


同时,为了更清楚地说明,我们假设当前的 Unix 时间戳(精确到纳秒)是:

1784013205012345678

这在世界协调时 (UTC) 代表:

2026年7月14日星期二上午7:13:25


如何正确地将此时间戳拆分为 ADMINBASETIME[0:31] 和 ADMINBASETIME[32:63]?


顺祝商祺!

吉列尔梅



Re: Connectivity issue in SJA1110

你好@GuilhermeS32G

感谢您创建后续讨论帖——这有助于我们了解案件的最新进展。

感谢您一次性分享所有细节和测试结果。

我已检查所提供的数据,您的 gPTP 配置似乎是正确的。

 
根据您的观察,该行为强烈表明问题与 Qbv 调度激活时间有关,而非门控列表条目本身。如果外部 gPTP 主时钟提供基于纪元的 PTP 时间值,而 ADMINBASETIME 配置为 0,则 ADMINBASETIME = 0 相对于当前同步的 gPTP 时域而言非常遥远,交换机需要基于该值解析 Qbv 更改/启动时间。与 PTP 时间接近零的设置相比,这可能会导致意外的调度激活行为。因此,将 ADMINBASETIME 设置为当前同步的 PTP 时域中的未来值更为安全。
 

因此,对于此用例,我建议根据当前同步的 PTP/gPTP 时间动态配置 ADMINBASETIME(并在静态配置中仍然使用固定值 0)。

典型的序列如下:

1. 启动 gPTP 并等待交换机与外部主控交换机同步。

2. 从交换机读取当前的 PTP 时钟。

3. 将 ADMINBASETIME 设置为未来的时间值,例如当前 PTP 时间 + 足够的安全裕度。

4. 编写 TAS/Qbv 管理参数。

5. 触发 TAS/Qbv 配置更改。

您可以参考 ECT 服务器的实现。特别是请查看udp_traffic.c文件中的 udpReceiveCallback() 函数。无论您使用的是 ECT 服务器的 SDK 版本还是 RTD 版本,都无关紧要。

PavelL_0-1783939380327.png


在 TAS 配置处理中,ECT 服务器(SDK 版本)使用 SWITCH_DRV_GetPtpClk() 读取当前 PTP 时间,将此值赋给 TAS 基准时间,加上 2 秒的裕量,然后调用 SWITCH_DRV_WriteTasAdminParameters(),再调用 SWITCH_DRV_ChangeTasConfig()。

 

这种方法避免使用 ADMINBASETIME = 0,并将 Qbv 调度激活与实际同步的 PTP 时间域对齐。

顺祝商祺!

帕维尔

タグ(1)
評価なし
バージョン履歴
最終更新日:
10 時間前
更新者: