お客様の素早い設計とより早い製品化を実現する、技術情報と専門知識をご紹介します。
1
パッケージの内容2
ソフトウェアの入手3
ソフトウェアのインストール4
AWSアカウントの設定5
ビルドと実行6
AWS IoT Coreでのメッセージの確認7
デバッグS32K3X4EVB-T172は、産業用および車載アプリケーション向け汎用評価/開発ボードであり、このデモを開始するために必要となります。
注:+12 V電源とmicro USBケーブルはパッケージに含まれていません。+12 Vコネクタは、外径5.5 mm/内径2.1 mmのセンタープラス、バレル型になります。加えて、すべてのデモにはインターネット接続が必要であり、かつそれらをテストするにはイーサネット・メディア・コンバータが必要です。次のNXP製品を使用可能です:RDDRONE-T1ADAPT。
S32K3X4EVB-T172の導入方法については、S32K3X4EVB-T172車載汎用評価ボードのスタート・ガイドを参照してください。
100BASE-T1 2線式車載イーサネットは、最長15メートルまでのシンプルなツイスト・ペア・ケーブルで100 Mbpsでの接続を実現します。ケーブルのライン信号は、従来の100BASE-TX (RJ45
) 接続と直接的な互換性はありませんが、物理アダプタを使用できます。それ以外は、従来のイーサネットと同じです。下の図は、セットアップを示しています。
Something went wrong! Please try again.
S32K3製品向けAWSライブラリには、以下の依存関係があります。
S32K3向けAWSライブラリ・パッケージは、NXPのS32 Design Studio for S32 Platform v3.4 Update 3 IDEと互換性があります。
S32 Design Studioプラットフォームの実行ファイルを見つけるには、[Automotive SW(車載SW)]→[S32K3]→[S32 Design Studio]の順に移動します。次に、[Previous(以前)]タブに進み、[S32 Design Studio for S32 Platform v.3.4 with support for S32K3 devices(S32K3デバイスのサポートを備えたS32 Design Studio for S32 Platform v.3.4)]を選択して、S32DS.3.4_b201217_win32.x86_64.exe
をダウンロードします。
注:バージョン3.4は[Previous(以前)]タブにあります。
注:S32DSのインストール中に、アクティベーション・コードが必要になります。これは電子メールで受信するか、またはダウンロード・ページの[License Keys(ライセンス・キー)]タブで確認できます。
IDEの詳細なインストール手順については、インストール・ガイドに従ってください。
Something went wrong! Please try again.
さらに、S32K3デバイスのサポートを備えたS32 Design Studio for S32 Platform v.3.4に加えて、S32K3デバイスのサポートを備えたS32 Design Studio for S32 Platform v.3.4 Update 3をインストールする必要があります。
Update 3は、S32 Design Studioプラットフォームの実行ファイルと同じ場所にあります。[Automotive SW(車載SW)]→[S32K3]→[S32 Design Studio]の順に移動し、次に[Current(現在)]タブに進み、[S32 Design Studio for S32 Platform v.3.4 Update 3 with support for S32K3 devices(S32K3デバイスのサポートを備えたS32 Design Studio for S32 Platform v.3.4 Update 3)]を選択して、SW32K3_S32DS_3.4.3_D2112.zip
をダウンロードします。
注:このバージョンは[Current(現在)]タブにあります。
Something went wrong! Please try again.
S32K3向けAWSライブラリではHSEセキュリティ・エンジンを利用するため、デバイスにHSE FW 0.2.1.0 RTMをインストールする必要があります。
ファームウェア (HSE_FW_S32K3XX_0_2_1_0.exe
) は、[Automotive SW(車載SW)]→[S32K3 Standard Software(S32K3標準ソフトウェア)]→[Automotive SW(車載SW)]→[S32K3]→[HSE Firmware(HSEファームウェア)]→[HSE FW 0.2.1.0 RTM Release(HSE FW 0.2.1.0 RTMリリース)]からダウンロードできます。
デモ・アプリケーションが別途提供されており、これには工場出荷時に新しいデバイスにHSEファームウェアをプロビジョニングする方法の詳細と、セキュリティ機能の一般的なユース・ケースのデモが含まれています。デモ・アプリケーションはこちらからご覧いただけます(ログインが必要です)。
Something went wrong! Please try again.
[Automotive SW(車載SW)]→[S32K3 Standard Software(S32K3標準ソフトウェア)]→[Automotive SW(車載SW)]→[S32K3]→[Real-Time Driver for Cortex-M(Cortex-M向けリアルタイム・ドライバ)]→[S32K3 Real-Time Drivers Version 2.0.1(S32K3リアルタイム・ドライバ、バージョン2.0.1)]→ SW32K3_RTD_4.4_2.0.1_DS_updatesite_D2207.zip
Something went wrong! Please try again.
注:S32K3プラットフォーム向けFreeRTOS製品は、S32K3マイクロコントローラ・ファミリ向けのFreeRTOS v10.4.6カーネル・バージョンの実装を表しています。
[Automotive SW(車載SW)]→[S32K3 Reference Software(S32K3リファレンス・ソフトウェア)]→[Automotive SW(車載SW)]→[S32K3]→[FreeRTOS]→[SW32K3_FreeRTOS_10.4.6_2.0.1_D2209]→ SW32K3_FreeRTOS_10_4_6_UOS_2_0_1_DS_updatesite_D2209.zip
。
Something went wrong! Please try again.
注:SW32K3 TCP/IPスタックは、S32K3マイクロコントローラ・ファミリ向けに移植されたlwIPスタックを実装するソフトウェア・ライブラリを表しています。
[Automotive SW(車載SW)]→[S32K3 Reference Software(S32K3リファレンス・ソフトウェア)]→[Automotive SW(車載SW)]→[S32K3] →[Stacks(スタック)]→[SW32K3 TCPIP Stack version 1.0.1 HF1(SW32K3 TCPIPスタック、バージョン1.0.1 HF1)]→ SW32K3_TCPIP_RTM_1_0_1_HF1_D2209_updatesite.zip
。
Something went wrong! Please try again.
注:S32K3製品向けAWSライブラリは、NXPによって移殖されたFreeRTOS LTSライブラリを表しており、S32K344プラットフォームにAWSのクラウド・コネクティビティを追加します。
[Automotive SW(車載SW)]→[S32K3 Reference Software(S32K3リファレンス・ソフトウェア)]→[Automotive SW(車載SW)]→[S32K3]→[AWS IoT]→[S32K3 AWS IoT Core Version 1.0.0(S32K3 AWS IoT Coreバージョン1.0.0)]→ SW32K3_AWS_IOT_CORE_1.0.0_D2304_updatesite.zip
Something went wrong! Please try again.
このセクションでは、前のセクションでダウンロードしたパッケージをインストールする方法について説明します。
インストーラの手順に従ってS32 Design Studioをインストールします。
IDEのインストールの詳細については、インストール・ガイドに従ってください。
注:S32DSのインストール中に、アクティベーション・コードが必要になります。これは電子メールで受信するか、またはダウンロード・ページの[License Keys(ライセンス・キー)]タブで確認できます。
Something went wrong! Please try again.
上記のソフトウェア(開発パッケージ、RTD、FreeRTOS、TCP/IP、S32K3向けAWSライブラリ)のほとんどは、S32 Design Studioの「Update Sites(更新サイト)」に.zipアーカイブ形式でダウンロードされます。これらは、次の手順に従ってS32 Design Studioにインストールできます。
Something went wrong! Please try again.
HSEファームウェアには、次の2つのバージョンがあります。
S32K3向けAWSライブラリはA/Bスワップ・バージョンを使用していますが、OTAアップデート機能が必要ない場合はフル・メモリ・バージョンも使用できます。
ファームウェアのインストール手順は次のとおりです。
/S32K3_HSE_DemoExamples/Device_Configuration/S32K344_HSE_FW_INSTALL
) をインポートしますFULL_MEM
をAB_SWAP
に置き換えます)詳細については、プロジェクトに含まれている「Readme.md」ファイルを参照してください。S32K3xxのセキュリティの概要と実装トレーニング(サインインが必要)に、S32K3のセキュリティ機能について記載されています。セキュリティの詳細については、セキュア・ファイルのページ(NDAへの同意が必要)をご覧ください。セキュア・アクセス権の登録ガイドは、こちらからご覧いただけます。
注:フル・メモリ・バージョンのHSE FWを使用する場合は、次のセクションに記載されているデモ・アプリケーションのデバッグ構成を更新して、下図に示すように適切なフラッシング・アルゴリズムを選択する必要があります。
Something went wrong! Please try again.
AWSのユーザー・アカウントをまだお持ちでない場合は、AWSアカウントのセットアップ にあるAWSオンライン・ドキュメントを参照してください。まずはじめに、以下のセクションで説明されている手順に従ってください。
注記には特に注意を払ってください。
AWS IoTリソースの作成 にあるAWSオンライン・ドキュメントを参照してください。 下記のセクションで概説されている手順に従って、お使いのデバイス用のリソースをプロビジョニングします。
注記には特に注意を払ってください。
Something went wrong! Please try again.
S32K3向けAWSライブラリには、AWS IoT Coreのコネクティビティについて紹介するいくつかのデモが含まれています。デモをインポート、ビルド、実行する方法について記載した手順は、含まれているすべてのデモに適用されますが、デバイスがAWS IoT Coreと通信できることを確認するために、aws_mqtt_s32k344
デモから始めることをお勧めします。
S32 Design Studioを開いたら、[File(ファイル)]→[New S32DS Project From Example(サンプルに基づいた新規S32DSプロジェクト)]の順に進み、aws_mqtt_s32k344
(検索ボックスにawsと入力して検索可能)を選択します。[Finish(完了)]をクリックします。
Something went wrong! Please try again.
プロジェクトを正常にビルドしてAWS IoT Coreに接続するには、「AWS IoTのリソースの作成」セクションで作成したAWS IoTエンドポイントとIoTのモノに関する情報をinclude/demo_config.h
ファイルに入力する必要があります。
いくつかのマクロは必須です(参照としてファイル内でコメントアウトされますが、以下のようにユーザーが定義する必要があります)。
democonfigCLIENT_IDENTIFIER
モノの名前に設定する必要があります。
democonfigMQTT_BROKER_ENDPOINT
AWS IoT Coreエンドポイントに設定する必要があります。
democonfigMQTT_BROKER_PORT
セキュアMQTTの接続に使用されるポートであり、8883(セキュアMQTTの接続で一般的に使用)または443(制限されたネットワーク環境で使用可能)のいずれかとなります。
democonfigROOT_CA_PEM
この証明書は、AWS IoTサーバを識別するために使用されるものであり、公開されています。ここから取得することも、AWS IoTコンソールでのモノの作成時にダウンロードすることもできます。
democonfigCLIENT_CERTIFICATE_PEM
クライアント・デバイスの証明書であり、AWS IoTコンソールでのモノの作成時に生成されます。
democonfigCLIENT_PRIVATE_KEY_PEM
クライアント・デバイスの公開鍵であり、AWS IoTコンソールでのモノの作成時に生成されます。
各マクロの設定方法の詳細については、include/demo_config.h
ファイルのコメントを参照してください。
Something went wrong! Please try again.
aws_mqtt_ s32k344.mex
ファイルをダブルクリックするか、またはS32 DSの右上隅にあるシンボル(下図を参照)をクリックして[Peripherals(ペリフェラル)]ビューを開きます。
ウィンドウの左上で現在のプロジェクトとして (aws_mqtt_s32k344
) を選択します。
さまざまなコンポーネントの構成について、任意のコンポーネントを選択して更新できます(この例では更新は不要)。下図は、AWSコンポーネントの画面表示の一例を示しています。
AWSコンポーネントを使用して、mbedTLSの暗号スイート設定を構成することが可能です。IoT Consoleでデフォルトとしてデバイス証明書と秘密鍵を生成する場合、それらはRSAベースになるため、次のように暗号スイートを更新する必要があります。
[Update Code(コードの更新)]ボタンをクリックします(生成されていない新しい構成ファイルがある場合は緑色)。
コード生成が完了するのを待ってから(右下の「Update Code(コードの更新)」メッセージが消えたら)、次の手順に進みます。
Something went wrong! Please try again.
S32 DSの右上隅にあるシンボルをクリックして、C/C++パースペクティブに再度切り替えます。
[Build(ビルド)]ボタン(ハンマーのシンボル)をクリックします。
ビルドの実行が完了するのを待ってから、次の手順に進みます。
Something went wrong! Please try again.
デバッガを接続し、J428
ポートを介してボードをインターネットに接続したら、S32K3x4EVBのスタート・ガイドに記載のとおりに電源を入れます。
S32 DSの[Debug(デバッグ)]ボタンに対応する下向き矢印をクリックし、[Debug Configurations...(デバッグの構成)]を選択します。aws_mqtt_s32k344_Debug_FLASH_PNE
を選択し、[Debug(デバッグ)]ボタンをクリックします。
デバッグ・セッションが開始されるまで待ってから、[Resume(再開)]ボタンをクリックしてアプリケーションの実行を続けます。
Something went wrong! Please try again.
AWS IoT Coreコンソール のナビゲーション・ペインで、[Test(テスト)]、[MQTT test client(MQQTテスト・クライアント]の順に選択します。[Subscribe to a topic(トピックにサブスクライブ)]を選択して、トピックを入力し(または#ワイルドカードを使用してすべてのトピックを表示し)、[Subscribe(サブスクライブ)]を選択します。それらが受信されると、メッセージが表示されます。
Something went wrong! Please try again.
OpenSDAインターフェースに関連付けられた仮想COMにシリアル・ターミナルを接続すると、実行の進捗状況を確認できます(デバイス・マネージャで確認可能)。
サンプルの実行が開始されると、次のようなログが出力されます。
実行が正常に完了すると、「AWS IoT Coreでのメッセージの確認」セクションに記載されているように、AWS IoT CoreによってMQTTメッセージの受信が確認されるとともに、実行の最後に次のメッセージが表示されます。
ロギング・レベルは、[Peripherals(ペリフェラル)]ビューで更新できます。このビューには、「Build and Run the demo(デモのビルドと実行)」セクションのステップ3で示すようにアクセスできます。ロギングの設定は、AWSコンポーネントの[Logging(ロギング)]タブにあります。
コンフィギュレータでロギングの設定など何らかの設定が更新されている場合、「Build and Run the demo section(デモのビルドと実行)」セクションのステップ3と4に示すように、コードを生成して再ビルドする必要があります。
「Run the demo(デモの実行)」セクションに示すようにプロジェクトを実行すると、S32 Design Studioに組み込まれているデバッガを使用できるようになります(例:[Resume(再開)]をクリックする前にブレークポイントを設定したり、実行を一時停止して現在実行されているコードを確認したりできます)。デバッグの詳細については、S32 Design Studioのインストール・ディレクトリにあるS32DSユーザー・ガイド(「Debugging(デバッグ)」の章)を参照してください。
/S32DS/help/pdf/S32DS_User_Guide.pdf
Something went wrong! Please try again.
デバイスへの認証情報のプロビジョニングについては、aws_pkcs11_mqtt_s32k344
デモで紹介されています。標準のMQTTサンプルに加えて、このサンプルはcorePKCS11ライブラリを使用して、クライアント証明書と秘密鍵をデバイスにプロビジョニングします。corePKCS11ライブラリは、S32K3のハードウェア・セキュリティ・エンジン (HSE) に統合されています。
demo_config.h
の構成にマクロがさらに1つ追加されました
#define democonfigPROVISION_DEVICE
このマクロは、下記に定義されているクライアント証明書と秘密鍵のデバイスへのプロビジョニングを有効にするために定義する必要があります。このサンプルを一度実行すれば、証明書がフラッシュに、また秘密鍵がHSEにそれぞれ保存されるため、マクロを未定義にすることができます。
プロビジョニングは、src/aws_dev_mode_key_provisioning.c
に含まれるvDevModeKeyProvisioning()
関数に実装されています。democonfigPROVISION_DEVICE
マクロが定義されている場合、この関数はsrc/main.c
にあるInitTask()
によって呼び出されます。
あるいは、S32K3向けAWSライブラリに含まれているmbedTLSライブラリを使用したり、S32K3ハードウェア・セキュリティ・エンジン (HSE) と統合することもできます。
NXPのAWS IoT Core対応製品では、次のS32 Design Studioプロジェクトのサンプルが提供されています
このサンプルは、AWS IoTアカウントへのMQTT接続を作成するために使用されます。デバイスはMQTTトピック・メッセージをAWSエンドポイントにパブリッシュします。また、サーバからパブリッシュされたメッセージを受信することもでき、確認メッセージでこれに応答します。
このサンプル・プロジェクトは、MQTT_Mutual_Authデモ に基づいて作成されました。
標準のMQTTサンプルに加えて、このサンプルはcorePKCS11を使用して、クライアント証明書と秘密鍵をデバイスにプロビジョニングします。
このサンプル・プロジェクトは、corePKCS11_MQTT_Mutual_Authデモ に基づいて作成されました。
このサンプルは、AWS IoT CoreのOTA (over-the-air) アップデートの機能を紹介するためのものです。
サンプルは、OTAエージェントを起動し、AWSサーバから送信されるアップデート・リクエストを待ち受けます。アップデートが開始されると、新しいファームウェア・イメージがフラッシュにダウンロードされ、デバイスが再起動して新しいイメージをロードします。
このサンプル・プロジェクトは、Ota デモに基づいて作成されました。
このデモは、メトリックを収集し、JSON形式でDevice Defenderレポートを作成して、それをAWS IoT MQTTブローカへのセキュアMQTT接続を介してAWS IoT Device Defenderに送信する方法を示す、単一のアプリケーション・タスクを作成します。デモには、標準のネットワーク・メトリックならびにカスタム・メトリックが含まれています。カスタム・メトリックでは、デモに次のものが含まれます。
このサンプル・プロジェクトは、Device_Defender デモに基づいて作成されました。
このデモでは、AWS IoT Device Shadowライブラリを使用してAWS Device Shadowサービスに接続する方法を示します。coreMQTTライブラリを使用して、TLS (相互認証)でのAWS IoT MQTTブローカへのMQTT接続を確立するとともに、coreJSONライブラリ・パーサを使用して、AWS Shadowサービスから受信したシャドウ・ドキュメントを解析します。
デモでは、シャドウ・ドキュメントを更新する方法やシャドウ・ドキュメントを削除する方法など、シャドウの基本的な操作について示します。また、このデモでは、コールバック関数をcoreMQTTライブラリに登録して、AWS IoT Device Shadowサービスから送信されるshadow/updateやupdate/deltaなどのメッセージを処理する方法も示します。
このサンプル・プロジェクトは、Device_Shadowデモに基づいて作成されました。
このプロジェクトでは、AWS IoT Coreを実行しているS32K344(Greengrassデバイスを表す)と、GoldVIP を実行しているS32G2 RDB2(Greengrassコアを表す)を接続し、SiteWiseダッシュボードに診断ログをパブリッシュすることにより、Greengrassの機能を紹介します。デモの説明に記載されている追加の前提条件が必要です。
デモの実行に関する詳細は、サンプルの「description.txt」ファイルを参照してください。
この章では、AWS IoT Coreデモの実行中に起こりうる一般的な問題について記載しています。
これは、セーフティSBCのウォッチドッグに正しく給電されておらず、MCUがリセットされることが原因です。このような場合には、こちらに記載されている手順に従って電源投入を行ってください。
この問題は、HSE FWが正しくインストールされていないことを示しています。セクション3.3の「デバイスへのHSEファームウェアのインストール」にある手順を再度ご確認ください。
ボードはDHCP経由でIPアドレスを取得しています。実行が次のループで停止する場合:
while (!dhcp_supplied_address(&network_interfaces[i]))
ボードにIPアドレスが割り当てられていない可能性があります。これは、DHCPサーバが正しく動作していない場合に起りえます。
DHCPの使用を望まない場合は、[Peripherals(ペリフェラル)]ビューの[Netif]タブにある[tcpip_stackコンポーネント]で設定を変更できます。
このエラーがシリアル・ログに記録されている場合は、サーバ証明書の検証に失敗している可能性があります。原因の1つとして、RTCでの現在の時刻の設定が間違っていることが考えられます。これは、generate/src/Rtc_Ip_BOARD_InitPeripherals_PBcfg.c
ファイルを直接変更するか、あるいは[Peripherals(ペリフェラル)]ビューで設定を更新し、[Update Code(コードの更新)]を使用してコードを生成することで更新できます。
注:時刻は現在のUTC時刻に設定する必要があります。
詳細については、AWS IoTのトラブルシューティング に関するAWSオンライン・ドキュメントを参照してください 。