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

例子

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

返回值

例子

5.2 使用NTP授時(shí)服務(wù)來同步時(shí)間
5.2.1 demo 介紹

六、功能驗(yàn)證

七、總結(jié)
本 demo 介紹了如何使用NTP服務(wù)器同步時(shí)間。
常見問題
1、NTP同步時(shí)間后,這個(gè)clock精度高嗎,需要多久同步一次
并不能保證任何時(shí)間任何地點(diǎn)都能百分百同步到正確的時(shí)間。 所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時(shí)間同步功能 則不要使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來同步時(shí)間。
2、多長時(shí)間NTP同步一次
正常使用, 一小時(shí)一次, 已經(jīng)足夠了, 甚至 1 天一次也可以。
3、這個(gè)函數(shù) socket.sntp()后每次在程序中調(diào)用 os.time 也是實(shí)時(shí)時(shí)間了嗎?
是的,只要時(shí)間同步成功了,就是實(shí)時(shí)時(shí)間了。
4、NTP白名單地址是什么?
默認(rèn)的ntp服務(wù)器為ntp.aliyun.com,自定義ntp地址可以通過socket.sntp("ntp.aliyun.com")設(shè)置。
注:本功能模塊采用免費(fèi)公共的NTP服務(wù)器來同步時(shí)間,并不能保證任何時(shí)間任何地點(diǎn)都能百分百同步到正確的時(shí)間,所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時(shí)間同步功能,則不要使用使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來同步時(shí)間。
今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2948文章
47962瀏覽量
416814 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6344瀏覽量
119405 -
NTP
+關(guān)注
關(guān)注
1文章
264瀏覽量
15036
發(fā)布評論請先 登錄
Air780EPM 模塊串口電路設(shè)計(jì)硬件指導(dǎo)
手把手教你!4G模組Air780EPM——GPIO的設(shè)計(jì)說明
新手必看!4G模組Air780EPM——GPIO的設(shè)計(jì)說明
血淚教訓(xùn)總結(jié):Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試注意事項(xiàng)
深度解析——使用Luatools工具燒錄一個(gè)具體的項(xiàng)目到Air780EPM核心板中!
深度解析Air780EPM模組:LuatOS下CAN總線通信的完整方案!
優(yōu)化你的設(shè)計(jì):Air780EPM場景化ADC硬件電路指南!
Air8101多網(wǎng)融合戰(zhàn)略升級(jí):Air780EPM模塊助力4G聯(lián)網(wǎng)落地
LuatOS Air780EPM 開發(fā)板 HTTP 教程:原理講解與項(xiàng)目實(shí)操!
Air780EPM嵌入式開發(fā):LuatOS下的MQTT通信實(shí)踐
一文搞懂Air780EPM的NTP通信:LuatOS腳本開發(fā)教程
實(shí)戰(zhàn)Air780EPM:構(gòu)建4G共享網(wǎng)關(guān),服務(wù)WiFi與有線設(shè)備!
LuatOS嵌入式開發(fā)實(shí)戰(zhàn):Air780EPM與MQTT通信
以Air780EPM開發(fā)板為例:FFT應(yīng)用示例核心要點(diǎn)全解析
LuatOS選型指南:基于Air780EPM的32/64位性能實(shí)測分析
Air780EPM開發(fā)板NTP對時(shí)教程:LuatOS腳本開發(fā)入門指南
評論