这里列举一些在汽车以太网中使用LinuxPTP的注意点。
请使用较新版本的LinuxPTP,可以自己编译部署!
在使用中,我遇到了某些指令或者配置文件关键字已经废弃,官方网页中的文档和实际工具对不上的问题。
研究发现是目标板中部署的LinuxPTP版本较老,而网上的文档较新。
在实际操作中可以自己根据源码编译部署。 保证文档和实际的工具是同一套。
LinuxPTP 兼容 汽车以太网中其他时间同步ECU,需要使用配置文件。因为某些配置项没有提供指令,而是以配置文件的形式记录和提供。
如果不指定/dev/PTP设备,工具会自动选择一个,请注意这个设备,在使用phc2sys时需要保持一致。
在配置文件中有一个配置项 ,transportSpecific 0x1。 其功能类似于VLAN , 在使用phc2sys时需要保持一致, 添加–transportSpecific=1 指令。
./ptp4l -i eth0 -f configs/automotive-slave.cfg -m -H
ptp4l[514.862]: selected /dev/ptp1 as PTP clock
ptp4l[514.896]: port 1 (eth0): INITIALIZING to SLAVE on INIT_COMPLETE
ptp4l[514.897]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[514.897]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[516.918]: rms 805708105219 max 1611416211536 freq -17263 +/- 6638 delay 7398 +/- 18
ptp4l[517.956]: rms 373 max 552 freq -18157 +/- 522 delay 7343 +/- 0
ptp4l[518.997]: rms 122271 max 345831 freq +45042 +/- 164142 delay -338043 +/- 0
ptp4l[520.038]: rms 216113 max 326596 freq +161766 +/- 281863 delay 7339 +/- 0
ptp4l[521.076]: rms 157176 max 250243 freq -221411 +/- 45583 delay 7341 +/- 0
ptp4l[522.117]: rms 21874 max 37404 freq -83173 +/- 30596 delay 7339 +/- 0
ptp4l[523.158]: rms 33590 max 35226 freq -14791 +/- 10063 delay 7341 +/-
ptp4l[524.196]: rms 22287 max 29284 freq -739 +/- 761 delay 7343 +/- 0
ptp4l[525.238]: rms 7574 max 12270 freq -6771 +/- 2469 delay 7352 +/- 0
ptp4l[526.276]: rms 1088 max 1613 freq -13943 +/- 1521 delay 7352 +/- 0
ptp4l[527.317]: rms 1842 max 1948 freq -17425 +/- 526 delay 7370 +/- 0
ptp4l[528.358]: rms 1134 max 1414 freq -18019 +/- 120 delay 7392 +/- 0
ptp4l[529.399]: rms 373 max 576 freq -17696 +/- 115 delay 7392 +/- 0
ptp4l[530.437]: rms 87 max 192 freq -17293 +/- 111 delay 7392 +/- 0
ptp4l[531.478]: rms 117 max 197 freq -17122 +/- 70 delay 7376 +/- 0
使用 -s /dev/ptp1 -c CLOCK_REALTIME 来指定时钟源和目标修改的时钟,避免通过-a 自动选择使得选取的时钟源和前面ptp4l中同步的硬件时钟不一致。
有的/dev/PTP 会受到硬件限制或者配置限制,而在实现同步的过程中出现报错。例如,不支持快速step跃迁。这个时候可以读取/dev/ptp 设备的属性配置,或者更改其配置。如果有多个/dev/ptp设备可以更换选择不同的/dev/ptp设备来尝试。
./phc2sys -s /dev/ptp1 -c CLOCK_REALTIME -w -O 0 --transportSpecific=1 -m
phc2sys[734.929]: CLOCK_REALTIME phc offset -232 s0 freq -17079 delay 520
phc2sys[735.930]: CLOCK_REALTIME phc offset -378 s2 freq -17225 delay 605
phc2sys[736.930]: CLOCK_REALTIME phc offset -203 s2 freq -17428 delay 505
phc2sys[737.930]: CLOCK_REALTIME phc offset 47 s2 freq -17239 delay 600
phc2sys[738.931]: CLOCK_REALTIME phc offset 125 s2 freq -17147 delay 600
phc2sys[739.931]: CLOCK_REALTIME phc offset 201 s2 freq -17034 delay 505
phc2sys[740.931]: CLOCK_REALTIME phc offset 109 s2 freq -17065 delay 535
phc2sys[741.932]: CLOCK_REALTIME phc offset 1 s2 freq -17141 delay 605
phc2sys[742.932]: CLOCK_REALTIME phc offset 57 s2 freq -17084 delay 540
phc2sys[743.932]: CLOCK_REALTIME phc offset -43 s2 freq -17167 delay 590
phc2sys[744.932]: CLOCK_REALTIME phc offset 27 s2 freq -17110 delay 515