A rendszeridő és az RTC kezelése magas szintű alkalmazásokban
Az RTC (valós idejű óra) az Azure Sphere-eszközön töltött idő megtartására szolgál, amikor az eszköz elveszíti az áramellátását, és nem fér hozzá a hálózati kapcsolathoz az eszköz újraindítása után. Ez lehetővé teszi, hogy az eszköz fenntartsa az időt áramkimaradás esetén, még akkor is, ha nem rendelkezik hozzáféréssel egy NTP-kiszolgálóhoz.
Ha beállítja a rendszeridőt, az nem marad meg, amikor az eszköz áramkimaradást okoz. Az energiaveszteség idejének megőrzéséhez meg kell hívnia az Applibs függvényt clock_systohc. A clock_systohc meghívásakor a rendszer leküldi a rendszeridőt az RTC-nek.
RTC-követelmények
Az RTC-t használó alkalmazásoknak tartalmazniuk kell a megfelelő fejlécfájlokat, és rtc-beállításokat kell hozzáadniuk az alkalmazásjegyzékhez.
Fejlécfájlok
Adja meg az rtc fejlécet a projektben:
#include <applibs\rtc.h>
Alkalmazásjegyzék beállításai
Az RTC és a standard óra API-k használatához hozzá kell adnia az SystemTime
alkalmazásképességet az alkalmazásjegyzékhez, majd be kell állítania az értéket a értékre true
. Az Azure Sphere-alkalmazásjegyzék további részleteket tartalmaz az alkalmazásjegyzékről.
{
"SchemaVersion": 1,
"Name" : "Mt3620App3_RTC",
"ComponentId" : "bb267cbd-4d2a-4937-8dd8-3603f48cb8f6",
"EntryPoint": "/bin/app",
"CmdArgs": [],
"Capabilities": {
"AllowedConnections": [],
"AllowedTcpServerPorts": [],
"AllowedUdpServerPorts": [],
"HardwareAddressConfig": true,
"Gpio": [],
"Uart": [],
"WifiConfig": false,
"NetworkConfig": false,
"SystemTime": true,
"TimeSyncConfig": true
}
}
A rendszeridő lekérése
A rendszeridő lekéréséhez hívja meg a standard clock_gettime
függvényt.
A rendszeridő beállítása
A rendszeridő beállításához hívja meg a standard clock_settime
függvényt.
A rendszeridő szinkronizálása az RTC-vel
A rendszeridő beállításakor az nem marad meg, ha az eszköz áramkimaradást okoz. Az energiaveszteség idejének megőrzéséhez hívja meg az Applibs clock_systohc függvényt. Ha clock_systohc nevezik, a rendszer elküldi a rendszeridőt az RTC-nek.
Az NTP-ügyfélszolgáltatás konfigurálása
Az NTP-ügyfélszolgáltatás alapértelmezés szerint engedélyezve van. Ha beállítja a rendszeridőt, amíg az NTP-ügyfélszolgáltatás engedélyezve van, az felülírja az UTC-időt, amikor az eszköz internetkapcsolattal rendelkezik. Letilthatja az NTP-ügyfélszolgáltatást; Ez azonban azt eredményezheti, hogy az eszközön a felhőfrissítések meghiúsulnak, ha a rendszeridő és az NTP-kiszolgáló ideje között túl nagy a különbség.
Az időzóna beállítása
A rendszeridő és az RTC-idő GMT/UTC formátumban van tárolva. Az alkalmazás által használt időzónát úgy módosíthatja, hogy meghívja a függvényt a setenv
TZ környezeti változó frissítéséhez, majd meghívja a függvényt tzset
.
A SetTimeFromLocation projekt bemutatja, hogyan használható a Fordított IP-címkeresés a helyadatok lekéréséhez, majd a helyhez szükséges idő lekéréséhez és az eszköz időének beállításához. Ez a projekt az Azure Sphere Katalógus része, amely nem felügyelt szkriptek, segédprogramok és függvények gyűjteménye.
Az Azure Sphere operációs rendszer a TZ környezeti változó néhány, de nem az összes lehetséges formátumát támogatja:
- Az aktuális időzónát a nyári időszámítás (DST) használatával vagy anélkül is beállíthatja. Példák: "EST+5", "EST+5EDT". Ez az érték pozitív, ha a helyi időzóna nyugatra van a prime meridiántól, és negatív, ha keleti.
- Nem adhatja meg a DST érvénybe lépésének dátumát és időpontját.
- Nem adhat meg időzónafájlt/adatbázist.
Az időzóna-beállítások energiaveszteség esetén történő fenntartásához használhatja a módosítható tárolót az időzóna állandó tárolóban való tárolásához, majd visszahívhatja a beállítást az eszköz újraindításakor.
NTP-kiszolgáló megadása
Az NTP-ügyfélszolgáltatás konfigurálható úgy, hogy több forrásból szerezzen időt. Az alapértelmezett időforrás a prod.time.sphere.azure.net
, ahogy az az Azure Sphere operációs rendszer hálózatkezelési követelményeiben is szerepel.
Az NTP-ügyfél 15 másodpercenként kísérli meg a szinkronizálást, amíg sikeres szinkronizálás nem történt. Az idő sikeres szinkronizálása után 24 óránként megkísérli az idő újraszinkronizálását. Amikor az Azure Sphere időszinkronizálást végez, először egy véletlenszerű UDP-ügyfélportot használ 32678–61000 között. Ha ez a port meghibásodik, az Azure Sphere megkísérli az 124-as portot használni UDP-ügyfél forrásportjaként.
Megadhatja, hogy a rendszer időt szerezzen be egy DHCP-kiszolgálóról, vagy megadhatja az alkalmazás időforrását Networking_TimeSync_EnableCustomNTP vagy Networking_TimeSync_EnableDefaultNtp függvénnyel.
Ha úgy van konfigurálva, hogy DHCP-t használjon az időkiszolgáló-forrásokhoz, az Azure Sphere feldolgozja a 042-es DHCP-beállítást, és az NTP-ügyfél csak a DHCP beállításban elküldött első két bejegyzést dolgozza fel, amelyek sorrendben jelennek meg. Ezek elsődleges kiszolgálónak és másodlagos kiszolgálónak minősülnek.
Az időkiszolgálót Networking_TimeSync_EnableCustomNTP is konfigurálhatja, ha az alkalmazáson keresztül szeretné megadni az elsődleges és a másodlagos időkiszolgálót. A kiszolgáló teljes tartományneve (FQDN) minden egyes alkalommal legfeljebb 255 karakter hosszúságú lehet.
Tartalék
Ha az NTP-ügyfél úgy van konfigurálva, hogy a DHCP-n vagy AZ API-n keresztül szerezze be az időkiszolgálót, egy további paraméterre van szükség a tartalék viselkedés megadásához.
Az ügyfél először megpróbál kapcsolatba lépni az elsődleges időkiszolgálóval. Ha az ügyfél nem tud érvényes időkiszolgálói választ kapni, megpróbálkozhat a másodlagos időkiszolgálóval (ha meg van adva).
Ha meg van adva egy másodlagos időkiszolgáló, amely meghibásodik, vagy ha az operációs rendszer alapértelmezett értékére
Networking_NtpOption_FallbackServerEnabled
való visszaállás sikertelen, a rendszer ezután kapcsolatba lép az operációs rendszer alapértelmezett időforrásával prod.time.sphere.azure.net.- A következő 24 órás szinkronizálási időközben az operációs rendszer visszalép, és megpróbálja lekérdezni az elsődleges időkiszolgálót.
Ha Networking_NtpOption_FallbackServerDisabled adott meg, az operációs rendszer továbbra is 15 másodpercenként lekérdezi az elsődleges és a másodlagos kiszolgálót, amíg nem szinkronizálja az egyik időkiszolgálóval.
Többtényezős eszközök
Az időkiszolgáló beállításai globális beállítások, nem pedig felületi beállítások. Ha az Azure Sphere-eszköz többkiszolgálós, és mindkét interfész DHCP-n keresztül szerez be NTP-kiszolgálóadatokat, a legutóbb feldolgozott DHCP NTP-beállítások nyernek.
Rendszeridő minta
A Rendszeridő minta bemutatja, hogyan kezelheti a rendszeridőt, és hogyan használhatja a hardveres RTC-t. A mintaalkalmazás beállítja a rendszeridőt, majd a clock_systohc
függvénnyel szinkronizálja a rendszeridőt az RTC-vel.
A SetTimeFromLocation projekt bemutatja, hogyan használható a Fordított IP-címkeresés a helyadatok lekéréséhez, majd a helyhez szükséges idő lekéréséhez és az eszköz időének beállításához. Ez a projekt az Azure Sphere Katalógus része, amely nem felügyelt szkriptek, segédprogramok és függvények gyűjteménye.
Egyéni NTP-minta
Az egyéni NTP-minta bemutatja, hogyan konfigurálhatja az NTP-ügyfélszolgáltatást úgy, hogy több forrásból szerezzen időt.