万象奥科 发表于 2024-11-7 10:58

以RK3568为例,ARM核心板如何实现NTP精准时间同步?


[*]背景
网络时间协议NTP(Network TimeProtocol)是用于互联网中时间同步的标准互联网协议,可以把计算机的时间同步到某些时间标准。NTP对于我们产品来说有什么用呢,简单的讲,当你的设备时间不准确了,你可以接入到互联网,从网上同步一下时间,非常方便。对于我们嵌入式行业,大批量生产板卡烧写系统时,逐个给产品统一时间无疑是一件很痛苦的事情,所以我们选择一台主机作为NTP服务器,让板卡通过NTP服务去同步该时间,便可高效解决这个问题!

2. 技术实现接下来为大家演示下使用方法,这里使用RK3568评估板与一台电脑主机做方案验证。https://18821080.s21i.faiusr.com/4/ABUIABAEGAAgi4mmuQYoxMrRhQMwjQY4jgM!600x600.png图1   HD-RK3568-CORE核心板
2.1 电脑主机配置1.Windows 运行打开“regedit”编辑注册表;https://18821080.s21i.faiusr.com/4/ABUIABAEGAAg9LuGuQYonOLt4QQwiwM43gE.png2.找到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters",设定值修改为“NTP”;https://18821080.s21i.faiusr.com/4/ABUIABAEGAAg9LuGuQYogdPInAcwxQc45QU.png3.找到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config",修改设定值为5。AnnounceFlags的值为5时,强制时钟源为本地CMOS时钟。https://18821080.s21i.faiusr.com/4/ABUIABAEGAAg9LuGuQYojZDqqgQwxAc45QU.png4."HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer",数值修改为1。此作用为开启NTP服务器功能(默认是不开启NTP Server服务,除非电脑升级成为域控制站)https://18821080.s21i.faiusr.com/4/ABUIABAEGAAg9LuGuQYonNC95QQwxgc46gU.png5.重起Windows Time服务a)打开开始菜单输入“CMD”在命令行模式下输入:net stop w32time && net start w32time重启一下win32time服务,如未启动w32time 只需执行 net start w32time 即可b) 打开运行框 输入services.msc 打开服务.
https://18821080.s21i.faiusr.com/4/ABUIABAEGAAg9LuGuQYo1NzDwQMwjwM45gE.png将windows time 服务设置为自启(实测开启自动启动,重启后依然没有启动,需要手动启动)https://18821080.s21i.faiusr.com/4/ABUIABAEGAAg9LuGuQYo7pmFPTDWBjjRBA.png6.NTP服务为UDP 123端口,注意防火墙放开该端口,windows防火墙放开方法:netsh advfirewall firewall add rule name="NTP Server" dir=in action=allow protocol=UDP localport=1237.设置网口ip为192.168.1.10与开发板保持同网段。
2.2   linux端(RK3568)1.如使用buildroot文件系统,则使用chrony去同步时间:/etc/chrony.confserver192.168.1.110 iburstmaxdistance16.0makestep1.0 3driftfile/var/lib/chrony/driftrtcsync重启chrony服务/etc/init.d/S49chrony restart2.如使用debian使用ntpsystemctlstopntpntpdata 192.168.1.110END

页: [1]
查看完整版本: 以RK3568为例,ARM核心板如何实现NTP精准时间同步?