上一回,我們用“Pi 5 + DM9058”這頭猛獸去單挑 PC,感受到了硬體 PTP 的威力。但說實話,PC 那個非即時的 Windows/Linux OS 總是讓人覺得有一絲絲的不完美——那不可控的系統延遲和抖動,就像是賽車場上的減速帶。
今天,我們要玩把大的!拋棄 PC,直接讓兩台“Pi 5 + DM9058”正面硬剛!
這篇“進階玩家篇”將帶你進入純粹的嵌入式同步領域。我們將搭建 兩套完全相同的 Pi 5 系統,啟用 Davicom(聯傑)的 DM9058 殺手鐧功能——One-Step (單步驟) 模式。這就像是把兩個頂尖的高手關在同一個房間裡對表,排除一切外界干擾,看看納秒級的同步究竟能有多狠!
單一 Pi 5 對 PC 固然好用,但 PC 的網卡和驅動往往受限於通用的 x86 架構,難以完全發揮 PTP1588 的極致性能。
兩台 Pi 5 直連的意義在於:
1. 完全對稱的硬體: 就像另外那個世界的“鏡像”,沒有硬體差異帶來的奇怪延遲。
2. 純淨的 OS 環境: 都是即時性調教過的 Raspberry Pi OS,沒有 PC 後臺亂七八糟的服務干擾。
3. One-Step 模式解鎖: 這是今天的重頭戲。只有在這樣的環境下,我們才能無痛開啟並驗證 One-Step 模式,減少網路負載,提升同步精度。
要玩這一票,你需要雙份的快樂:
| 角色 | 裝備清單 |
|---|---|
| Master (指揮官) | Pi 5 (4GB/8GB) + DM9058 擴展板 + 27W 原廠電源 |
| Slave (跟隨者) | Pi 5 (4GB/8GB) + DM9058 擴展板 + 27W 原廠電源 |
| 連接介質 | 一根高品質的 Cat.5e 或 Cat.6 網線 (直接捅進兩邊的 DM9058 網口) |
架構圖:簡單粗暴的直連

這也是很多玩家容易搞混的地方,用最通俗的話來說:
* Two-Step (傳統模式):
Master 發出 Sync 封包時,心裡還沒底(不知道確切發出的時間)。發出去之後,趕緊看了一眼手錶,記錄下時間 t1,然後再發一個 Follow_Up 封包告訴 Slave:“嘿,剛才那個包是 t1 時間發出的。”
* 缺點:多發一個包,囉嗦。
* One-Step (極速模式):
Master 發出 Sync 封包。當封包經過 DM9058 硬體的那一瞬間,DM9058 像個神槍手一樣,直接把當前精確時間 t1 刻在了正在飛出去的封包裡!
Slave 收到封包時,裡面就已經有 t1 了。
* 優點:不需要 Follow_Up 封包! 乾淨、俐落、流量減半,逼格拉滿。
假設你的兩台 Pi 5 都已經按照上一篇教程裝好驅動了(網口通常是 eth1)。
在兩台機器上都跑一下 ethtool,確認它們都有 One-Step 的超能力:
sudo ethtool -T eth1
盯著輸出看,必須要有這一行,沒有就得去檢查驅動編譯了:
Hardware Transmit Timestamp Modes:
...
onestep-sync <-- 就是這個!核心技能!
在 Master (Site A) 上,我們要載入特定的設定檔來開啟 One-Step。驅動包裡已經貼心地備好了。
開火指令:
# 注意:確保你在 dm9058_linux_driver 目錄下
sudo ptp4l -i eth1 -m -H -f ptp4l_config/one_step_master.cfg
[!WARNING]
老鳥注意: 這裡的設定檔是專為 LinuxPTP v4.4 準備的。如果你用的是早於 v4.4 的版本,可能會報錯。既然玩 Pi 5 了,軟體也要跟上時代啊!
Slave (Site B) 其實很聰明,它會自動識別 Master 發來的是什麼格式。但為了保持隊形,我們還是給它一個標準的啟動指令。
啟動指令:
sudo ptp4l -i eth1 -m -H -s
盯著 Slave 端 的螢幕,你會看到 master offset 開始瘋狂收斂。
由於是 Pi 5 對 Pi 5 加上 直連,這裡的數值會比連 PC 時更穩、更小。
[... after 20 steps ...]:
ptp4l[8896.888]: master offset 12 s2 freq +9750 path delay 365
ptp4l[8897.888]: master offset 8 s2 freq +9750 path delay 365
ptp4l[8898.889]: master offset 5 s2 freq +9749 path delay 365
ptp4l[8899.888]: master offset 1 s2 freq +9747 path delay 366
ptp4l[8900.889]: master offset 1 s2 freq +9747 path delay 366
ptp4l[8901.889]: master offset -42 s2 freq +9704 path delay 369
ptp4l[8902.889]: master offset 0 s2 freq +9734 path delay 369
ptp4l[8903.889]: master offset 13 s2 freq +9747 path delay 369
ptp4l[8904.889]: master offset 14 s2 freq +9752 path delay 369
ptp4l[8905.889]: master offset 9 s2 freq +9751 path delay 369
ptp4l[8906.889]: master offset 8 s2 freq +9752 path delay 366
ptp4l[8907.889]: master offset 2 s2 freq +9749 path delay 366
ptp4l[8908.889]: master offset 2 s2 freq +9749 path delay 364
ptp4l[8909.889]: master offset 1 s2 freq +9749 path delay 362
ptp4l[8910.889]: master offset -1 s2 freq +9747 path delay 362
ptp4l[8911.889]: master offset -2 s2 freq +9746 path delay 362
ptp4l[8912.889]: master offset -1 s2 freq +9746 path delay 362
ptp4l[8913.889]: master offset -4 s2 freq +9743 path delay 366
ptp4l[8914.889]: master offset -2 s2 freq +9744 path delay 366
ptp4l[8915.889]: master offset -1 s2 freq +9744 path delay 369
看到那一個個個位數的納秒誤差了嗎?這就是金錢(硬體)的力量!
口說無憑,還是得看包。我們在 Slave 端 跑個 Wireshark,來看看 One-Step 到底長啥樣。
證據一:Follow_Up 消失了?!
沒錯,你的過濾欄輸入 ptp 後,你會發現整個世界清淨了。只有 Sync、Delay_Req 和 Delay_Resp 在跳舞。那個煩人的 Follow_Up 徹底消失了。

(看著這清爽的封包列表,強迫症患者表示極度舒適)
證據二:Sync 封包裡的秘密
隨便抓一個 Sync 封包打開看,找到 Precision Time Protocol -> flags。
你會發現 twoStepFlag 是 False (0)。

這代表 DM9058 已經在封包離港的瞬間,把以此為證的時間戳記狠狠地蓋了上去。
通過這個實驗,我們不僅驗證了Davicom(聯傑)的 DM9058 的硬實力,更在 Pi 5 上實現了一個完全獨立的納秒級同步網路。
One-Step 模式不僅節省了 50% 的 Sync 網路開銷,更減少了軟體協定棧的處理時間。這就是為什麼在稍微高端一點的工業自動化、雷達陣列或者音訊系統中,大家都搶著要用 One-Step。
現在,你手上的這兩台 Pi 5,已經不再是普通的單板電腦了,它們是兩台可以進行精密協同作戰的精密儀器。去開發你的分散式麥克風陣列、去調試你的多臂機器人吧——因為在時間同步這個問題上,你已經畢業了。
下課!
上一篇:玩家篇_樹莓派 Pi 5 核心效能結合 DM9058 1588 擴展 (一):高速 SPI 介面應用教學
下一篇:玩家篇_樹莓派 Pi 5 核心效能結合 DM9058 1588 擴展 (三):挑戰極限!驗證 DM9058 的納秒級同步精度