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

例子

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

返回值

例子

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

六、功能驗證

七、總結
本 demo 介紹了如何使用NTP服務器同步時間。
常見問題
1、NTP同步時間后,這個clock精度高嗎,需要多久同步一次
并不能保證任何時間任何地點都能百分百同步到正確的時間。 所以,如果用戶項目中的業(yè)務邏輯嚴格依賴于時間同步功能 則不要使用本功能模塊,建議使用自己的應用服務器來同步時間。
2、多長時間NTP同步一次
正常使用, 一小時一次, 已經足夠了, 甚至 1 天一次也可以。
3、這個函數(shù) socket.sntp()后每次在程序中調用 os.time 也是實時時間了嗎?
是的,只要時間同步成功了,就是實時時間了。
4、NTP白名單地址是什么?
默認的ntp服務器為ntp.aliyun.com,自定義ntp地址可以通過socket.sntp("ntp.aliyun.com")設置。
注:本功能模塊采用免費公共的NTP服務器來同步時間,并不能保證任何時間任何地點都能百分百同步到正確的時間,所以,如果用戶項目中的業(yè)務邏輯嚴格依賴于時間同步功能,則不要使用使用本功能模塊,建議使用自己的應用服務器來同步時間。
今天的內容就分享到這里了~
審核編輯 黃宇
-
NTP
+關注
關注
1文章
264瀏覽量
15047 -
LuatOS
+關注
關注
0文章
163瀏覽量
2728
發(fā)布評論請先 登錄
LuatOS選型指南:基于Air780EPM的32/64位性能實測分析
Air780EPM嵌入式開發(fā):LuatOS下的MQTT通信實踐
實戰(zhàn)Air780EPM:構建4G共享網關,服務WiFi與有線設備!
Air780EPM開發(fā)板NTP對時教程:LuatOS腳本開發(fā)入門指南
LuatOS嵌入式開發(fā)實戰(zhàn):Air780EPM與MQTT通信
Air780EPM開發(fā)板FTP功能實戰(zhàn):LuatOS嵌入式開發(fā)全解析
LuatOS Air780EPM 開發(fā)板 HTTP 教程:原理講解與項目實操!
Air8101多網融合戰(zhàn)略升級:Air780EPM模塊助力4G聯(lián)網落地
優(yōu)化你的設計:Air780EPM場景化ADC硬件電路指南!
Air780EPM — ADC硬件電路設計:場景化優(yōu)化與實踐!
Air780EPM應用開發(fā):解鎖GPIO與LED的N種交互模式
解鎖Air780EPM:N種GPIO操控LED的實戰(zhàn)技巧!
揭秘Air780EPM開發(fā)陷阱:20個避坑指南與最佳解決方案
如何解決Air780EPM開發(fā)中的調試難題?深度解析高效調試方法
深度解析Air780EPM模組:LuatOS下CAN總線通信的完整方案!
一文搞懂Air780EPM的NTP通信:LuatOS腳本開發(fā)教程
評論