Tôi gặp sự cố khi đồng bộ hóa với hệ thống Linux bằng PTP.
Cài đặt:
Hai PCB với mô-đun BegleCore và DP83640 PHY được kết nối với nhau qua Ethernet. Một bảng nên đóng vai trò là chủ PTP, bảng còn lại là nô lệ.
Debian 10, Hạt nhân: 4.19.94
Trình điều khiển cho Phy đã được tải.
Sử dụng linuxptp v3.1
Trên hệ thống chính, tôi chạy lệnh:
sudo ptp4l -i eth0 -f linuxptp/configs/configMaster.cfg -m
Trên hệ thống máy khách tôi chạy:
sudo ptp4l -i eth0 -f linuxptp/configs/configslave.cfg -m
Nội dung của configMaster.cfg:
[toàn cầu]
máy chủChỉ 1
BMCA
Nội dung của configSlave.cfg:
[toàn cầu]
khách hàngChỉ 1
BMCA
bước_ngưỡng 1
Điều này dẫn đến đầu ra sau trên nô lệ:
ptp4l[438753.396]: đã chọn /dev/ptp0 làm đồng hồ PTP
ptp4l[438753.409]: cổng 1 (eth0): KHỞI TẠO thành NÔ LỆ trên INIT_COMPLETE
ptp4l[438753.414]: cổng 0 (/var/run/ptp4l): BẮT ĐẦU NGHE trên INIT_COMPLETE
ptp4l[438753.418]: cổng 0 (/var/run/ptp4lro): BẮT ĐẦU NGHE trên INIT_COMPLETE
ptp4l[438754.075]: cổng 1 (eth0): chủ nước ngoài mới 304511.fffe.0ff048-1
ptp4l[438758.074]: đã chọn đồng hồ chính tốt nhất 304511.fffe.0ff048
ptp4l[438762.072]: độ lệch chính 2426120726467 s0 freq -261066 độ trễ đường dẫn 15040
ptp4l[438762.074]: đã chọn đồng hồ chính tốt nhất 304511.fffe.0ff048
ptp4l[438765.074]: độ lệch chính 2426120697575 s1 freq -270698 độ trễ đường dẫn 15156
ptp4l[438767.072]: độ lệch chính 2426120678191 s0 freq -270698 độ trễ đường dẫn 15156
ptp4l[438768.075]: độ lệch chính 2426120668273 s1 freq -280618 độ trễ đường dẫn 15830
ptp4l[438769.072]: độ lệch chính 2426120658469 s0 freq -280618 độ trễ đường dẫn 15830
ptp4l[438770.073]: độ lệch chính 2426120648789 s0 freq -280618 độ trễ đường dẫn 16022
ptp4l[438771.076]: độ lệch chính 2426120639057 s1 freq -290350 độ trễ đường dẫn 16022
...
Độ lệch được báo cáo là khoảng 40 phút. Trước khi chạy ptp4l, tôi đã đặt đồng hồ PTP trong PHY với testptp -s
đến thời gian hệ thống hiện tại. Do đó, các đồng hồ PTP thực sự cách nhau vài giây.
Mỗi lần ptp4l báo cáo "master offset s1 ...", nó sẽ đẩy đồng hồ PTP lùi lại 40 phút (được kiểm tra bằng testptp -g
). Tuy nhiên, phần bù được báo cáo chỉ thay đổi khoảng 10 us.
Tôi cũng đã xem xét lưu lượng mạng với Wireshark và thấy rằng các thông báo Tiếp theo từ thiết bị chính chứa dấu thời gian bằng khoảng 69 phút so với đồng hồ PTP trong PHY được đặt thành.
Sau khi thêm đầu ra gỡ lỗi vào ptp4l, tôi thấy rằng trên nô lệ, dấu thời gian mà nó trích ra từ cmsss được trả về từ ổ cắm được bù khoảng -27 phút so với đồng hồ PTP của máy khách thực sự là gì.
Sự khác biệt giữa dấu thời gian sai (+69 phút) do chủ gửi và dấu thời gian đọc sai (-27 phút) do máy khách dẫn đến 40 phút chênh lệch giả định giữa đồng hồ chính và đồng hồ khách.