为测试设备配置设置
构建、刷写和测试设置在 configs/userdata.json 文件中进行。以下 JSON 示例显示如何配置适用于 FreeRTOS 的 IDT 来测试多个设备:
{ "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": "Amazon | 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 Amazon 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}}占位符变量来使其相对于源代码根目录。Amazon IoT Device Tester 使用此文件中的参数来配置测试。 -
freeRTOSTestExecutionConfigPath -
FreeRTOS-Libraries-Integration-Tests 的
test_execution_config.h文件路径。此文件必须使用{{testData.sourcePath}}占位符变量来使其相对于存储库根目录。Amazon IoT Device Tester 使用此文件来控制必须运行哪些测试。 -
freeRTOSVersion -
FreeRTOS 的版本,包括您的实现中使用的补丁版本。有关与适用于 FreeRTOS 的 Amazon IoT Device Tester 兼容的 FreeRTOS 版本,请参阅支持的适用于 FreeRTOS 的 Amazon IoT Device Tester 版本。
-
buildTool -
用于构建源代码的命令。在构建命令中对源代码路径的所有引用必须使用 Amazon IoT Device Tester 变量
{{testData.sourcePath}}进行替换。使用{{config.idtRootPath}}占位符引用相对于 Amazon IoT Device Tester 根路径的构建脚本。 -
flashTool -
将映像刷写到设备的命令。在刷写命令中对源代码路径的所有引用必须使用适用于 Amazon IoT Device Tester 的变量
{{testData.sourcePath}}进行替换。使用{{config.idtRootPath}}占位符引用相对于 Amazon IoT Device Tester 根路径的刷写脚本。注意
FRQ 2.0 的新集成测试结构不需要路径变量,例如,
{{enableTests}}和{{buildImageName}}。OTA 端到端测试使用 FreeRTOS-Libraries-Integration-TestsGitHub 存储库中提供的配置模板运行。如果 GitHub 存储库中的文件位于您的父源项目中,则源代码在两次测试之间不会更改。如果需要为 OTA 端到端测试创建不同的构建映像,则必须在构建脚本中构建此映像,并在 otaConfiguration下指定的userdata.json文件中指定该映像。 -
testStartDelayms -
指定 FreeRTOS 测试运行器在开始运行测试之前将等待多少毫秒。如果由于网络或其他延迟问题,待测试设备在 IDT 有机会连接并开始日志记录之前就开始输出重要的测试信息,这可能很有用。此值仅适用于 FreeRTOS 测试组,不适用于不使用 FreeRTOS 测试运行器的其他测试组,例如 OTA 测试。如果您收到预期为 10,但收到为 5相关的错误,则应将此字段设置为 5000。
-
echoServerConfiguration -
为 TLS 测试设置 Echo 服务器的配置。该字段为必填。
-
keyGenerationMethod -
使用此选项对 Echo 服务器进行配置。选项是 EC 或 RSA。
-
serverPort -
Echo 服务器运行时使用的端口号。
-
-
otaConfiguration -
OTA PAL 和 OTA E2E 测试的配置。该字段为必填。
otaE2EFirmwarePath-
IDT 用于 OTA 端到端测试的 OTA bin 映像的路径。
-
otaPALCertificatePath -
设备上 OTA PAL 测试证书的路径。这用于验证签名。例如,ecdsa-sha256-signer.crt.pem。
-
deviceFirmwarePath -
要引导的固件映像的硬编码名称的路径。如果您的设备不使用文件系统引导固件,请将此字段指定为
'NA'。如果您的设备使用文件系统引导固件,请指定固件引导映像的路径或名称。 -
codeSigningConfiguration -
-
signingMethod -
代码签名方法。可能的值为 Amazon 或自定义值。
注意
对于北京和宁夏区域,请使用自定义值。这些区域不支持 Amazon 代码签名。
-
signerHashingAlgorithm -
设备所支持的哈希算法。可能的值为
SHA1或SHA256。 -
signerSigningAlgorithm -
设备所支持的签名算法。可能的值为
RSA或ECDSA。 -
signerCertificate -
用于 OTA 的可信证书。对于 Amazon 代码签名方法,使用上传到 Amazon 证书管理器的可信证书的 Amazon 资源名称 (ARN)。对于自定义代码签名方法,请使用签署人证书文件的绝对路径。有关创建信任证书的信息,请参阅创建代码签名证书。
-
untrustedSignerCertificate -
在某些 OTA 测试中用作不可信证书的第二个证书的 ARN 或文件路径。有关创建证书的信息,请参阅创建代码签名证书。
-
signerCertificateFileName -
设备上代码签署证书的文件名。此值必须与您在运行
aws acm import-certificate命令时提供的文件名相匹配。 -
compileSignerCertificate -
确定签名验证证书状态的布尔值。有效值为
true和false。如果未配置或刷写代码签署人签名验证证书,则将此值设置为 true。它必须编译到项目中。Amazon IoT Device Tester 获取可信证书并将其编译到
aws_codesigner_certificate.h中。 -
signerPlatform -
Amazon Code Signer 在创建 OTA 更新作业时使用的签名和哈希算法。目前,此字段的可能值为
AmazonFreeRTOS-TI-CC3220SF和AmazonFreeRTOS-Default。-
如果为
AmazonFreeRTOS-TI-CC3220SF和SHA1,则选择RSA。 -
如果为
AmazonFreeRTOS-Default和SHA256,则选择ECDSA。 -
如果您的配置需要
SHA256|RSA或SHA1|ECDSA,请与我们联系以获取进一步的支持。 -
如果您为
signCommand选择Custom,则配置signingMethod。
-
-
signCommand -
命令中需要两个占位符
{{inputImageFilePath}}和{{outputSignatureFilePath}}。{{inputImageFilePath}}是要签名的由 IDT 构建的映像的文件路径。{{outputSignatureFilePath}}是将由脚本生成的签名的文件路径。
-
-
pkcs11LabelConfiguration -
PKCS11 标签配置需要至少一组设备证书标签、公有密钥标签和私有密钥标签才能运行 PKCS11 测试组。所需的 PKCS11 标签取决于您在
device.json文件中的设备配置。如果在device.json中将预配置设置为是,则所需的标签必须是以下标签之一,具体取决于为 PKCS11 功能选择的标签。-
PreProvisionedEC -
PreProvisionedRSA
如果在
device.json中将预配置设置为否,则所需的标签为:-
pkcs11LabelDevicePrivateKeyForTLS -
pkcs11LabelDevicePublicKeyForTLS -
pkcs11LabelDeviceCertificateForTLS
只有在
device.json文件中为pkcs11JITPCodeVerifyRootCertSupport选择是时,才需要以下三个标签。-
pkcs11LabelCodeVerifyKey -
pkcs11LabelRootCertificate -
pkcs11LabelJITPCertificate
这些字段的值应与《FreeRTOS 移植指南》中定义的值相匹配。
-
pkcs11LabelDevicePrivateKeyForTLS -
(可选)此标签用于私有密钥的 PKCS #11 标签。对于支持板载和导入密钥预配的设备,此标签用于测试。此标签可能与为预先配置的用例定义的标签不同。如果在
device.json中将密钥预配置设置为否,将已预先配置设置为是,则不会定义。 -
pkcs11LabelDevicePublicKeyForTLS -
(可选)此标签用于公有密钥的 PKCS #11 标签。对于支持板载和导入密钥预配的设备,此标签用于测试。此标签可能与为预先配置的用例定义的标签不同。如果在
device.json中将密钥预配置设置为否,将已预先配置设置为是,则不会定义。 -
pkcs11LabelDeviceCertificateForTLS -
(可选)此标签用于设备证书的 PKCS #11 标签。对于支持板载和导入密钥预配的设备,此标签将用于测试。此标签可能与为预先配置的用例定义的标签不同。如果在
device.json中将密钥预配置设置为否,将已预先配置设置为是,则不会定义。 -
pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS -
(可选)此标签用于私有密钥的 PKCS #11 标签。对于具有安全元件或硬件限制的设备,这会使用不同的标签来保留 Amazon IoT 凭证。如果您的设备支持使用 EC 密钥进行预配置,请提供此标签。当
device.json中的预置备设置为是 时,必须提供标签pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS或同时提供两者。此标签可能与为注册和导入的用例定义的标签不同。 -
pkcs11LabelPreProvisionedECDevicePublicKeyForTLS -
(可选)此标签用于公有密钥的 PKCS #11 标签。对于具有安全元件或硬件限制的设备,这会使用不同的标签来保留 Amazon IoT 凭证。如果您的设备支持使用 EC 密钥进行预配置,请提供此标签。当
device.json中的预置备设置为是 时,必须提供标签pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS或同时提供两者。此标签可能与为注册和导入的用例定义的标签不同。 -
pkcs11LabelPreProvisionedECDeviceCertificateForTLS -
(可选)此标签用于设备证书的 PKCS #11 标签。对于具有安全元件或硬件限制的设备,这会使用不同的标签来保留 Amazon IoT 凭证。如果您的设备支持使用 EC 密钥进行预配置,请提供此标签。当
device.json中的预置备设置为是 时,必须提供标签pkcs11LabelPreProvisionedRSADeviceCertificateForTLS或同时提供两者。此标签可能与为注册和导入的用例定义的标签不同。 -
pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS -
(可选)此标签用于私有密钥的 PKCS #11 标签。对于具有安全元件或硬件限制的设备,这会使用不同的标签来保留 Amazon IoT 凭证。如果您的设备支持使用 RSA 密钥进行预配置,请提供此标签。当
device.json中的预置备设置为是 时,必须提供标签pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS或同时提供两者。 -
pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS -
(可选)此标签用于公有密钥的 PKCS #11 标签。对于具有安全元件或硬件限制的设备,这会使用不同的标签来保留 Amazon IoT 凭证。如果您的设备支持使用 RSA 密钥进行预配置,请提供此标签。当
device.json中的预置备设置为是 时,必须提供标签pkcs11LabelPreProvisionedECDevicePublicKeyForTLS或同时提供两者。 -
pkcs11LabelPreProvisionedRSADeviceCertificateForTLS -
(可选)此标签用于设备证书的 PKCS #11 标签。对于具有安全元件或硬件限制的设备,这会使用不同的标签来保留 Amazon IoT 凭证。如果您的设备支持使用 RSA 密钥进行预配置,请提供此标签。当
device.json中的预置备设置为是 时,必须提供标签pkcs11LabelPreProvisionedECDeviceCertificateForTLS或同时提供两者。 -
pkcs11LabelCodeVerifyKey -
(可选)此标签用于代码验证密钥的 PKCS #11 标签。如果您的设备支持 PKCS #11 存储 JITP 证书、代码验证密钥和根证书,请提供此标签。当
device.json中的pkcs11JITPCodeVerifyRootCertSupport设置为是时,必须提供此标签。 -
pkcs11LabelJITPCertificate -
(可选)此标签用于设备 JITP 证书的 PKCS #11 标签。如果您的设备支持 PKCS #11 存储 JITP 证书、代码验证密钥和根证书,请提供此标签。当
device.json中的pkcs11JITPCodeVerifyRootCertSupport设置为是时,必须提供此标签。
-