처음으로 마이크로 컨트롤러 보드의 테스트 준비 - 무료 RTOS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

처음으로 마이크로 컨트롤러 보드의 테스트 준비

FreeRTOS용 IDT를 사용하여 FreeRTOS 라이브러리의 구현을 테스트할 수 있습니다. 보드의 디바이스 드라이버에 대한 FreeRTOS 라이브러리를 이식한 후 AWS IoT Device Tester를 사용하여 마이크로컨트롤러 보드에 대한 검증 테스트를 실행합니다.

라이브러리 이식 계층 추가 및 FreeRTOS 테스트 리포지토리 구현

FreeRTOS를 디바이스에 이식하려면 FreeRTOS 이식 안내서를 참조하세요. FreeRTOS 테스트 리포지토리를 구현하고 FreeRTOS 계층을 이식할 때는 테스트 리포지토리를 포함하여 각 라이브러리의 경로를 manifest.yml에 제공해야 합니다. 이 파일은 소스 코드의 루트 폴더에 있어야 합니다. 자세한 내용은 매니페스트 파일 지침을 참조하세요.

AWS 자격 증명 구성

AWS IoT Device Tester가 AWS 클라우드와 통신하도록 AWS 보안 인증 정보를 구성해야 합니다. 자세한 내용은 개발을 위한 AWS 보안 인증 정보 및 리전 설정을 참조하세요. 유효한 AWS 보안 인증 정보가 devicetester_extract_location/devicetester_freertos_[win|mac|linux]/configs/config.json 구성 파일에 지정되어 있습니다.

"auth": { "method": "environment" } "auth": { "method": "file", "credentials": { "profile": "<your-aws-profile>" } }

config.json 파일의 auth 속성에는 AWS 인증을 제어하는 메서드 필드가 있으며 이 속성을 파일 또는 환경으로 선언할 수 있습니다. 이 필드를 환경으로 설정하면 호스트 시스템의 환경 변수에서 AWS 보안 인증 정보를 가져옵니다. 이 필드를 파일로 설정하면 .aws/credentials 구성 파일에서 지정된 프로필을 가져옵니다.

FreeRTOS용 IDT에서 디바이스 풀 생성

테스트할 디바이스는 디바이스 풀에서 구성됩니다. 각 디바이스 풀은 하나 이상의 동일한 디바이스로 구성됩니다. 단일 디바이스를 테스트하거나 풀에서 여러 디바이스를 테스트하도록 FreeRTOS용 IDT를 구성할 수 있습니다. 검증 프로세스를 가속화하기 위해 FreeRTOS용 IDT는 동일한 사양이 있는 디바이스를 병렬로 테스트할 수 있습니다. 라운드 로빈 방법을 사용하여 디바이스 풀에 있는 각 디바이스에 대해 다른 테스트 그룹을 실행합니다.

device.json 파일의 최상위 수준에는 배열이 있습니다. 각 배열 속성은 새 디바이스 풀입니다. 각 디바이스 풀에는 디바이스 배열 속성이 있으며, 이 속성에는 여러 디바이스가 선언되어 있습니다. 템플릿에는 디바이스 풀이 있으며 이 디바이스 풀에는 디바이스가 하나뿐입니다. configs 폴더에서 device.json 템플릿의 devices 섹션을 편집하여 디바이스 풀에 하나 이상의 디바이스를 추가할 수 있습니다.

참고

동일한 풀에 있는 모든 디바이스는 기술 사양과 SKU가 동일해야 합니다. 다른 테스트 그룹에 대한 소스 코드의 병렬 빌드를 활성화하기 위해 FreeRTOS용 IDT는 FreeRTOS용 IDT 압축 해제 폴더 내부의 결과 폴더에 소스 코드를 복사합니다. 빌드 또는 플래시 명령에 있는 소스 코드 경로는 testdata.sourcePath 변수를 사용하여 참조해야 합니다. FreeRTOS용 IDT는 이 변수를 복사된 소스 코드의 임시 경로로 바꿉니다. 자세한 내용은 FreeRTOS용 IDT 변수 섹션을 참조하세요.

다음은 여러 디바이스가 있는 디바이스 풀을 생성하는 데 사용된 예제 device.json 파일입니다.

[ { "id": "pool-id", "sku": "sku", "features": [ { "name": "Wifi", "value": "Yes | No" }, { "name": "Cellular", "value": "Yes | No" }, { "name": "BLE", "value": "Yes | No" }, { "name": "PKCS11", "value": "RSA | ECC | Both" }, { "name": "OTA", "value": "Yes | No", "configs": [ { "name": "OTADataPlaneProtocol", "value": "MQTT | HTTP | None" } ] }, { "name": "KeyProvisioning", "value": "Onboard | Import | Both | No" } ], "devices": [ { "id": "device-id", "connectivity": { "protocol": "uart", "serialPort": "/dev/tty*" }, "secureElementConfig" : { "publicKeyAsciiHexFilePath": "absolute-path-to/public-key-txt-file: contains-the-hex-bytes-public-key-extracted-from-onboard-private-key", "publiDeviceCertificateArn": "arn:partition:iot:region:account-id:resourcetype:resource:qualifier", "secureElementSerialNumber": "secure-element-serialNo-value", "preProvisioned" : "Yes | No", "pkcs11JITPCodeVerifyRootCertSupport": "Yes | No" }, "identifiers": [ { "name": "serialNo", "value": "serialNo-value" } ] } ] } ]

device.json 파일에서 사용되는 속성은 다음과 같습니다.

id

디바이스 풀을 고유하게 식별하는 사용자 정의 영숫자 ID입니다. 풀에 속한 디바이스는 동일한 유형이어야 합니다. 테스트 제품군을 실행할 때 풀에 있는 디바이스는 워크로드를 병렬화하는 데 사용됩니다.

sku

테스트하는 보드를 고유하게 식별하는 영숫자 값입니다. SKU는 정규화된 보드를 추적하는 데 사용됩니다.

참고

AWS Partner Device Catalog에 보드를 등록하려면 여기서 지정하는 SKU가 목록 등록 프로세스에 사용하는 SKU와 일치해야 합니다.

features

디바이스의 지원되는 기능을 포함하는 배열입니다. AWS IoT Device Tester가 이 정보를 사용하여 실행할 검증 테스트를 선택합니다.

지원되는 값은 다음과 같습니다.

Wifi

보드에 Wi-Fi 기능이 있는지 여부를 나타냅니다.

Cellular

보드에 셀룰러 기능이 있는지 여부를 나타냅니다.

PKCS11

보드가 지원하는 퍼블릭 키 암호화 알고리즘을 나타냅니다. 검증에는 PKCS11이 필요합니다. 지원되는 값은 ECC, RSA, Both입니다. BothECCRSA 알고리즘을 모두 지원하는 보드를 가리킵니다.

KeyProvisioning

신뢰할 수 있는 X.509 클라이언트 인증서를 보드에 작성하는 방법을 나타냅니다.

유효한 값은 Import, Onboard, Both, No입니다. Onboard, Both 또는 No 키 프로비저닝은 검증에 필요합니다. Import 단독으로는 검증을 위한 유효한 옵션이 아닙니다.

  • 보드에서 프라이빗 키 가져오기를 허용하는 경우에는 Import만 사용합니다. Import 선택은 검증에 적합한 구성이 아니므로 테스트 목적, 특히 PKCS11 테스트 사례에서만 사용해야 합니다. 검증에는 Onboard, Both 또는 No가 필요합니다.

  • 보드가 온보드 프라이빗 키를 지원하는 경우(예: 디바이스에 보안 요소가 있거나 자체적인 디바이스 키 페어 및 인증서를 생성하려는 경우)에는 Onboard을 사용합니다. 각 디바이스 섹션에 secureElementConfig 요소를 추가하고 퍼블릭 키 파일에 대한 절대 경로를 publicKeyAsciiHexFilePath 필드에 입력합니다.

  • 보드가 키 프로비저닝에 프라이빗 키 가져오기와 온보드 키 생성을 모두 지원하는 경우 Both를 사용합니다.

  • 보드가 키 프로비저닝을 지원하지 않는 경우 No를 사용합니다. No는 디바이스도 사전 프로비저닝된 경우에만 유효한 옵션입니다.

OTA

보드가 무선(Over-the-Air) 업데이트 기능을 지원하는지 여부를 나타냅니다. OtaDataPlaneProtocol 속성은 디바이스가 지원하는 OTA 데이터 영역 프로토콜을 나타냅니다. 검증에는 HTTP 또는 MQTT 데이터 영역 프로토콜을 사용하는 OTA가 필요합니다. 테스트하는 동안 OTA 테스트 실행을 건너뛰려면 OTA 기능을 No로 설정하고 OtaDataPlaneProtocol 속성을 None으로 설정합니다. 그러면 이 테스트는 검증 실행이 아닙니다.

BLE

보드가 Bluetooth Low Energy(BLE)를 지원하는지 여부를 나타냅니다.

devices.id

테스트 대상 디바이스의 고유한 사용자 정의 식별자입니다.

devices.connectivity.serialPort

테스트할 디바이스에 연결하는 데 사용되는 호스트 컴퓨터의 직렬 포트입니다.

devices.secureElementConfig.PublicKeyAsciiHexFilePath

보드가 pre-provisioned 않거나 PublicDeviceCertificateArn가 제공되지 않은 경우 필수입니다. Onboard는 키 프로비저닝의 필수 유형이므로 이 필드는 현재 FullTransportInterfaceTLS 테스트 그룹에 필수입니다. 디바이스가 pre-provisioned인 경우 PublicKeyAsciiHexFilePath는 선택 사항이므로 포함할 필요는 없습니다.

다음 블록은 Onboard 프라이빗 키에서 추출한 16진수 바이트 퍼블릭 키를 포함하는 파일에 대한 절대 경로입니다.

3059 3013 0607 2a86 48ce 3d02 0106 082a 8648 ce3d 0301 0703 4200 04cd 6569 ceb8 1bb9 1e72 339f e8cf 60ef 0f9f b473 33ac 6f19 1813 6999 3fa0 c293 5fae 08f1 1ad0 41b7 345c e746 1046 228e 5a5f d787 d571 dcb2 4e8d 75b3 2586 e2cc 0c

퍼블릭 키가 .der 형식인 경우 퍼블릭 키를 직접 16진수 인코딩하여 16진수 파일을 생성할 수 있습니다.

.der 퍼블릭 키에서 16진수 파일을 생성하려면 다음 xxd 명령을 입력합니다.

xxd -p pubkey.der > outFile

퍼블릭 키가 .pem 형식인 경우 base64로 인코딩된 헤더 및 푸터를 추출하여 바이너리 형식으로 디코딩할 수 있습니다. 그런 다음 바이너리 문자열을 16진수 인코딩하여 16진수 파일을 생성합니다.

.pem 퍼블릭 키용 16진수 파일을 생성하려면 다음 작업을 수행합니다.

  1. 다음 base64 명령을 실행하여 퍼블릭 키에서 base64 헤더 및 푸터를 제거합니다. 그러면 base64key라는 디코딩된 키가 pubkey.der 파일로 출력됩니다.

    base64 —decode base64key > pubkey.der
  2. 다음 xxd 명령을 실행하여 pubkey.der을 16진수 형식으로 변환합니다. 결과 키가 outFile로 저장됩니다.

    xxd -p pubkey.der > outFile
devices.secureElementConfig.PublicDeviceCertificateArn

보안 요소의 인증서 ARN이 AWS IoT Core로 업로드됩니다. 인증서를 AWS IoT Core로 업로드하는 방법에 대한 자세한 내용은 AWS IoT 개발자 안내서X.509 클라이언트 인증서를 참조하세요.

devices.secureElementConfig.SecureElementSerialNumber

(선택 사항) 보안 요소의 일련 번호입니다. 일련 번호는 JITR 키 프로비저닝을 위한 디바이스 인증서를 생성하는 데 선택적으로 사용됩니다.

devices.secureElementConfig.preProvisioned

(선택 사항) 디바이스에 잠긴 보안 인증 정보를 가진 사전 프로비저닝된 보안 요소가 있고 객체를 가져오거나 생성하거나 삭제할 수 없는 경우 ‘예’로 설정합니다. 이 속성을 로 설정하는 경우 해당 pkcs11 레이블을 제공해야 합니다.

devices.secureElementConfig.pkcs11JITPCodeVerifyRootCertSupport

(선택 사항) 디바이스의 corePKCS11 구현이 JITP용 스토리지를 지원하는 경우 로 설정합니다. 이렇게 하면 corePKCS 11을 테스트할 때 JITP codeverify 테스트가 활성화되며 코드 확인 키, JITP 인증서 및 루트 인증서 PKCS 11 레이블을 제공해야 합니다.

identifiers

(선택 사항) 임의 이름-값 페어의 배열입니다. 다음 단원에서 설명하는 빌드 및 플래시 명령에 이러한 값을 사용할 수 있습니다.

빌드, 플래시 및 테스트 설정 구성

FreeRTOS용 IDT는 보드에서 자동으로 테스트를 빌드하고 플래시합니다. 이를 활성화하려면 하드웨어에 대한 빌드 및 플래시 명령을 실행하도록 IDT를 구성해야 합니다. 빌드 및 플래시 명령 설정은 config 폴더에 있는 userdata.json 템플릿 파일에서 구성됩니다.

디바이스 테스트를 위한 설정 구성

빌드, 플래시 및 테스트 설정은 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": "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

이식된 Echo Server 소스 코드의 루트에 대한 경로입니다.

retainModifiedSourceDirectories

(선택 사항) 디버깅 목적으로 빌드 및 플래시 중에 사용되는 수정된 소스 디렉터리를 보존할지 여부를 선택합니다. true로 설정하면 수정된 소스 디렉터리의 이름이 retainedSrc로 지정되며 각 테스트 그룹 실행의 결과 로그 폴더에서 찾을 수 있습니다. 포함되지 않은 경우 필드의 기본값은 false입니다.

freeRTOSTestParamConfigPath

FreeRTOS-Libraries-Integration-Tests 통합을 위한 test_param_config.h 파일의 경로입니다. 이 파일은 {{testData.sourcePath}} 자리 표시자 변수를 사용하여 소스 코드 루트를 기준으로 경로를 지정해야 합니다. AWS IoT Device Tester가 이 파일의 파라미터를 사용하여 테스트를 구성합니다.

freeRTOSTestExecutionConfigPath

FreeRTOS-Libraries-Integration-Tests 통합을 위한 test_execution_config.h 파일의 경로입니다. 이 파일은 {{testData.sourcePath}} 자리 표시자 변수를 사용하여 리포지토리 루트를 기준으로 경로를 지정해야 합니다. AWS IoT Device Tester가 이 파일을 사용하여 어떤 테스트를 실행할지 제어합니다.

freeRTOSVersion

구현에 사용된 패치 버전을 포함한 FreeRTOS의 버전입니다. FreeRTOS용 AWS IoT Device Tester와 호환되는 FreeRTOS 버전은 지원되는 FreeRTOS용 AWS IoT Device Tester 버전을 참조하세요.

buildTool

소스 코드를 빌드하기 위한 명령입니다. 빌드 명령에 있는 소스 코드 경로에 대한 모든 참조는 AWS IoT Device Tester 변수 {{testData.sourcePath}}로 바꿔야 합니다. {{config.idtRootPath}} 자리 표시자를 사용하여 AWS IoT Device Tester 루트 경로를 기준으로 빌드 스크립트를 참조합니다.

flashTool

이미지를 디바이스에 플래시하기 위한 명령입니다. 플래시 명령에 있는 소스 코드 경로에 대한 모든 참조는 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 엔드투엔드의 다른 빌드 이미지가 필요한 경우 빌드 스크립트에서 이 이미지를 빌드하고 otaConfiguration에 지정된 userdata.json 파일에 지정해야 합니다.

testStartDelayms

FreeRTOS 테스트 실행기가 테스트 실행을 시작하기 전에 대기할 시간을 밀리초 단위로 지정합니다. 이는 네트워크 또는 기타 지연 시간 문제로 인해 IDT가 연결되어 로깅을 시작하기 전에 테스트 대상 디바이스가 중요한 테스트 정보를 출력하기 시작하는 경우에 유용할 수 있습니다. 이 값은 FreeRTOS 테스트 그룹에만 적용되며 OTA 테스트와 같이 FreeRTOS 테스트 실행기를 사용하지 않는 다른 테스트 그룹에는 적용되지 않습니다. 10개를 예상했지만 5개를 수신함과 관련된 오류가 발생하는 경우 이 필드를 5000으로 설정해야 합니다.

echoServerConfiguration

TLS 테스트용 에코 서버를 설정하기 위한 구성입니다. 이 필드는 필수 항목입니다.

keyGenerationMethod

에코 서버는 이 옵션으로 구성됩니다. 옵션은 EC 또는 RSA입니다.

serverPort

에코 서버가 실행되는 포트 번호입니다.

otaConfiguration

OTA PAL 및 OTA E2E 테스트의 구성입니다. 이 필드는 필수 항목입니다.

otaE2EFirmwarePath

IDT가 OTA 엔드투엔드 테스트에 사용하는 OTA bin 이미지의 경로입니다.

otaPALCertificatePath

디바이스에 있는 OTA PAL 테스트용 인증서의 경로입니다. 서명을 확인하는 데 사용됩니다. 예: ecdsa-sha256-signer.crt.pem.

deviceFirmwarePath

부팅할 펌웨어 이미지의 하드 코딩된 이름 경로입니다. 디바이스가 펌웨어 부팅에 파일 시스템을 사용하지 않는 경우 이 필드를 'NA'로 지정합니다. 디바이스가 펌웨어 부팅에 파일 시스템을 사용하는 경우 펌웨어 부팅 이미지의 경로 또는 이름을 지정합니다.

codeSigningConfiguration
signingMethod

코드 서명 방법입니다. 가능한 값은 AWS 또는 사용자 지정입니다.

참고

베이징 및 닝샤 리전의 경우 사용자 지정을 사용합니다. AWS 코드 서명은 이러한 리전에서 지원되지 않습니다.

signerHashingAlgorithm

디바이스에서 지원되는 해싱 알고리즘입니다. 가능한 값은 SHA1 또는 SHA256입니다.

signerSigningAlgorithm

디바이스에서 지원되는 서명 알고리즘입니다. 가능한 값은 RSA 또는 ECDSA입니다.

signerCertificate

OTA에 사용되는 신뢰할 수 있는 인증서입니다. AWS 코드 서명 방법의 경우 AWS Certificate Manager에 업로드된 신뢰할 수 있는 인증서에 Amazon 리소스 이름(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 | RSA 또는 SHA1 | ECDSA가 필요한 경우 추가 지원을 요청하십시오.

  • signingMethodCustom을 선택한 경우 signCommand를 구성합니다

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 레이블에 사용됩니다. 보안 요소 또는 하드웨어 제한이 있는 디바이스의 경우 AWS IoT 보안 인증 정보를 보존하기 위해 레이블이 달라집니다. 디바이스가 EC 키를 사용한 사전 프로비저닝을 지원하는 경우 이 레이블을 제공하세요. device.json에서 preProvisioned를 로 설정한 경우 이 레이블, pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS 또는 둘 다를 제공해야 합니다. 이 레이블은 온보딩 및 가져오기 사례에 정의된 레이블과 다를 수 있습니다.

pkcs11LabelPreProvisionedECDevicePublicKeyForTLS

(선택 사항) 이 레이블은 퍼블릭 키의 PKCS #11 레이블에 사용됩니다. 보안 요소 또는 하드웨어 제한이 있는 디바이스의 경우 AWS IoT 보안 인증 정보를 보존하기 위해 레이블이 달라집니다. 디바이스가 EC 키를 사용한 사전 프로비저닝을 지원하는 경우 이 레이블을 제공하세요. device.json에서 preProvisioned를 로 설정한 경우 이 레이블, pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS 또는 둘 다를 제공해야 합니다. 이 레이블은 온보딩 및 가져오기 사례에 정의된 레이블과 다를 수 있습니다.

pkcs11LabelPreProvisionedECDeviceCertificateForTLS

(선택 사항) 이 레이블은 디바이스 인증서의 PKCS #11 레이블에 사용됩니다. 보안 요소 또는 하드웨어 제한이 있는 디바이스의 경우 AWS IoT 보안 인증 정보를 보존하기 위해 레이블이 달라집니다. 디바이스가 EC 키를 사용한 사전 프로비저닝을 지원하는 경우 이 레이블을 제공하세요. device.json에서 preProvisioned를 로 설정한 경우 이 레이블, pkcs11LabelPreProvisionedRSADeviceCertificateForTLS 또는 둘 다를 제공해야 합니다. 이 레이블은 온보딩 및 가져오기 사례에 정의된 레이블과 다를 수 있습니다.

pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS

(선택 사항) 이 레이블은 프라이빗 키의 PKCS #11 레이블에 사용됩니다. 보안 요소 또는 하드웨어 제한이 있는 디바이스의 경우 AWS IoT 보안 인증 정보를 보존하기 위해 레이블이 달라집니다. 디바이스가 RSA 키를 사용한 사전 프로비저닝을 지원하는 경우 이 레이블을 제공하세요. device.json에서 preProvisioned를 로 설정한 경우 이 레이블, pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS 또는 둘 다를 제공해야 합니다.

pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS

(선택 사항) 이 레이블은 퍼블릭 키의 PKCS #11 레이블에 사용됩니다. 보안 요소 또는 하드웨어 제한이 있는 디바이스의 경우 AWS IoT 보안 인증 정보를 보존하기 위해 레이블이 달라집니다. 디바이스가 RSA 키를 사용한 사전 프로비저닝을 지원하는 경우 이 레이블을 제공하세요. device.json에서 preProvisioned를 로 설정한 경우 이 레이블, pkcs11LabelPreProvisionedECDevicePublicKeyForTLS 또는 둘 다를 제공해야 합니다.

pkcs11LabelPreProvisionedRSADeviceCertificateForTLS

(선택 사항) 이 레이블은 디바이스 인증서의 PKCS #11 레이블에 사용됩니다. 보안 요소 또는 하드웨어 제한이 있는 디바이스의 경우 AWS IoT 보안 인증 정보를 보존하기 위해 레이블이 달라집니다. 디바이스가 RSA 키를 사용한 사전 프로비저닝을 지원하는 경우 이 레이블을 제공하세요. device.json에서 preProvisioned를 로 설정한 경우 이 레이블, pkcs11LabelPreProvisionedECDeviceCertificateForTLS 또는 둘 다를 제공해야 합니다.

pkcs11LabelCodeVerifyKey

(선택 사항) 이 레이블은 코드 확인 키의 PKCS #11 레이블에 사용됩니다. 디바이스가 JITP 인증서, 코드 확인 키 및 루트 인증서에 대한 PKCS #11 스토리지를 지원하는 경우 이 레이블을 제공하세요. device.json에서 pkcs11JITPCodeVerifyRootCertSupport로 설정한 경우 이 레이블을 제공해야 합니다.

pkcs11LabelJITPCertificate

(선택 사항) 이 레이블은 JITP 인증서의 PKCS #11 레이블에 사용됩니다. 디바이스가 JITP 인증서, 코드 확인 키 및 루트 인증서에 대한 PKCS #11 스토리지를 지원하는 경우 이 레이블을 제공하세요. device.json에서 pkcs11JITPCodeVerifyRootCertSupport로 설정한 경우 이 레이블을 제공해야 합니다.

FreeRTOS용 IDT 변수

코드를 빌드하고 디바이스를 플래시하는 명령을 성공적으로 실행하려면 연결 및 디바이스에 대한 기타 정보가 필요할 수 있습니다. AWS IoT Device Tester에서는 JsonPath를 사용하여 플래시 및 빌드 명령에 있는 디바이스 정보를 참조할 수 있습니다. 단순 JsonPath 표현식을 사용하여 device.json 파일에 지정된 필수 정보를 가져올 수 있습니다.

경로 변수

FreeRTOS용 IDT는 명령줄과 구성 파일에 사용할 수 있는 다음 경로 변수를 정의합니다.

{{testData.sourcePath}}

소스 코드 경로로 확장됩니다. 이 변수를 사용하는 경우 플래시 명령과 빌드 명령에서 이 변수를 모두 사용해야 합니다.

{{device.connectivity.serialPort}}

직렬 포트로 확장됩니다.

{{device.identifiers[?(@.name == 'serialNo')].value[0]}}

디바이스의 일련 번호로 확장됩니다.

{{config.idtRootPath}}

AWS IoT Device Tester 루트 경로로 확장합니다.