Megosztás a következőn keresztül:


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 setenvTZ 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.