以RK3568為例,ARM核心板如何實現NTP精準時間同步?

万象奥科發表於2024-11-07
  1. 背景

網路時間協議NTP(Network TimeProtocol)是用於網際網路中時間同步的標準網際網路協議,可以把計算機的時間同步到某些時間標準。NTP對於我們產品來說有什麼用呢,簡單的講,當你的裝置時間不準確了,你可以接入到網際網路,從網上同步一下時間,非常方便。

對於我們嵌入式行業,大批次生產板卡燒寫系統時,逐個給產品統一時間無疑是一件很痛苦的事情,所以我們選擇一臺主機作為NTP伺服器,讓板卡透過NTP服務去同步該時間,便可高效解決這個問題!

2. 技術實現

接下來為大家演示下使用方法,這裡使用RK3568評估板與一臺電腦主機做方案驗證。

圖1 HD-RK3568-CORE核心板

2.1 電腦主機配置

1.Windows 執行開啟“regedit”編輯登錄檔;

2.找到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters",[Type]設定值修改為“NTP”;

3.找到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config",[AnnounceFlags]修改設定值為5。AnnounceFlags的值為5時,強制時鐘源為本地CMOS時鐘。

4."HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer",[Enabled]數值修改為1。此作用為開啟NTP伺服器功能(預設是不開啟NTP Server服務,除非電腦升級成為域控制站)

5.重起Windows Time服務

a)開啟開始選單輸入“CMD”在命令列模式下輸入:

net stop w32time && net start w32time

重啟一下win32time服務,如未啟動w32time 只需執行 net start w32time 即可

b) 開啟執行框 輸入services.msc 開啟服務.

將windows time 服務設定為自啟

(實測開啟自動啟動,重啟後依然沒有啟動,需要手動啟動)

6.NTP服務為UDP 123埠,注意防火牆放開該埠,windows防火牆放開方法:

netsh advfirewall firewall add rule name="NTP Server" dir=in action=allow protocol=UDP localport=123

7.設定網口ip為192.168.1.10與開發板保持同網段。

2.2 linux端(RK3568)

1.如使用buildroot檔案系統,則使用chrony去同步時間:

/etc/chrony.conf
server 192.168.1.110 iburst
maxdistance 16.0
makestep 1.0 3
driftfile /var/lib/chrony/drift
rtcsync

重啟chrony服務

/etc/init.d/S49chrony restart

2.如使用debian使用ntp

systemctlstopntp

ntpdata 192.168.1.110

至此我們完成了對NTP功能的演示。

END

相關文章