View a markdown version of this page

配置設定以測試裝置 - FreeRTOS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

配置設定以測試裝置

您可以在 configs/userdata.json 檔案中進行建置、刷新和測試設定。下列 JSON 範例示範如何設定 IDT for FreeRTOS 來測試多個裝置:

{ "sourcePath": "</path/to/freertos>", "retainModifiedSourceDirectories": true | false, "freeRTOSVersion": "<freertos-version>", "freeRTOSTestParamConfigPath": "{{testData.sourcePath}}/path/from/source/path/to/test_param_config.h", "freeRTOSTestExecutionConfigPath": "{{testData.sourcePath}}/path/from/source/path/to/test_execution_config.h", "buildTool": { "name": "your-build-tool-name", "version": "your-build-tool-version", "command": [ "<build command> -any-additional-flags {{testData.sourcePath}}" ] }, "flashTool": { "name": "your-flash-tool-name", "version": "your-flash-tool-version", "command": [ "<flash command> -any-additional-flags {{testData.sourcePath}} -any-additional-flags" ] }, "testStartDelayms": 0, "echoServerConfiguration": { "keyGenerationMethod": "EC | RSA", "serverPort": 9000 }, "otaConfiguration": { "otaE2EFirmwarePath": "{{testData.sourcePath}}/relative-path-to/ota-image-generated-in-build-process", "otaPALCertificatePath": "/path/to/ota/pal/certificate/on/device", "deviceFirmwarePath" : "/path/to/firmware/image/name/on/device", "codeSigningConfiguration": { "signingMethod": "AWS | Custom", "signerHashingAlgorithm": "SHA1 | SHA256", "signerSigningAlgorithm": "RSA | ECDSA", "signerCertificate": "arn:partition:service:region:account-id:resource:qualifier | /absolute-path-to/signer-certificate-file", "untrustedSignerCertificate": "arn:partition:service:region:account-id:resourcetype:resource:qualifier", "signerCertificateFileName": "signerCertificate-file-name", "compileSignerCertificate": true | false, // ***********Use signerPlatform if you choose AWS for signingMethod*************** "signerPlatform": "AmazonFreeRTOS-Default | AmazonFreeRTOS-TI-CC3220SF" ] } }, ********** This section is used for PKCS #11 labels of private key, public key, device certificate, code verification key, JITP certificate, and root certificate. When configuring PKCS11, you set up labels and you must provide the labels of the device certificate, public key, and private key for the key generation type (EC or RSA) it was created with. If your device supports PKCS11 storage of JITP certificate, code verification key, and root certificate, set 'pkcs11JITPCodeVerifyRootCertSupport' to 'Yes' in device.json and provide the corresponding labels. ********** "pkcs11LabelConfiguration":{ "pkcs11LabelDevicePrivateKeyForTLS": "<device-private-key-label>", "pkcs11LabelDevicePublicKeyForTLS": "<device-public-key-label>", "pkcs11LabelDeviceCertificateForTLS": "<device-certificate-label>", "pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS": "<preprovisioned-ec-device-private-key-label>", "pkcs11LabelPreProvisionedECDevicePublicKeyForTLS": "<preprovisioned-ec-device-public-key-label>", "pkcs11LabelPreProvisionedECDeviceCertificateForTLS": "<preprovisioned-ec-device-certificate-label>", "pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS": "<preprovisioned-rsa-device-private-key-label>", "pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS": "<preprovisioned-rsa-device-public-key-label>", "pkcs11LabelPreProvisionedRSADeviceCertificateForTLS": "<preprovisioned-rsa-device-certificate-label>", "pkcs11LabelCodeVerifyKey": "<code-verification-key-label>", "pkcs11LabelJITPCertificate": "<JITP-certificate-label>", "pkcs11LabelRootCertificate": "<root-certificate-label>" } }

以下列出 userdata.json 中使用的屬性:

sourcePath

移植 FreeRTOS 原始程式碼根目錄的路徑。

retainModifiedSourceDirectories

(選用) 檢查是否要保留建置和刷新期間用於偵錯的修改來源目錄。如果設為 true,修改後的來源目錄會命名為 retainedSrc,並在每個測試群組執行中的結果日誌資料夾中找到。如果未包含, 欄位會預設為 false

freeRTOSTestParamConfigPath

FreeRTOS-Libraries-Integration-Tests 整合的 test_param_config.h 檔案路徑。此檔案必須使用{{testData.sourcePath}}預留位置變數,使其相對於來源碼 root。 AWS IoT Device Tester 使用此檔案中的參數來設定測試。

freeRTOSTestExecutionConfigPath

FreeRTOS-Libraries-Integration-Tests 整合的 test_execution_config.h 檔案路徑。此檔案必須使用{{testData.sourcePath}}預留位置變數,使其相對於儲存庫 root。 AWS IoT Device Tester 使用此檔案來控制必須執行的測試。

freeRTOSVersion

FreeRTOS 的版本,包括實作中使用的修補程式版本。請參閱 AWS IoT Device Tester FreeRTOS 支援的 版本,以取得與 for FreeRTOS FreeRTOS 相容的 FreeRTOS AWS IoT Device Tester 版本。

buildTool

用於建置原始程式碼的 命令。建置命令中對來源碼路徑的所有參考都必須取代為 AWS IoT Device Tester 變數 {{testData.sourcePath}}。使用{{config.idtRootPath}}預留位置參考相對於 AWS IoT Device Tester 根路徑的建置指令碼。

flashTool

將映像刷新到裝置的命令。所有對 flash 命令中原始程式碼路徑的參考都必須取代為 AWS IoT Device Tester 變數 {{testData.sourcePath}}。使用{{config.idtRootPath}}預留位置參考相對於 AWS IoT Device Tester 根路徑的快閃記憶體指令碼。

注意

使用 FRQ 2.0 的新整合測試結構不需要路徑變數,例如 {{enableTests}}{{buildImageName}}。OTA 端對端測試會使用 FreeRTOS-Libraries-Integration-Tests GitHub 儲存庫中提供的組態範本執行。如果您的父系來源專案中存在 GitHub 儲存庫中的檔案,則測試之間不會變更原始程式碼。如果需要 OTA 端對端的不同建置映像,您必須在建置指令碼中建置此映像,並在 下指定的userdata.json檔案中指定它otaConfiguration

testStartDelayms

指定 FreeRTOS 測試執行器在開始執行測試之前要等待多少毫秒。如果待測裝置在 IDT 因網路或其他延遲問題而有機會連線和開始記錄之前,開始輸出重要的測試資訊,這會很有用。此值僅適用於 FreeRTOS 測試群組,不適用於未使用 FreeRTOS 測試執行器的其他測試群組,例如 OTA 測試。如果您收到與預期 10 相關的錯誤,但收到 5,則此欄位應設定為 5000。

echoServerConfiguration

設定 TLS 測試之 echo 伺服器的組態。此欄位為必填。

keyGenerationMethod

回應伺服器是使用此選項設定。選項為 EC 或 RSA。

serverPort

回應伺服器執行所在的連接埠號碼。

otaConfiguration

OTA PAL 和 OTA E2E 測試的組態。此欄位為必填。

otaE2EFirmwarePath

IDT 用於 OTA 端對端測試的 OTA 儲存貯體映像路徑。

otaPALCertificatePath

裝置上 OTA PAL 測試的憑證路徑。這用於驗證簽章。例如,ecdsa-sha256-signer.crt.pem

deviceFirmwarePath

要開機之韌體映像的硬式編碼名稱路徑。如果您的裝置不使用檔案系統進行韌體開機,請將此欄位指定為 'NA'。如果您的裝置使用檔案系統進行韌體開機,請指定韌體開機映像的路徑或名稱。

codeSigningConfiguration
signingMethod

程式碼簽章方法。可能的值為 AWS 或 Custom。

注意

對於北京和寧夏區域,該區域不支援使用 Custom. AWS code 簽署。

signerHashingAlgorithm

裝置上支援的雜湊演算法。可能的值為 SHA1SHA256

signerSigningAlgorithm

裝置上支援的簽署演算法。可能的值為 RSAECDSA

signerCertificate

用於 OTA 的信任憑證。對於 AWS 程式碼簽署方法,請針對上傳至 AWS Certificate Manager 的信任憑證使用 Amazon Resource Name (ARN)。對於自訂程式碼簽署方法,請使用簽署者憑證檔案的絕對路徑。如需有關建立信任憑證的資訊,請參閱建立程式碼簽署憑證

untrustedSignerCertificate

某些 OTA 測試中使用的第二個憑證的 ARN 或檔案路徑,做為不受信任的憑證。如需建立憑證的資訊,請參閱建立程式碼簽署憑證

signerCertificateFileName

裝置上的程式碼簽署憑證檔案名稱。此值必須符合您在執行 aws acm import-certificate命令時提供的檔案名稱。

compileSignerCertificate

決定簽章驗證憑證狀態的布林值。有效值為 truefalse

如果未佈建或刷新程式碼簽署者簽章驗證憑證,請將此值設為 true。它必須編譯到專案中。 會 AWS IoT Device Tester 擷取信任的憑證並將其編譯到 aws_codesigner_certificate.h

signerPlatform

AWS Code Signer 在建立 OTA 更新任務時使用的簽署和雜湊演算法。目前,此欄位的可能值為 AmazonFreeRTOS-TI-CC3220SFAmazonFreeRTOS-Default

  • 如果是 SHA1RSA 則選擇 AmazonFreeRTOS-TI-CC3220SF

  • 如果是 SHA256ECDSA 則選擇 AmazonFreeRTOS-Default

  • 如果您的組態需要 SHA256 | RSASHA1 | ECDSA,請聯絡我們以取得進一步支援。

  • 如果您針對 signingMethod 選擇 Custom,請設定 signCommand

signCommand

命令中需要 {{inputImageFilePath}}{{outputSignatureFilePath}} 兩個預留位置。{{inputImageFilePath}} 是由 IDT 建立要簽署之影像的檔案路徑。{{outputSignatureFilePath}} 是將由指令碼產生簽章的檔案路徑。

pkcs11LabelConfiguration

PKCS11 標籤組態至少需要一組裝置憑證標籤、公有金鑰標籤和私有金鑰標籤,才能執行 PKCS11 測試群組。所需的 PKCS11 標籤是以您在 device.json 檔案中的裝置組態為基礎。如果預先佈建在 中設定為device.json,則根據 PKCS11 功能的選擇,所需的標籤必須是下列其中一項。

  • PreProvisionedEC

  • PreProvisionedRSA

如果預先佈建在 中設定為device.json,則所需的標籤為:

  • pkcs11LabelDevicePrivateKeyForTLS

  • pkcs11LabelDevicePublicKeyForTLS

  • pkcs11LabelDeviceCertificateForTLS

只有當您在 pkcs11JITPCodeVerifyRootCertSupport device.json 檔案中為 選取時,才需要以下三個標籤。

  • pkcs11LabelCodeVerifyKey

  • pkcs11LabelRootCertificate

  • pkcs11LabelJITPCertificate

這些欄位的值應與 FreeRTOS 移植指南中定義的值相符。

pkcs11LabelDevicePrivateKeyForTLS

(選用) 此標籤用於私有金鑰的 PKCS #11 標籤。對於具有金鑰佈建的內建和匯入支援的裝置,此標籤用於測試。此標籤可能與針對預先佈建案例定義的標籤不同。如果您將金鑰佈建設定為,並將預先佈建設定為,在 中device.json,這會取消定義。

pkcs11LabelDevicePublicKeyForTLS

(選用) 此標籤用於公有金鑰的 PKCS #11 標籤。對於具有金鑰佈建的內建和匯入支援的裝置,此標籤用於測試。此標籤可能與針對預先佈建案例定義的標籤不同。如果您將金鑰佈建設定為,並將預先佈建設定為,在 中device.json,這會取消定義。

pkcs11LabelDeviceCertificateForTLS

(選用) 此標籤用於裝置憑證的 PKCS #11 標籤。對於具有金鑰佈建的內建和匯入支援的裝置,此標籤將用於測試。此標籤可能與針對預先佈建案例定義的標籤不同。如果您將金鑰佈建設定為,並將預先佈建設定為,在 中device.json,這會取消定義。

pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS

(選用) 此標籤用於私有金鑰的 PKCS #11 標籤。對於具有安全元素或硬體限制的裝置,這會有不同的標籤來保留 AWS IoT 登入資料。如果您的裝置支援使用 EC 金鑰預先佈建,請提供此標籤。當preProvisioned在 中設定為device.json時,必須提供此標籤、 pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS或兩者。此標籤可能與為加入和匯入案例定義的標籤不同。

pkcs11LabelPreProvisionedECDevicePublicKeyForTLS

(選用) 此標籤用於公有金鑰的 PKCS #11 標籤。對於具有安全元素或硬體限制的裝置,這會有不同的標籤來保留 AWS IoT 登入資料。如果您的裝置支援使用 EC 金鑰預先佈建,請提供此標籤。當preProvisioned在 中設定為device.json時,必須提供此標籤、 pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS或兩者。此標籤可能與為加入和匯入案例定義的標籤不同。

pkcs11LabelPreProvisionedECDeviceCertificateForTLS

(選用) 此標籤用於裝置憑證的 PKCS #11 標籤。對於具有安全元素或硬體限制的裝置,這會有不同的標籤來保留 AWS IoT 登入資料。如果您的裝置支援使用 EC 金鑰預先佈建,請提供此標籤。當preProvisioned在 中設定為device.json時,必須提供此標籤、 pkcs11LabelPreProvisionedRSADeviceCertificateForTLS或兩者。此標籤可能與為加入和匯入案例定義的標籤不同。

pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS

(選用) 此標籤用於私有金鑰的 PKCS #11 標籤。對於具有安全元素或硬體限制的裝置,這會有不同的標籤來保留 AWS IoT 登入資料。如果您的裝置支援使用 RSA 金鑰預先佈建,請提供此標籤。當preProvisioned在 中設定為device.json時,必須提供此標籤、 pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS或兩者。

pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS

(選用) 此標籤用於公有金鑰的 PKCS #11 標籤。對於具有安全元素或硬體限制的裝置,這會有不同的標籤來保留 AWS IoT 登入資料。如果您的裝置支援使用 RSA 金鑰預先佈建,請提供此標籤。當preProvisioned在 中設定為device.json時,必須提供此標籤、 pkcs11LabelPreProvisionedECDevicePublicKeyForTLS或兩者。

pkcs11LabelPreProvisionedRSADeviceCertificateForTLS

(選用) 此標籤用於裝置憑證的 PKCS #11 標籤。對於具有安全元素或硬體限制的裝置,這會有不同的標籤來保留 AWS IoT 登入資料。如果您的裝置支援使用 RSA 金鑰預先佈建,請提供此標籤。當preProvisioned在 中設定為device.json時,必須提供此標籤、 pkcs11LabelPreProvisionedECDeviceCertificateForTLS或兩者。

pkcs11LabelCodeVerifyKey

(選用) 此標籤用於程式碼驗證金鑰的 PKCS #11 標籤。如果您的裝置支援 JITP 憑證、程式碼驗證金鑰和根憑證的 PKCS #11 儲存,請提供此標籤。當 pkcs11JITPCodeVerifyRootCertSupport 中的 device.json 設定為時,必須提供此標籤。

pkcs11LabelJITPCertificate

(選用) 此標籤用於 JITP 憑證的 PKCS #11 標籤。如果您的裝置支援 JITP 憑證、程式碼驗證金鑰和根憑證的 PKCS #11 儲存,請提供此標籤。當 pkcs11JITPCodeVerifyRootCertSupport 中的 device.json 設定為時,必須提供此標籤。