Amazon FreeRTOS Qualification Program - renesas-rx/amazon-freertos GitHub Wiki

はじめに

  • 本稿ではAmazon FreeRTOSのテストを実行するために必要な情報をまとめます。
  • 以降説明では「ですます調」でなくなります。

メモを書いている人

ハードウェア環境

準備するもの

  1. RX65N RSK (2MB) + 電源ACアダプタ
  2. インターネット接続可能なルータ
  3. Windows PC (RX MCUsの開発環境一式が入っていること(e2 studio/CC-RX/Renesas Flash Programmer))
  4. Ethernet HUB
  5. LANケーブル × 3本

接続方法

RX65N RSK (2MB) ---+---Ethernet HUB---インターネット接続可能なルータ
 |(*)              |
PC-----------------+
 |(ACアダプタ)
電源

(*)RX65N RSK (2MB)とPCは別途以下2接続が成されていること。
・RX65N RSK (2MB)のE1/E2 Liteコネクタ---E1/E2 Liteエミュレータ---PC(USB)
・RX65N RSK (2MB)のG1CUSBコネクタ---PC(USB)

ソフトウェア環境@RX65N RSK (2MB)

ソフトウェア環境@Windows PC

  • Amazon Web Services の doc サイトから、Amazon FreeRTOS の以前の IDT バージョン を入手

    • 動作確認済みのバージョン: IDT v1.1 for Amazon FreeRTOS v1.4.7
      • IDT for Amazon FreeRTOS: Windows
      • IDT = IoT Device Tester (以下『デバイステスタ』と呼称)
  • AWS CLI を入手しインストール

  • Java

    • e2 studio でJavaランタイムを32bit/64bit両方抱えていて適切な方が呼ばれるので追加インストール要らないが、もしデバイステスタ実行中にエラーが出る場合は、PCにインストールされている Java を32bit版にすれば直る可能性あり。(調査中)

デバイステスタ実行手順

  1. デバイステスタをダウンロードし解凍。解凍後のフォルダをCドライブ直下にコピーする
    • C:\devicetester_afreertos_win
      • このフォルダを「デバイステスタのルートフォルダ」とする
      • もしこのフォルダを変更したい場合は、デバイステスタのファイル群を全文"devicetester_afreertos_win"でgrep検索し、パスを書き換えること
  2. gitでRXマイコン用のAmazon FreeRTOSリポジトリをクローンする。クローン後のフォルダをデバイステスタのルートフォルダにコピーする
    • C:\devicetester_afreertos_win\amazon-freertos
  3. opensslでテスト用の鍵を作る
  4. ファームウェア検証にECDSA+SHA256を使用するため、ブートローダに署名検証用の公開鍵=secp256r1.publickeyを仕込む(以下は例)
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWiAlaCQGEgIKoP+qk7Uqc/ME/hjw
amq1v/z/LWx15CKig59Pd3+ar2RFOlMMOhIfkYgS+Ha7tH+w0ggnKDrUug==
-----END PUBLIC KEY-----
  1. 以下ブートローダのプロジェクトをe2 studioでビルドする
    • C:\devicetester_afreertos_win\amazon-freertos\demos\renesas\rx65n-rsk\e2studio\ccrx\boot_loader\type2
      • ビルド後、\HardwareDebug\boot_loader.mot が存在することを確認
  2. e2 studioを閉じておく
  3. Windows環境変数に以下を追加する
    • AWS_ACCESS_KEY_ID
      • AWSのアクセスキーID:AKIARLZC6.................XG のような文字列
    • AWS_SECRET_ACCESS_KEY
      • AWSのシークレットアクセスキー:U6FyF/...................GxJw のような文字列
    • AWSのアクセスキーIDとシークレットアクセスキーはAWS IAMにてユーザ毎に作成可能
  4. デバイステスタのconfigsフォルダのコンフィグファイル例例を参考に更新する
    • C:\devicetester_afreertos_win\configs\config.json
  5. デバイステスタのconfigsフォルダのデバイスファイル例を参考に更新する
    • C:\devicetester_afreertos_win\configs\device.json
  6. デバイステスタのconfigsフォルダのユーザデータ例を参考に更新する
    • C:\devicetester_afreertos_win\configs\userdata.json
  7. デバイステスタのconfigs\script_templatesフォルダのビルドファイル例を参考に更新する
  8. デバイステスタのconfigs\script_templatesフォルダのフラッシュファイル例を参考に更新する
  9. コマンドプロンプトで"c:\devicetester_afreertos_win\bin"に移動し以下のように実行する
■テスト全件実行する場合
$ devicetester_win_x86-64.exe run-suite --userdata userdata.json
■OTAテストだけ実行する場合
$ devicetester_win_x86-64.exe run-suite --userdata userdata.json --group-id FullOTA
  1. デバイステスタのresultsフォルダにテスト結果が記録されていく
    • \results\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx\logs\test_manager.log の最後に全テストの結果のサマリが書き込まれる

config.json の例

  • "awsRegion" を使用しているリージョンに変更
{
  "log": {
    "location": "../logs/"
  },
  "configFiles": {
    "root": "../configs",
    "device": "../configs/device.json"
  },
  "testPath": "../tests/",
  "reportPath": "../results/",
  "certificatePath": "../certificates/",
  "awsRegion": "ap-northeast-1",
  "auth": {
    "method": "environment"
  }
}

device.json の例

  • "serialPort"は使用しているPCで認識しているCOMポートに変更する。(COMポートの先にはRX65N RSKのG1CUSBポートが接続されていること)
[
  {
    "id": "<renesas-pool-id-1>",
    "sku": "<RX65N Starter Kit>",
    "features": [
      {
        "name": "WIFI",
        "value": "No"
      },
      {
        "name": "OTA",
        "value": "Yes"
      },
      {
        "name": "TCP/IP",
        "value": "On-chip"
      },
      {
        "name": "TLS",
        "value": "On-chip"
      }
    ],
    "devices": [
      {
        "id": "<renesas-pool-id-1>",
        "connectivity": {
          "protocol": "uart",
          "serialPort": "COM6"
        },
        "identifiers": [
          {
            "name": "serialNo",
            "value": "<serialNo-value>"
          }
        ]
      }
    ]
  }
]

userdata.json の例

  • "clientWifiConfig", "testWifiConfig" は RX65N RSK(Ether)環境において設定不要
  • "awsSignerCertificateArn"はブートローダに仕込んだ公開鍵をAWS Certification Managerに登録したものを指定
  • "awsUntrustedSignerCertificateArn"はブートローダに仕込んだ公開鍵をAWS Certification Managerに登録したもの以外を指定
{
  "sourcePath": "C:/devicetester_afreertos_win/amazon-freertos",
  "buildTool": {
    "name": "e2studio",
    "version": "7.6",
    "command": [
      "C:/devicetester_afreertos_win/configs/script_templates/build.bat"
    ]
  },
  "flashTool":{
    "name": "RFPV3",
    "version": "v3.06",
    "command": [
      "C:/devicetester_afreertos_win/configs/script_templates/flash.bat"
    ]
  },
  "clientWifiConfig": {
    "wifiSSID": "xxxxx",
    "wifiPassword": "xxxxx",
    "wifiSecurityType": "eWiFiSecurityWPA2"
  },
  "testWifiConfig": {
    "wifiSSID": "xxxxx",
    "wifiPassword": "xxxxx",
    "wifiSecurityType": "eWiFiSecurityWPA2"
  },
   "otaConfiguration":{
    "otaFirmwareFilePath":"C:/devicetester_afreertos_win/amazon-freertos/tests/renesas/rx65n-rsk/e2studio/HardwareDebug/userprog.rsu",
    "deviceFirmwareFileName":"userprog.rsu",
    "awsSignerPlatform":"AmazonFreeRTOS-Default",
    "awsSignerCertificateArn":"arn:aws:acm:ap-northeast-1:094025684215:certificate/f7bf6fc9-4f70-4c5c-a09e-724f81c677cb",
    "awsUntrustedSignerCertificateArn":"arn:aws:acm:ap-northeast-1:094025684215:certificate/19e68e65-2a0e-4c47-a9ad-09b9903d458d",
    "awsSignerCertificateFileName":"xxxxx.xxx",
    "compileCodesignerCertificate":true,
    "otaDemoConfigFilePath": "C:/devicetester_afreertos_win/amazon-freertos/tests/renesas/rx65n-rsk/common/config_files/aws_demo_config.h"
  }
}

build.bat の例

  • <<C:\Renesas\e2_studio_v760\eclipse>> は使用している e2 studioのパスで置き換える
  • <<C:\cygwin64\home\a5088582\openssl_exp\secp256r1.privatekey>> は作成したテスト用鍵が存在するパスで置き換える
  • 以下コマンドラインは、e2 studioのサイレントビルド機能(コマンドライン起動GUI無し)を用いたGUI無しでのビルド手法を活用している
    • cc-rxなどのコンパイラのコマンドを使ってコンパイルしていく方法も採れるがmakefile作成等が面倒なので、GUIでプロジェクトを組み立てて手動デバッグ時はそのままGUIでビルド・デバッグするが、テストフェーズに移り自動テスト環境にプロジェクトを組み込みたい際に、改めてmakefileを作らなくても既存のプロジェクトファイルを使ってコマンドラインからビルド制御でき、非常に便利である
C:\Renesas\e2_studio_v760\eclipse\eclipsec.exe -nosplash -debug -consolelog -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data C:\devicetester_afreertos_win\results -import C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio -cleanBuild all
"C:\devicetester_afreertos_win\amazon-freertos\demos\renesas\tools\mot_file_converter\Renesas Secure Flash Programmer\bin\Debug\Renesas Secure Flash Programmer.exe" CUI Initial "RX65N(ROM 2MB)/Secure Bootloader=256KB" "sig-sha256-ecdsa" 1 "C:\devicetester_afreertos_win\amazon-freertos\demos\renesas\rx65n-rsk\e2studio\ccrx\boot_loader\type2\HardwareDebug\boot_loader.mot" "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\HardwareDebug\aws_tests.mot" "C:\cygwin64\home\a5088582\openssl_exp\secp256r1.privatekey" "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\HardwareDebug\userprog.mot"
"C:\devicetester_afreertos_win\amazon-freertos\demos\renesas\tools\mot_file_converter\Renesas Secure Flash Programmer\bin\Debug\Renesas Secure Flash Programmer.exe" CUI Update "RX65N(ROM 2MB)/Secure Bootloader=256KB" "sig-sha256-ecdsa" 1 "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\HardwareDebug\aws_tests.mot" "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\HardwareDebug\userprog.rsu"

flash.bat の例

  • <<C:\Renesas\Renesas Electronics\Programming Tools\Renesas Flash Programmer V3.06>> は使用している はRenesas Flash Programmerのパスで置き換える
  • GitHubに登録されているプロジェクトはE2 Lite設定なので、E1やE2など他のエミュレータ使用者はプロジェクトファイルを開いてデバッガ設定変更が必要
"C:\Renesas\Renesas Electronics\Programming Tools\Renesas Flash Programmer V3.06\RFPV3.exe" /silent "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\flash_project\flash_project_dummy.rpj" /file "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\HardwareDebug\userprog.mot" /log "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\flash_project\test.log"
"C:\Renesas\Renesas Electronics\Programming Tools\Renesas Flash Programmer V3.06\RFPV3.exe" /silent "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\flash_project\flash_project.rpj" /file "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\HardwareDebug\userprog.mot" /log "C:\devicetester_afreertos_win\amazon-freertos\tests\renesas\rx65n-rsk\e2studio\flash_project\test.log"
ECHO %ErrorLevel%