Mengelola waktu sistem dan RTC dalam aplikasi tingkat tinggi

RTC (jam real-time) digunakan untuk menyimpan waktu di perangkat Azure Sphere ketika perangkat kehilangan daya dan tidak memiliki akses ke koneksi jaringan setelah perangkat melakukan boot ulang. Ini memungkinkan perangkat mempertahankan waktu selama kehilangan daya bahkan jika tidak memiliki akses ke server NTP.

Jika Anda mengatur waktu sistem, waktu tidak akan tetap ada ketika perangkat kehilangan daya. Untuk bertahan selama hilangnya daya, Anda harus memanggil fungsi Applibs clock_systohc. Ketika clock_systohc dipanggil, waktu sistem didorong ke RTC.

Persyaratan RTC

Aplikasi yang menggunakan RTC harus menyertakan file header yang sesuai dan menambahkan pengaturan RTC ke manifes aplikasi.

File header

Sertakan header rtc di proyek Anda:

 #include <applibs\rtc.h>

Pengaturan manifes aplikasi

Untuk menggunakan RTC dan API jam standar, Anda harus menambahkan SystemTime kapabilitas aplikasi ke manifes aplikasi lalu mengatur nilai ke true. Manifes aplikasi Azure Sphere memiliki detail selengkapnya tentang manifes aplikasi.

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

Dapatkan waktu sistem

Untuk mendapatkan waktu sistem, hubungi fungsi standar clock_gettime .

Mengatur waktu sistem

Untuk mengatur waktu sistem, hubungi fungsi standar clock_settime .

Menyinkronkan waktu sistem dengan RTC

Ketika waktu sistem diatur, waktu sistem tidak akan tetap ada ketika perangkat kehilangan daya. Untuk bertahan selama hilangnya daya, hubungi applibs clock_systohc fungsi. Ketika clock_systohc disebut waktu sistem didorong ke RTC.

Mengonfigurasi layanan klien NTP

Layanan klien NTP diaktifkan secara default. Jika Anda mengatur waktu sistem saat layanan klien NTP diaktifkan, layanan ini akan menimpa waktu UTC ketika perangkat memiliki konektivitas internet. Anda dapat menonaktifkan layanan klien NTP; namun, hal ini dapat menyebabkan pembaruan cloud pada perangkat gagal jika perbedaan antara waktu sistem dan waktu server NTP terlalu besar.

Mengatur zona waktu

Waktu sistem dan waktu RTC disimpan dalam GMT/UTC. Anda bisa mengubah zona waktu yang digunakan oleh aplikasi Anda dengan memanggil setenv fungsi untuk memperbarui variabel lingkungan TZ, lalu memanggil fungsi tersebut tzset .

Proyek SetTimeFromLocation memperlihatkan cara menggunakan pencarian IP Terbalik untuk mendapatkan informasi lokasi, lalu mendapatkan waktu untuk lokasi, dan mengatur waktu perangkat. Proyek ini merupakan bagian dari Galeri Azure Sphere, kumpulan skrip, utilitas, dan fungsi yang tidak tertandingi.

Azure Sphere OS mendukung beberapa format yang memungkinkan untuk variabel lingkungan TZ:

  • Anda dapat mengatur zona waktu saat ini dengan atau tanpa Daylight Saving Time (DST). Contoh: "EST+5", "EST+5EDT". Nilai ini positif jika zona waktu lokal berada di sebelah barat Prime Meridian dan negatif jika berada di timur.
  • Anda tidak bisa menentukan tanggal dan waktu ketika DST harus diterapkan.
  • Anda tidak dapat menentukan file/database zona waktu.

Untuk mempertahankan pengaturan zona waktu selama hilangnya daya, Anda dapat menggunakan penyimpanan yang dapat diubah untuk menyimpan zona waktu di penyimpanan tetap, lalu memanggil kembali pengaturan saat perangkat melakukan boot ulang.

Menentukan server NTP

Layanan klien NTP dapat dikonfigurasi untuk mendapatkan waktu dari beberapa sumber. Sumber waktu default adalah prod.time.sphere.azure.net, seperti yang disebutkan dalam persyaratan jaringan Azure Sphere OS.

Klien NTP berusaha menyinkronkan waktu setiap 15 detik hingga sinkronisasi berhasil terjadi. Setelah berhasil menyinkronkan waktu, sinkronisasi waktu akan disinkronkan kembali setiap 24 jam sekali. Saat Azure Sphere melakukan sinkronisasi waktu, azure Sphere terlebih dahulu menggunakan port sumber klien UDP acak antara 32678-61000. Jika port ini gagal, Azure Sphere kemudian mencoba menggunakan port 124 sebagai port sumber klien UDP.

Anda bisa menentukan bahwa sistem mendapatkan waktu dari server DHCP, atau Anda bisa menentukan sumber waktu dalam aplikasi melalui fungsi Networking_TimeSync_EnableCustomNTP atau Networking_TimeSync_EnableDefaultNtp.

Jika dikonfigurasi untuk menggunakan DHCP untuk sumber server waktu, Azure Sphere akan memproses opsi DHCP 042 dan klien NTP hanya akan memproses dua entri pertama yang dikirim dalam opsi DHCP, yang harus tercantum dalam urutan preferensi. Ini akan dianggap sebagai server utama dan server sekunder.

Anda juga dapat mengonfigurasi server waktu melalui Networking_TimeSync_EnableCustomNTP jika ingin menentukan server waktu utama dan sekunder melalui aplikasi. Panjang maksimum untuk setiap server waktu yang sepenuhnya memenuhi syarat nama domain (FQDN) adalah 255 karakter.

Fallback

  • Jika klien NTP dikonfigurasi untuk mendapatkan server waktu melalui DHCP atau API, parameter tambahan diperlukan untuk menentukan perilaku fallback.

  • Klien akan mencoba menghubungi server waktu utama terlebih dahulu. Jika klien gagal mendapatkan respons server waktu yang valid, klien akan mencoba server waktu sekunder (jika ditentukan).

  • Jika server waktu sekunder ditentukan dan gagal, atau jika opsi untuk kembali ke default OS melalui Networking_NtpOption_FallbackServerEnabled kegagalan, sistem kemudian akan menghubungi sumber waktu OS default prod.time.sphere.azure.net.

    • Pada interval sinkronisasi waktu 24 jam berikutnya, OS akan kembali dan berusaha membuat kueri ke server waktu utama.
  • Jika Anda menentukan Networking_NtpOption_FallbackServerDisabled, OS akan terus membuat kueri ke server utama dan sekunder setiap 15 detik hingga berhasil disinkronkan dengan salah satu server waktu.

Perangkat multihomed

Pengaturan server waktu adalah pengaturan global, bukan pengaturan antarmuka per. Jika perangkat Azure Sphere multihomed dan kedua antarmuka mendapatkan informasi server NTP melalui DHCP, rangkaian opsi NTP DHCP yang paling baru diproses akan menang.

Sampel waktu sistem

Sampel Waktu Sistem memperlihatkan cara mengelola waktu sistem dan menggunakan RTC perangkat keras. Aplikasi sampel mengatur waktu sistem lalu menggunakan clock_systohc fungsi untuk menyinkronkan waktu sistem dengan RTC.

Proyek SetTimeFromLocation memperlihatkan cara menggunakan pencarian IP Terbalik untuk mendapatkan informasi lokasi, lalu mendapatkan waktu untuk lokasi, dan mengatur waktu perangkat. Proyek ini merupakan bagian dari Galeri Azure Sphere, kumpulan skrip, utilitas, dan fungsi yang tidak tertandingi.

Sampel NTP kustom

Sampel NTP Kustom memperlihatkan cara mengonfigurasi layanan klien NTP untuk mendapatkan waktu dari beberapa sumber.