想在Air780EPM上用LuatOS實現NTP時間同步?這篇教程將用最通俗的方式講解實現原理與代碼實現,讓你快速掌握關鍵技能。
一、NTP通信概述
1.1 NTP
網絡時間協議(英語:Network Time Protocol,簡稱NTP)是在數據網絡潛伏時間可變的計算機系統之間通過分組交換進行時鐘同步的一個網絡協議。自1985年以來,NTP是仍在使用的最古老的互聯網協議之一。NTP由特拉華大學的David L. Mills設計。 NTP意圖將所有參與計算機的協調世界時(UTC)時間同步到幾毫秒的誤差內。它使用Marzullo算法的修改版來選擇準確的時間服務器,其設計旨在減輕可變網絡延遲造成的影響。NTP通常可以在公共互聯網保持幾十毫秒的誤差,并且在理想的局域網環境中可以實現超過1毫秒的精度。不對稱路由和擁塞控制可能導致100毫秒(或更高)的錯誤。 該協議通常描述為一種主從式架構,但它也可以用在點對點網上中,對等體雙方可將另一端認定為潛在的時間源。發送和接收時間戳采用用戶數據報協議(UDP)的通信端口123實現。這也可以使用廣播或多播,其中的客戶端在最初的往返校準交換后被動地監聽時間更新。NTP提供一個即將到來閏秒調整的警告,但不會傳輸有關本地時區或夏時制的信息。
1.2 SNTP
簡單網絡時間協議(Simple Network Time Protocol),由 NTP 改編而來,主要用來同步因特網中的計算機時鐘。在 RFC2030 中定義。 SNTP是簡化版的NTP,NTP(Network Time Protocol,網絡時間協議)是用于同步系統時間的協議。它通過網絡連接多個設備,確保這些設備的系統時鐘保持一致。SNTP相比較NTP主要區別在于精確度和復雜性。SNTP通常用于不需要高精度同步的設備。而NTP則用于要求較高時間精度的場景。
雖然現在的程序名字使用的是SNTP,但現在底層的實現已經改成NTP了,只是名字還沒改過來。對模組來說, 沒多大區別。
二、演示功能概述
本demo將演示使用NTP授時服務來同步時間。
三、準備硬件環境
參考:硬件環境清單第二章節內容,準備以及組裝好硬件環境。
四、軟件環境
在開始實踐本示例之前,先籌備一下軟件環境:
1.Luatools工具;
2. 內核固件文件(底層core固件文件):LuatOS-SoC_V2003_Air780EPM;參考項目使用的內核固件;
3. luatos需要的腳本和資源文件
腳本和資源文件:復制查看demo鏈接:https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EPM/demo/ntp
lib腳本文件:使用Luatools燒錄時,勾選 添加默認lib 選項,使用默認lib腳本文件;
準備好軟件環境之后,接下來查看如何燒錄項目文件到Air780EPM開發板,將本篇文章中演示使用的項目文件燒錄到Air780EP開發板中。
五、代碼示例介紹
5.1 API說明
5.1.1 socket.ntptm()
網絡對時后的時間戳(ms級別)
參數
無
返回值

例子

5.1.2 socket.sntp_port(port)
設置SNTP服務器的端口號
參數

返回值

例子

5.2 使用NTP授時服務來同步時間
5.2.1 demo 介紹

六、功能驗證

七、總結
本 demo 介紹了如何使用NTP服務器同步時間。
常見問題
1、NTP同步時間后,這個clock精度高嗎,需要多久同步一次
并不能保證任何時間任何地點都能百分百同步到正確的時間。 所以,如果用戶項目中的業務邏輯嚴格依賴于時間同步功能 則不要使用本功能模塊,建議使用自己的應用服務器來同步時間。
2、多長時間NTP同步一次
正常使用, 一小時一次, 已經足夠了, 甚至 1 天一次也可以。
3、這個函數 socket.sntp()后每次在程序中調用 os.time 也是實時時間了嗎?
是的,只要時間同步成功了,就是實時時間了。
4、NTP白名單地址是什么?
默認的ntp服務器為ntp.aliyun.com,自定義ntp地址可以通過socket.sntp("ntp.aliyun.com")設置。
注:本功能模塊采用免費公共的NTP服務器來同步時間,并不能保證任何時間任何地點都能百分百同步到正確的時間,所以,如果用戶項目中的業務邏輯嚴格依賴于時間同步功能,則不要使用使用本功能模塊,建議使用自己的應用服務器來同步時間。
今天的內容就分享到這里了~
審核編輯 黃宇
-
NTP
+關注
關注
1文章
247瀏覽量
14931 -
LuatOS
+關注
關注
0文章
134瀏覽量
2588
發布評論請先 登錄
實戰Air780EPM:構建4G共享網關,服務WiFi與有線設備!
Air780EPM開發板NTP對時教程:LuatOS腳本開發入門指南
LuatOS Air780EPM 開發板 HTTP 教程:原理講解與項目實操!
Air8101多網融合戰略升級:Air780EPM模塊助力4G聯網落地
優化你的設計:Air780EPM場景化ADC硬件電路指南!
Air780EPM — ADC硬件電路設計:場景化優化與實踐!
解鎖Air780EPM:N種GPIO操控LED的實戰技巧!
深度解析Air780EPM模組:LuatOS下CAN總線通信的完整方案!
深度解析——使用Luatools工具燒錄一個具體的項目到Air780EPM核心板中!
血淚教訓總結:Air780EPM的LuatOS二次開發——OneWire協議調試注意事項
手把手教你!4G模組Air780EPM——GPIO的設計說明
Air780EPM 模塊串口電路設計硬件指導

一文搞懂Air780EPM的NTP通信:LuatOS腳本開發教程
評論