トレーニング
モジュール
Azure IoT Central を使用して Azure Sphere 用のセキュリティで保護された IoT ソリューションを開発する - Training
Azure Sphere、Azure RTOS、Azure IoT Central を使用して高度なセキュリティで保護された IoT ソリューションを開発する
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
RTC (リアルタイム クロック) は、デバイスが電源を失い、デバイスの再起動後にネットワーク接続にアクセスできない場合に、Azure Sphere デバイス上の時間を維持するために使用されます。 これにより、デバイスが NTP サーバーにアクセスできない場合でも、電源喪失時に時間を維持できます。
システム時刻を設定した場合、デバイスの電源が失われると、システム時刻は保持されません。 電源喪失時に時間を保持するには、Applibs 関数 をclock_systohc呼び出す必要があります。 clock_systohcが呼び出されると、システム時刻が RTC にプッシュされます。
RTC を使用するアプリケーションには、適切なヘッダー ファイルを含め、RTC 設定を アプリケーション マニフェストに追加する必要があります。
プロジェクトに rtc ヘッダーを含めます。
#include <applibs\rtc.h>
RTC と標準クロック API を使用するには、アプリケーション機能を SystemTime
アプリケーション マニフェストに追加し、値を に設定する true
必要があります。
Azure Sphere アプリケーション マニフェストには、アプリケーション マニフェスト の詳細が記載されています。
{
"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
}
}
システム時刻を取得するには、標準 clock_gettime
関数を呼び出します。
システム時刻を設定するには、標準 clock_settime
関数を呼び出します。
システム時刻が設定されている場合、デバイスの電源が失われると、システム時刻は保持されません。 電源喪失時に時間を保持するには、Applibs clock_systohc 関数を呼び出します。 clock_systohcが呼び出されると、システム時刻が RTC にプッシュされます。
NTP クライアント サービスは既定で有効になっています。 NTP クライアント サービスが有効になっている間にシステム時刻を設定すると、デバイスにインターネット接続がある UTC 時刻が上書きされます。 NTP クライアント サービスを無効にできます。ただし、システム時刻と NTP サーバー時間の差が大きすぎると、デバイスのクラウド更新が失敗する可能性があります。
システム時刻と RTC 時刻は GMT/UTC に格納されます。 アプリケーションで使用されるタイム ゾーンを変更するには、 関数を setenv
呼び出して TZ 環境変数を更新し、関数を tzset
呼び出します。
SetTimeFromLocation プロジェクトでは、逆引き IP 参照を使用して位置情報を取得し、場所の時刻を取得し、デバイスの時刻を設定する方法を示します。 このプロジェクトは、メンテナンスされていないスクリプト、ユーティリティ、および関数のコレクションである Azure Sphere ギャラリーの一部です。
Azure Sphere OS では、 TZ 環境変数に使用できる一部の形式がサポートされていますが、一部の形式はサポートされていません。
電源喪失時にタイム ゾーンの設定を維持するには、 変更可能なストレージ を使用してタイム ゾーンを永続的ストレージに格納し、デバイスの再起動時に設定を呼び出します。
NTP クライアント サービスは、複数のソースから時間を取得するように構成できます。 Azure Sphere OS ネットワーク要件で説明されているように、既定のタイム ソースは prod.time.sphere.azure.net
です。
NTP クライアントは、正常な同期が発生するまで、15 秒ごとに時刻の同期を試みます。 時刻の同期に成功すると、24 時間ごとに時刻の再同期が試行されます。 Azure Sphere は、時刻同期を実行するときに、最初に 32678 から 61000 の間でランダムな UDP クライアント ソース ポートを使用します。 このポートが失敗した場合、Azure Sphere は UDP クライアント ソース ポートとしてポート 124 の使用を試みます。
システムが DHCP サーバーから時刻を取得するように指定することも、 Networking_TimeSync_EnableCustomNTP または Networking_TimeSync_EnableDefaultNtp 関数を使用してアプリケーションのタイム ソースを指定することもできます。
タイム サーバー ソースに DHCP を使用するように構成されている場合、Azure Sphere は DHCP オプション 042 を処理し、NTP クライアントは DHCP オプションで送信された最初の 2 つのエントリのみを処理します。これは優先順に一覧表示されます。 これらはプライマリ サーバーとセカンダリ サーバーと見なされます。
また、アプリケーションを介してプライマリ タイム サーバーとセカンダリ タイム サーバーを指定する場合は、 Networking_TimeSync_EnableCustomNTP を使用してタイム サーバーを構成することもできます。 各タイム サーバー完全修飾ドメイン名 (FQDN) の最大長は 255 文字です。
DHCP または API を使用してタイム サーバーを取得するように NTP クライアントが構成されている場合は、フォールバック動作を指定するために追加のパラメーターが必要です。
クライアントは最初にプライマリ タイム サーバーへの接続を試みます。 クライアントが有効なタイム サーバー応答を取得できない場合は、セカンダリ タイム サーバー (指定されている場合) が試行されます。
セカンダリ タイム サーバーが指定されていて失敗した場合、または を使用して Networking_NtpOption_FallbackServerEnabled
OS の既定値にフォールバックするオプションが失敗した場合、システムは既定の OS タイム ソース prod.time.sphere.azure.net に接続します。
Networking_NtpOption_FallbackServerDisabledを指定した場合、OS は、いずれかのタイム サーバーと正常に同期されるまで、15 秒ごとにプライマリ サーバーとセカンダリ サーバーに対してクエリを実行し続けます。
タイム サーバーの設定はグローバル設定であり、インターフェイスごとの設定ではありません。 Azure Sphere デバイスがマルチホームで、両方のインターフェイスが DHCP 経由で NTP サーバー情報を取得する場合は、最近処理された DHCP NTP オプション セットが優先されます。
システム時刻のサンプルは、システム時刻を管理し、ハードウェア RTC を使用する方法を示しています。 サンプル アプリケーションでは、システム時刻を設定し、関数を clock_systohc
使用してシステム時刻を RTC と同期します。
SetTimeFromLocation プロジェクトでは、逆引き IP 参照を使用して位置情報を取得し、場所の時刻を取得し、デバイスの時刻を設定する方法を示します。 このプロジェクトは、メンテナンスされていないスクリプト、ユーティリティ、および関数のコレクションである Azure Sphere ギャラリーの一部です。
カスタム NTP サンプルは、複数のソースから時間を取得するように NTP クライアント サービスを構成する方法を示しています。
トレーニング
モジュール
Azure IoT Central を使用して Azure Sphere 用のセキュリティで保護された IoT ソリューションを開発する - Training
Azure Sphere、Azure RTOS、Azure IoT Central を使用して高度なセキュリティで保護された IoT ソリューションを開発する