Share via


Üst düzey uygulamalarda sistem süresini ve RTC'yi yönetme

RTC (gerçek zamanlı saat), cihaz güç kaybettiğinde ve cihaz yeniden başlatıldıktan sonra ağ bağlantısına erişimi olmadığında Azure Sphere cihazında zamanı korumak için kullanılır. Bu, bir NTP sunucusuna erişimi olmasa bile cihazın güç kaybı sırasında süre korumasını sağlar.

Sistem süresini ayarlarsanız cihaz güç kaybettiğinde kalıcı olmaz. Güç kaybı sırasında süreyi kalıcı hale getirmek için Applibs işlevini clock_systohc çağırmanız gerekir. clock_systohc çağrıldığında sistem zamanı RTC'ye iletilir.

RTC gereksinimleri

RTC kullanan uygulamaların uygun üst bilgi dosyalarını içermesi ve uygulama bildirimine RTC ayarları eklemesi gerekir.

Üst bilgi dosyaları

Projenize rtc üst bilgisini ekleyin:

 #include <applibs\rtc.h>

Uygulama bildirimi ayarları

RTC ve standart saat API'lerini kullanmak için uygulama bildirimine SystemTime uygulama özelliğini eklemeniz ve ardından değerini olarak trueayarlamanız gerekir. Azure Sphere uygulama bildirimi, uygulama bildirimi hakkında daha fazla ayrıntıya sahiptir.

{
  "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
  }
}

Sistem saatini alma

Sistem saatini almak için standart clock_gettime işlevi çağırın.

Sistem saatini ayarlama

Sistem saatini ayarlamak için standart clock_settime işlevi çağırın.

Sistem saatini RTC ile eşitleme

Sistem zamanı ayarlandığında, cihaz güç kaybettiğinde kalıcı olmaz. Güç kaybı sırasında süreyi kalıcı hale getirmek için Applibs clock_systohc işlevini çağırın. clock_systohc çağrıldığında sistem saati RTC'ye iletilir.

NTP istemci hizmetini yapılandırma

NTP istemci hizmeti varsayılan olarak etkindir. NTP istemci hizmeti etkinken sistem saatini ayarlarsanız, cihazın İnternet bağlantısı olduğunda UTC saatinin üzerine yazar. NTP istemci hizmetini devre dışı bırakabilirsiniz; ancak sistem saati ile NTP sunucu süresi arasındaki fark çok büyükse bu durum cihazdaki bulut güncelleştirmelerinin başarısız olmasına neden olabilir.

Saat dilimini ayarlama

Sistem saati ve RTC saati GMT/UTC'de depolanır. TZ ortam değişkenini güncelleştirmek için işlevini çağırıp setenv işlevi çağırarak uygulamanız tarafından kullanılan saat dilimini tzset değiştirebilirsiniz.

SetTimeFromLocation projesi konum bilgilerini almak, ardından konum için zaman almak ve cihaz süresini ayarlamak için Ters IP aramasının nasıl kullanılacağını gösterir. Bu proje, etkilenmeyen betikler, yardımcı programlar ve işlevler koleksiyonu olan Azure Sphere Galerisi'nin bir parçasıdır.

Azure Sphere işletim sistemi , TZ ortam değişkeni için bazı olası biçimleri destekler ancak tümünü desteklemez:

  • Geçerli saat dilimini Yaz Saati (DST) ile veya yaz saati olmadan ayarlayabilirsiniz. Örnekler: "EST+5", "EST+5EDT". Yerel saat dilimi Prime Meridian'ın batısındaysa bu değer pozitif, doğu ise negatiftir.
  • DST'nin geçerli olması gereken tarih ve saati belirtemezsiniz.
  • Saat dilimi dosyası/veritabanı belirtemezsiniz.

Güç kaybı sırasında saat dilimi ayarlarını korumak için değiştirilebilir depolamayı kullanarak saat dilimini kalıcı depolamada depolayabilir ve ardından cihaz yeniden başlatıldığında ayarı geri çekebilirsiniz.

NTP sunucusu belirtme

NTP istemci hizmeti, birden çok kaynaktan zaman elde etmek için yapılandırılabilir. Varsayılan zaman kaynağı, Azure Sphere işletim sistemi ağ gereksinimlerinde belirtildiği gibi şeklindedir prod.time.sphere.azure.net.

NTP istemcisi, başarılı bir eşitleme gerçekleşene kadar her 15 saniyede bir zaman eşitlemeyi dener. Zaman başarıyla eşitlendikten sonra, saati 24 saatte bir yeniden eşitlemeyi dener. Azure Sphere zaman eşitlemesi gerçekleştirdiğinde, ilk olarak 32678-61000 arasında rastgele bir UDP istemci kaynak bağlantı noktası kullanır. Bu bağlantı noktası başarısız olursa Azure Sphere, UDP istemci kaynak bağlantı noktası olarak 124 numaralı bağlantı noktasını kullanmayı dener.

Sistemin dhcp sunucusundan zaman almasını belirtebilir veya uygulamadaki saat kaynağını Networking_TimeSync_EnableCustomNTP veya Networking_TimeSync_EnableDefaultNTP aracılığıyla belirtebilirsiniz.

Zaman sunucusu kaynakları için DHCP kullanacak şekilde yapılandırılmışsa, Azure Sphere DHCP seçeneği 042'yi işler ve NTP istemcisi yalnızca TERCIH sırasına göre listelenmesi gereken DHCP seçeneğinde gönderilen ilk iki girdiyi işler. Bunlar birincil sunucu ve ikincil sunucu olarak kabul edilir.

Uygulama aracılığıyla birincil ve ikincil zaman sunucusunu belirtmek isterseniz Networking_TimeSync_EnableCustomNTP aracılığıyla bir zaman sunucusu da yapılandırabilirsiniz. Her sunucu tam etki alanı adı (FQDN) için uzunluk üst sınırı 255 karakterdir.

Geri dönüş

  • NTP istemcisi DHCP veya API aracılığıyla zaman sunucularını almak üzere yapılandırılmışsa, geri dönüş davranışını belirtmek için ek bir parametre gerekir.

  • İstemci önce birincil saat sunucusuyla iletişim kurmaya çalışır. İstemci geçerli bir zaman sunucusu yanıtı amazsa, ikincil saat sunucusunu (belirtilirse) dener.

  • İkincil bir zaman sunucusu belirtilirse ve sunucu başarısız olursa ya da başarısız aracılığıyla işletim sistemi varsayılanlarına Networking_NtpOption_FallbackServerEnabled geri dönme seçeneği başarısız olursa, sistem varsayılan işletim sistemi zaman kaynağı prod.time.sphere.azure.net ile iletişim kurar.

    • Sonraki 24 saatlik zaman eşitleme aralığında işletim sistemi geri döner ve birincil saat sunucusunu sorgulamaya çalışır.
  • Networking_NtpOption_FallbackServerDisabled belirttiyseniz işletim sistemi, sunuculardan biriyle başarıyla eşitlenene kadar her 15 saniyede bir birincil ve ikincil sunucuyu sorgulamaya devam eder.

Çok ana makineli cihazlar

Zaman sunucusu ayarları, arabirim ayarı başına değil genel bir ayardır. Azure Sphere cihazı çok ana bilgisayarlıysa ve her iki arabirim de DHCP aracılığıyla NTP sunucu bilgilerini alırsa, en son işlenen DHCP NTP seçenek kümesi kazanır.

Sistem zaman örneği

Sistem Zamanı örneği, sistem saatinin nasıl yönetileceğini ve donanım RTC'sinin nasıl kullanılacağını gösterir. Örnek uygulama sistem saatini ayarlar ve ardından sistem saatini RTC ile eşitlemek için işlevini kullanır clock_systohc .

SetTimeFromLocation projesi konum bilgilerini almak, ardından konum için zaman almak ve cihaz süresini ayarlamak için Ters IP aramasının nasıl kullanılacağını gösterir. Bu proje, etkilenmeyen betikler, yardımcı programlar ve işlevler koleksiyonu olan Azure Sphere Galerisi'nin bir parçasıdır.

Özel NTP örneği

Özel NTP örneği, NTP istemci hizmetinin birden çok kaynaktan zaman elde etmek için nasıl yapılandırılır olduğunu gösterir.