ptp4l使用


ptp4l是關於1588v2 ptp協議棧的開源代碼,其中實現了各種ITU 規定的profile. ITU規定的各種profile主要滿足電信要求的一些profile, profile的定義請參看1588v2協議。Ptp4l實現了BC時鍾和OC時鍾. 本文主要分析ptp4l的開源代碼。

ptp4l的使用手冊 https://linux.die.net/man/8/ptp4l.

語法:

ptp4l [ -A | -E | -P ] [ -2 | -4 | -6 ] [ -H | -S | -L ] [ -f config ] [ -p phc-device ] [ -s ] [ -l print-level ] [ -q ] [ -v ] [ -i interface ] ...

選項

-A 自動選擇延遲機制,初始為E2E,當收到對端的delay request的時候切換到P2P.

-E 選擇延遲 請求-響應機制E2E。默認機制

-P 選擇對端延遲機制P2P.

-2 IEEE802.3網絡傳輸

-4 UDP IPv4傳輸 默認值

-6 UDP IPv6 傳輸

-H 硬件打時間戳

-S 軟件打時間戳

-L legacy硬件時間戳

-f config 讀取配置文件

-p phc設備,硬件時間戳的設備 /dev/ptp0

-s 只作為從時鍾

-l 打印級別,級別是根據syslog定義的。默認為6 LOG_INFO

-q 不打印消息到系統日志

-v 打印消息的標准輸出

-i interface 確定一個ptp的端口。

-h 顯示幫助信息

配置文件

配置文件分為幾個部分,每個部分的前面都是中括號包含名字,后面每一行都是名字和相應的設置組成。空行和以#開頭的行忽略。

全局配置部分[global]設置程序的參數,時鍾的參數,和端口的參數。其他的部分是端口特有的,端口特頭的設置會覆蓋默認全局的設置。端口的設置部分以端口的名字開頭,例如[eth0].

端口參數選項

logAnnounceInterval

Announce消息的平均時間間隔。時間間隔越小,ptp4l對變化的反應也越快。時間間隔在整個域中是一致的。它表示為2的多少次冪,單位是秒,默認值是1(2秒).

logSyncInterval

Sync消息的平均時間間隔。時間間隔越小越可能改善本地時鍾的精度。表示為2的多少次冪,單位是秒。默認值是0,(1秒).

logMinDelayReqInterval

Delay_req消息允許的最小時間間隔。間隔越小,ptp4l對於path_delay的計算越快。表示為2的多少次冪,單位是秒。默認值是0(1秒).

logMinPdelayReqInterval Pdelay_req消息允許的最小時間間隔。表示為2的多少次冪。默認值是0(1秒).

announceReceiptTimeout

在最后一個Announce消息過期前丟失Announce消息的數量。默認值是3.

transportSpecific

傳輸域中的特殊值,值是0-255,默認是0.

path_trace_enabled

跟蹤Announce消息的路由,默認是不使能的。

follow_up_info

此選項如果使能,將在Follow_Up消息里面包含802.1AS數據,默認是禁止的。

delay_mechanism

延遲機制,E2E, P2P還是Auto, 默認值是E2E

network_transport

網絡傳輸方式。默認值為UDPv4

程序和時鍾參數選項

twoStepFlag

slaveOnly

priority1

priority2

clockClass

clockAccuracy

offsetScaledLogVariance

domainNumber

free_running

freq_est_interval

assume_two_step

tx_timestamp_retries

clock_servo

pi_proportional_const

pi_integral_const

pi_offset_const

ptp_dst_mac

p2p_dst_mac

logging_level

verbose

use_syslog

time_stamping

 

生成配置文件

echo -e "[global]\ntx_timestamp_timeout\t1000\n" > ptp4l.cfg

echo -e "sanity_freq_limit\t0\n" >> ptp4l.cfg

echo -e "logSyncInterval\t0\n" >> ptp4l.cfg

echo -e "assume_two_step\t0\n" >> ptp4l.cfg

echo -e "twoStepFlag\t0\n" >> ptp4l.cfg

echo -e "time_stamping\tonestep\n" >> ptp4l.cfg

 

啟動ptp4l

/tmp # ptp4l -m -q -l 7 -p /dev/ptp0 -s -f ptp4l.cfg -i ieth

日志
ptp4l[76381.759]: config item (null).assume_two_step is 0
ptp4l[76381.759]: config item (null).check_fup_sync is 0
ptp4l[76381.759]: config item (null).tx_timestamp_timeout is 1000
ptp4l[76381.759]: config item (null).clock_servo is 0
ptp4l[76381.759]: config item (null).clock_type is 32768
ptp4l[76381.759]: config item (null).clock_servo is 0
ptp4l[76381.759]: config item (null).clockClass is 248
ptp4l[76381.759]: config item (null).clockAccuracy is 254
ptp4l[76381.759]: config item (null).offsetScaledLogVariance is 65535
ptp4l[76381.759]: config item (null).productDescription is ';;'
ptp4l[76381.759]: config item (null).revisionData is ';;'
ptp4l[76381.759]: config item (null).userDescription is ''
ptp4l[76381.759]: config item (null).manufacturerIdentity is '00:00:00'

 

ptp4l 中支持的servo, 比例積分控制器(PI), 線性回歸(linreg)。比例積分控制器(PI)是一種常用的自動控制器,請參考自動控制理論中PID控制器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM