Üst düzey uygulamalarda sistem süresini ve RTC'yi yönetme
Önemli
Bu, Azure Sphere (Eski) belgeleridir. Azure Sphere (Eski) 27 Eylül 2027'de kullanımdan kaldırılıyor ve kullanıcıların bu zamana kadar Azure Sphere'e (Tümleşik) geçmeleri gerekiyor. Azure Sphere (Tümleşik) belgelerini görüntülemek için İçindekiler tablosu üzerinde bulunan Sürüm seçiciyi kullanın.
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ı tutmak 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.
Üstbilgi 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 true
ayarlamanı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 zamanı 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 İnternet bağlantısı olduğunda UTC saatinin üzerine yazar. NTP istemci hizmetini devre dışı bırakabilirsiniz; ancak sistem saati ile NTP sunucu saati 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 olarak depolanır. TZ ortam değişkenini güncelleştirmek için işlevini çağırıp işlevi çağırarak setenv
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şlevlerden oluşan 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 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, saat dilimini kalıcı depolamada depolamak ve ardından cihaz yeniden başlatıldığında ayarı geri çağırmak için değiştirilebilir depolamayı kullanabilirsiniz.
NTP sunucusu belirtme
NTP istemci hizmeti, birden çok kaynaktan zaman elde etmek için yapılandırılabilir. Azure Sphere işletim sistemi ağ gereksinimlerinde belirtildiği gibi varsayılan zaman kaynağıdır prod.time.sphere.azure.net
.
NTP istemcisi, başarılı bir eşitleme gerçekleşene kadar her 15 saniyede bir 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 Networking_TimeSync_EnableCustomNTP veya Networking_TimeSync_EnableDefaultNTP aracılığıyla uygulamadaki zaman kaynağını belirtebilirsiniz.
Zaman sunucusu kaynakları için DHCP kullanacak şekilde yapılandırılırsa, Azure Sphere DHCP seçeneği 042'yi işler ve NTP istemcisi yalnızca DHCP seçeneğinde gönderilen ilk iki girdiyi işler ve tercih sırasına göre listelenmelidir. Bunlar birincil sunucu ve ikincil sunucu olarak kabul edilir.
Uygulama aracılığıyla birincil ve ikincil saat sunucusunu belirtmek istiyorsanız 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 saat sunucusu yanıtı amazsa, ikincil saat sunucusunu (belirtilirse) dener.
İkincil bir zaman sunucusu belirtilirse ve sunucu başarısız olursa ya da 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ğına prod.time.sphere.azure.net.- 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 birincil ve ikincil sunucuyu, zaman sunucularından biriyle başarıyla eşitlenene kadar her 15 saniyede bir sorgulamaya devam eder.
Birden çok ana makineli cihazlar
Zaman sunucusu ayarları, arabirim başına ayar 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şlevlerden oluşan 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 gösterir.