기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
오류 해결
각 테스트 제품군 실행 시 results
디렉터리에서 results/
라는 폴더를 생성하는 데 사용되는 고유 실행 ID가 있습니다. 개별 테스트 그룹 로그는 execution-id
results/
디렉터리 아래에 있습니다. 무료RTOS 콘솔 출력IDT용 를 사용하여 실패한 테스트 사례의 실행 ID, 테스트 사례 ID 및 테스트 그룹 ID를 찾은 다음 라는 이름의 해당 테스트 사례에 대한 로그 파일을 엽니다execution-id
/logsresults/
. 이 파일에는 있는 정보는 다음과 같습니다.execution-id
/logs/test_group_id
__test_case_id
.log
-
전체 빌드 및 플래시 명령 출력.
-
테스트 실행 결과
-
무료RTOS 콘솔 출력IDT에 대한 자세한 내용입니다.
다음 문제 해결 워크플로우를 사용하는 것이 좋습니다.
-
오류가 표시되는 경우 “
user/role
는 이 리소스에 액세스할 권한이 없습니다. 에 지정된 대로 권한을 구성해야 합니다AWS 계정 생성 및 구성. -
콘솔 출력을 읽고 실행 UUID 및 현재 실행 중인 작업과 같은 정보를 찾습니다.
-
FRQ_Report.xml
파일에서 각 테스트의 오류 문을 찾습니다. 이 디렉터리에는 각 테스트 그룹의 실행 로그가 포함되어 있습니다. -
/results/
아래에 있는 로그 파일을 살펴봅니다.execution-id
/logs -
다음 문제 영역 중 하나를 조사합니다.
-
/configs/
폴더의 구성 파일과 같은 디바이스 JSON 구성입니다. -
디바이스 인터페이스. 로그를 통해 실패한 인터페이스를 확인합니다.
-
디바이스 도구. 디바이스를 빌드하고 플래시하기 위한 도구 체인이 올바르게 설치 및 구성되었는지 확인합니다.
-
FRQ 1.x.x의 경우 정리되고 복제된 버전의 FreeRTOS 소스 코드를 사용할 수 있는지 확인합니다. 무료RTOS 릴리스에는 무료RTOS 버전에 따라 태그가 지정됩니다. 특정 코드 버전을 복제하려면 다음 명령을 사용합니다.
git clone --branch
version-number
https://github.com/aws/amazon-freertos.git cd amazon-freertos git submodule update --checkout --init --recursive
-
디바이스 구성 문제 해결
IDT 를 무료 로 사용하는 경우 RTOS바이너리를 실행하기 전에 올바른 구성 파일을 준비해야 합니다. 구문 분석 및 구성 오류가 발생할 경우 첫 번째 단계는 환경에 적합한 구성 템플릿을 찾아서 사용하는 것입니다. 이러한 템플릿은
디렉터리에 위치합니다.IDT_ROOT
/configs
그래도 문제가 발생할 경우 다음 디버깅 프로세스를 참조하십시오.
어디를 살펴봐야 합니까?
먼저 콘솔 출력을 읽고 execution-id
이 설명서에서 참조UUID하는 실행과 같은 정보를 찾습니다.
그런 다음 /results/
디렉터리에서 execution-id
FRQ_Report.xml
파일을 찾습니다. 이 파일에는 실행된 모든 테스트 사례와 각 실패에 대한 오류 코드 조각이 포함되어 있습니다. 모든 실행 로그를 가져오려면 각 테스트 케이스에 대한 /results/
파일을 찾아봅니다.execution-id
/logs/test_group_id
__test_case_id
.log
IDT 오류 코드
다음 표에서는 IDT for Free 에서 생성된 오류 코드를 설명합니다RTOS.
오류 코드 | 오류 코드 이름 | 가능한 근본 원인 | 문제 해결 |
---|---|---|---|
201 |
InvalidInputError |
|
필수 필드가 누락되지 않았으며 나열된 파일에서 필요한 형식인지 확인합니다. 자세한 내용은 마이크로컨트롤러 보드의 첫 번째 테스트 단원을 참조하십시오. |
202 |
ValidationError |
|
보고서에서 오류 코드의 오른쪽에 표시되는 오류 메시지를 확인합니다.
|
203 |
CopySourceCodeError |
지정된 디렉터리에 프리RTOS 소스 코드를 복사할 수 없습니다. |
다음 항목을 확인합니다.
|
204 |
BuildSourceError |
프리RTOS 소스 코드를 컴파일할 수 없습니다. |
다음 항목을 확인합니다.
|
205 |
FlashOrRunTestError |
IDT 프리RTOS는 에서 프리RTOS를 플래시하거나 실행할 수 없습니다DUT. |
|
206 |
StartEchoServerError |
IDT FreeRTOS는 WiFi 또는 보안 소켓 테스트에 대해 에코 서버를 시작할 수 없습니다. |
|
디버그 구성 파일 구문 분석 오류
구성의 오타로 인해 구문 분석 오류가 발생할 JSON 수 있습니다. 대부분의 경우 문제는 JSON 파일에서 대괄호, 쉼표 또는 따옴표를 생략한 결과입니다. IDT for FreeRTOS는 JSON 검증을 수행하고 디버깅 정보를 인쇄합니다. IDT는 오류가 발생한 줄, 줄 번호, 구문 오류의 열 번호를 인쇄합니다. 이 정보는 오류를 해결하는 데 도움이 되기에 충분해야 하지만, 여전히 오류를 찾는 데 문제가 있는 경우 Atom 또는 Sublime과 같은 IDE텍스트 편집기 또는 와 같은 온라인 도구를 통해 에서 수동으로 검증을 수행할 수 있습니다JSONLint.
디버그 테스트 결과 구문 분석 오류
, Full _Core FreeRTOS-Libraries-Integration-Tests
위에서 언급한 경우에는 관련 없는 디바이스 출력에서 발생한 문자열과 같은 이상한 테스트 사례 실패 이유가 출력됩니다. IDT 무료RTOS 테스트 사례 로그 파일(테스트 중에 받은 IDT 무료RTOS 직렬 출력 모두 포함)에는 다음이 표시될 수 있습니다.
<unrelated device output> TEST(Full_PKCS11_Capabilities, PKCS11_Capabilities)<unrelated device output> <unrelated device output> PASS
위 예제에서 관련 없는 디바이스 출력은 IDT FreeRTOS가 테스트 결과인 를 감지하지 못하도록 합니다PASS.
테스트를 최적화하려면 다음을 확인하세요.
-
디바이스에서 사용되는 로깅 매크로가 스레드 안전해야 합니다. 자세한 내용은 라이브러리 로깅 매크로 구현을 참조하세요.
-
테스트 중에 직렬 연결에 대한 출력이 최소한이어야 합니다. 테스트 중에 테스트 결과가 별도의 호출로 출력되므로 로깅 매크로가 스레드 안전하더라도 다른 디바이스 출력은 문제가 될 수 있습니다.
IDT 무료RTOS 테스트 사례 로그에는 다음과 같이 중단되지 않은 테스트 결과 출력이 표시되는 것이 이상적입니다.
---------STARTING TESTS--------- TEST(Full_OTA_PAL, otaPal_CloseFile_ValidSignature) PASS TEST(Full_OTA_PAL, otaPal_CloseFile_InvalidSignatureBlockWritten) PASS ----------------------- 2 Tests 0 Failures 0 Ignored
디버그 무결성 검사 실패
FRQ 1.x.x 버전의 FreeRTOS를 사용하는 경우 다음 무결성 검사가 적용됩니다.
F reeRTOSIntegrity 테스트 그룹을 실행할 때 실패가 발생하면 먼저
디렉터리 파일을 수정하지 않았는지 확인합니다. 수정하지 않았는데도 여전히 문제가 발생하는 경우 올바른 브랜치를 사용하고 있는지 확인합니다. IDT의 freertos
list-supported-products
명령을 실행하는 경우 사용해야 하는
리포지토리의 태그가 지정된 브랜치를 찾을 수 있습니다.freertos
freertos
리포지토리에서 올바른 태그가 지정된 브랜치를 복제했는데도 여전히 문제가 있는 경우 submodule update
명령을 실행했는지 확인합니다. freertos
리포지토리의 복제 워크플로는 다음과 같습니다.
git clone --branch version-number https://github.com/aws/amazon-freertos.git cd amazon-freertos git submodule update --checkout —init —recursive
무결성 검사기가 찾는 파일 목록은
디렉터리의 freertos
checksums.json
파일에 있습니다. 파일 및 폴더 구조를 수정하지 않고 프리RTOS 포트를 검증하려면 checksums.json
파일의 'exhaustive
' 및 'minimal
' 섹션에 나열된 파일이 수정되지 않았는지 확인합니다. SDK 구성된 를 사용하여 를 실행하려면 'minimal
' 섹션 아래의 파일이 수정되지 않았는지 확인합니다.
IDT 를 사용하여 를 실행SDK하고
디렉터리의 일부 파일을 수정한 경우 freertos
userdata
파일SDK에서 를 올바르게 구성해야 합니다. 그렇지 않으면 무결성 검사기가
디렉터리의 모든 파일을 검사합니다.freertos
디버그 FullWiFi 테스트 그룹 실패
FRQ 1.x.x를 사용 중이고 FullWiFi 테스트 그룹에서 장애가 발생하고 “AFQP_WiFiConnectMultipleAP
” 테스트가 실패하는 경우, 이는 두 액세스 포인트가 를 실행하는 호스트 컴퓨터와 동일한 서브넷에 없기 때문일 수 있습니다IDT. 두 액세스 포인트가 를 실행하는 호스트 컴퓨터와 동일한 서브넷에 있는지 확인합니다IDT.
'필수 파라미터 누락' 오류 디버그
새 기능이 IDT for Free 에 추가되므로 구성 파일에 RTOS대한 변경 사항이 도입될 수 있습니다. 기존 구성 파일을 사용하면 구성이 손상될 수 있습니다. 이러한 문제가 발생할 경우, results/
디렉터리 아래의 execution-id
/logs
파일에 모든 누락 파라미터가 명시적으로 나열됩니다. IDT for FreeRTOS는 JSON 구성 파일 스키마를 검증하여 지원되는 최신 버전이 사용되었는지 확인합니다.test_group_id
__test_case_id
.log
'테스트를 시작할 수 없음' 오류 디버그
테스트 시작 중에 실패를 가리키는 오류가 발생할 수 있습니다. 이 오류에는 여러 원인이 있을 수 있으므로 다음 영역이 정확한지 확인하십시오.
-
실행 명령에 포함된 풀 이름이 실제로 존재하는지 확인합니다. 이 이름은
device.json
파일에서 직접 참조됩니다. -
풀에 있는 디바이스에 올바른 구성 파라미터가 있는지 확인합니다.
'테스트 결과 시작을 찾을 수 없음' 오류 디버그
테스트 중인 디바이스가 출력한 결과를 구문 분석하려고 IDT 하면 오류가 발생할 수 있습니다. 이러한 오류에는 여러 원인이 있을 수 있으므로 다음 영역이 정확한지 확인하세요.
-
테스트 대상 디바이스가 호스트 시스템에 안정적으로 연결되어 있는지 확인합니다. 로그 파일에서 이러한 오류를 보여주는 테스트를 확인하여 수신 중인 항목을 확인할 수 IDT 있습니다.
-
FRQ 1.x.x를 사용하고 테스트 중인 디바이스가 느린 네트워크 또는 다른 인터페이스를 통해 연결되어 있거나 다른 무료 테스트 그룹 출력과RTOS 함께 무료RTOS 테스트 그룹 로그에 “--------- STARTINGTESTS---------” 플래그가 표시되지 않는 경우 사용자 데이터 구성
testStartDelayms
에서 의 값을 늘리려고 시도할 수 있습니다. 자세한 내용은 빌드, 플래시 및 테스트 설정 구성 단원을 참조하십시오.
'테스트 실패:예상 __ 결과 디버깅했지만 ___' 오류가 발견됨
테스트 중에 테스트 실패를 가리키는 오류가 발생할 수 있습니다. 테스트가 일정한 수의 테스트 결과를 예상했지만 테스트 중에 결과가 표시되지 않은 것입니다. 일부 무료RTOS 테스트는 가 디바이스의 출력을 IDT 보기 전에 실행됩니다. 이 오류가 표시되면 userdata 구성에서 testStartDelayms
값을 늘려 볼 수 있습니다. 자세한 내용은 빌드, 플래시 및 테스트 설정 구성 단원을 참조하십시오.
ConditionalTests 제약으로 인해 '________' 디버깅이 선택 취소되었습니다.
이는 테스트와 호환되지 않는 디바이스 풀에서 테스트를 실행하고 있음을 의미합니다. 이는 OTA E2E 테스트에서 발생할 수 있습니다. 예를 들어 테스트 OTADataplaneMQTT
그룹을 실행하는 동안 device.json
구성 파일에서 OTA를 아니요 또는 OTADataPlaneProtocol
로 선택했습니다HTTP. 실행하도록 선택한 테스트 그룹이 device.json
기능 선택과 일치해야 합니다.
디바이스 출력 모니터링 중 제한 IDT 시간 디버깅
IDT 는 여러 가지 이유로 인해 시간 초과될 수 있습니다. 테스트의 디바이스 출력 모니터링 단계에서 제한 시간이 발생하고 IDT 테스트 사례 로그 내에서 결과를 볼 수 있는 경우 에서 결과를 잘못 구문 분석했음을 의미합니다IDT. 한 가지 이유는 테스트 결과 중간에 로그 메시지가 인터리브되었기 때문일 수 있습니다. 이 경우 UNITY 로그 설정 방법에 대한 자세한 내용은 프리RTOS 포팅 가이드를 참조하세요.
디바이스 출력 모니터링 중 제한 시간이 초과되는 또 다른 이유는 단일 TLS 테스트 사례 실패 후 디바이스가 재부팅되기 때문일 수 있습니다. 그러면 디바이스가 플래시된 이미지를 실행하고 무한 루프가 발생하여 로그에 표시됩니다. 이 경우 테스트 실패 후 디바이스가 재부팅되지 않도록 해야 합니다.
“리소스에 액세스할 권한이 없음” 오류 디버깅
오류가 표시될 수 있습니다.”user/role
는 터미널 출력 또는 아래의 test_manager.log
파일에서 이 리소스에 액세스할 권한이 없습니다/results/
. 이 문제를 해결하려면 execution-id
/logsAWS IoTDeviceTesterForFreeRTOSFullAccess
관리형 정책을 테스트 사용자에게 연결합니다. 자세한 내용은 AWS 계정 생성 및 구성 단원을 참조하십시오.
네트워크 테스트 오류 디버그
네트워크 기반 테스트의 경우 는 호스트 시스템의 예약되지 않은 포트에 결합하는 에코 서버를 IDT 시작합니다. WiFi 또는 보안 소켓 테스트에서 제한 시간 또는 사용 불가능한 연결로 인해 오류가 발생하는 경우 1024~49151 범위의 구성된 포트에 대한 트래픽이 허용되도록 네트워크가 구성되어 있는지 확인하세요.
SecureSocket 테스트는 기본적으로 포트 33333 및 33334를 사용합니다. WiFi 테스트는 기본적으로 포트 33335를 사용합니다. 이 3개의 포트가 사용 중이거나 방화벽 또는 네트워크에 의해 차단된 경우 userdata.json의 다른 포트를 테스트에 사용하도록 선택할 수 있습니다. 자세한 내용은 빌드, 플래시 및 테스트 설정 구성 단원을 참조하십시오. 다음 명령을 사용하여 특정 포트가 사용 중인지 확인할 수 있습니다.
-
Windows:
netsh advfirewall firewall show rule name=all | grep port
-
Linux:
sudo netstat -pan | grep port
-
macOS:
netstat -nat | grep port
OTA 동일한 버전 페이로드로 인한 업데이트 실패
OTA 가 수행된 후 디바이스에 동일한 버전이 있기 때문에 OTA 테스트 사례가 실패하는 경우 빌드 시스템(예: cmake)이 IDT의 프리RTOS 소스 코드 변경 사항을 인지하지 못하고 업데이트된 바이너리를 빌드하지 않았기 때문일 수 있습니다. 이로 인해 현재 디바이스에 있는 동일한 바이너리로 가 OTA 수행되고 테스트가 실패합니다. OTA 업데이트 실패 문제를 해결하려면 먼저 빌드 시스템의 지원되는 최신 버전을 사용하고 있는지 확인하세요.
OTA 테스트 사례에 대한 PresignedUrlExpired
테스트 실패
이 테스트의 사전 조건 중 하나는 OTA 업데이트 시간이 60초를 초과해야 한다는 것입니다. 그렇지 않으면 테스트가 실패합니다. 이 경우 로그에 "Test takes less than 60 seconds (url expired time) to finish. Please reach out to us." 오류 메시지가 표시됩니다.
디바이스 인터페이스 및 포트 오류 디버그
이 섹션에는 가 디바이스에 연결하는 데 IDT 사용하는 디바이스 인터페이스에 대한 정보가 포함되어 있습니다.
지원하는 플랫폼
IDT 는 Linux, macOS 및 Windows를 지원합니다. 세 가지 플랫폼은 연결되는 직렬 디바이스에 대한 이름 지정 체계가 모두 다릅니다.
-
Linux:
/dev/tty*
-
macOS:
/dev/tty.*
또는/dev/cu.*
-
Windows: COM*
디바이스 포트를 확인하려면,
-
Linux/macOS의 경우 터미널을 열고
ls /dev/tty*
를 실행합니다. -
macOS의 경우 터미널을 열고
ls /dev/tty.*
또는ls /dev/cu.*
를 실행합니다. -
Windows의 경우 Device Manager를 열고 직렬 디바이스 그룹을 확장합니다.
포트에 연결된 디바이스를 확인하려면,
-
Linux의 경우
udev
패키지가 설치되었는지 확인하고udevadm info –name=
를 실행합니다. 이 유틸리티는 올바른 포트를 사용하고 있는지 확인하는 데 도움이 되는 디바이스 드라이버 정보를 인쇄합니다.PORT
-
macOS의 경우 Launchpad를 열고
System Information
을 검색합니다. -
Windows의 경우 Device Manager를 열고 직렬 디바이스 그룹을 확장합니다.
디바이스 인터페이스
포함된 각 디바이스가 다르므로 하나 이상의 직렬 포트가 있을 수 있습니다. 일반적으로 시스템에 연결될 때 디바이스에는 두 개의 포트가 있습니다.
-
디바이스를 플래시하기 위한 데이터 포트
-
출력을 읽기 위한 읽기 포트.
device.json
파일에서 올바른 읽기 포트를 설정해야 합니다. 그렇지 않으면 디바이스에서 출력을 읽지 못할 수 있습니다.여러 포트가 있는 경우
device.json
파일에서 디바이스의 읽기 포트를 사용하는지 확인합니다. 예를 들어 Espressif WRover 디바이스를 연결하고 할당된 두 포트가/dev/ttyUSB0
및 인 경우device.json
파일에/dev/ttyUSB1
를/dev/ttyUSB1
사용합니다.
Windows의 경우 동일한 로직을 따릅니다.
디바이스 데이터 읽기
IDT for FreeRTOS는 개별 디바이스 빌드 및 플래시 도구를 사용하여 포트 구성을 지정합니다. 디바이스를 테스트하는 동안 출력을 얻을 수 없는 경우 다음 기본 설정을 사용해 봅니다.
-
전송 속도: 115200
-
데이터 비트: 8
-
패리티: 없음
-
정지 비트: 1
-
흐름 제어: 없음
이러한 설정은 IDT for Free 에서 처리합니다RTOS. 직접 설정할 필요가 없습니다. 하지만 동일한 방법을 사용하여 디바이스 출력을 수동으로 읽을 수 있습니다. Linux 또는 macOS에서는 screen
명령을 사용하여 이 작업을 수행할 수 있습니다. Windows에서는 와 같은 프로그램을 사용할 수 있습니다 TeraTerm.
Screen: screen /dev/cu.usbserial 115200
TeraTerm: Use the above-provided settings to set the fields explicitly in the
GUI.
개발 도구 체인 문제
이 단원에서는 도구 체인에 발생할 수 있는 문제를 설명합니다.
Ubuntu의 Code Composer Studio
최신 버전의 Ubuntu(17.10 및 18.04)에는 Code Composer Studio 7.x 버전과 호환되지 않는 glibc
패키지 버전이 있습니다. Code Composer Studio 버전 8.2 이상을 설치하는 것이 좋습니다.
비호환성을 나타내는 증상에는 다음이 포함될 수 있습니다.
-
디바이스를 빌드하거나 플래시하지 못하는 경우.RTOS
-
Code Composer Studio 설치 관리자가 동결될 수 있습니다.
-
빌드 또는 플래시 프로세스 중에 로그 출력이 콘솔에 표시되지 않습니다.
-
빌드 명령은 헤드리스로 호출된 경우에도 GUI 모드에서 시작하려고 시도합니다.
로깅
IDT 무료RTOS 로그는 단일 위치에 배치됩니다. 루트 IDT 디렉터리에서 이러한 파일은 에서 사용할 수 있습니다results/
.execution-id
/
-
FRQ_Report.xml
-
awsiotdevicetester_report.xml
-
logs/
test_group_id
__test_case_id
.log
FRQ_Report.xml
및 logs/
는 검사해야 하는 가장 중요한 로그입니다. test_group_id
__test_case_id
.logFRQ_Report.xml
에는 특정 오류 메시지와 함께 실패한 테스트 케이스에 대한 정보가 포함되어 있습니다. 그런 다음 컨텍스트를 더 잘 이해하기 위해 logs/
를 사용하여 문제를 심층 분석할 수 있습니다.test_group_id
__test_case_id
.log
콘솔 오류
AWS IoT Device Tester 이 실행되면 오류가 간략한 메시지와 함께 콘솔에 보고됩니다. 오류에 대해 자세히 알아보려면 results/
를 살펴봅니다.execution-id
/logs/test_group_id
__test_case_id
.log
오류 로그
각 테스트 제품군 실행에는 results/
라는 폴더를 생성하는 데 사용되는 고유 실행 ID가 있습니다. 개별 테스트 케이스 로그는 execution-id
results/
디렉터리에 있습니다. 무료RTOS 콘솔IDT용 의 출력을 사용하여 실패한 테스트 사례의 실행 ID, 테스트 사례 ID 및 테스트 그룹 ID를 찾습니다. 그런 다음 이 정보를 사용하여 execution-id
/logsresults/
라는 테스트 사례에 대한 로그 파일을 찾아 엽니다. 이 파일의 정보에는 전체 빌드 및 플래시 명령 출력, 테스트 실행 출력 및 더 자세한 AWS IoT Device Tester 콘솔 출력이 포함됩니다.execution-id
/logs/test_group_id
__test_case_id
.log
S3 버킷 문제
실행 CTRL+C 중에 를 누르면 IDTIDT가 정리 프로세스를 시작합니다. 이러한 정리의 일부는 IDT 테스트의 일부로 생성된 Amazon S3 리소스를 제거하는 것입니다. 정리를 완료할 수 없는 경우 생성된 Amazon S3 버킷이 너무 많아 문제가 발생한 것일 수 있습니다. 즉, 다음에 IDT 테스트를 실행하면 실패하기 시작합니다.
CTRL+C 를 눌러 중지하는 경우 이 문제를 방지하려면 정리 프로세스를 완료하도록 해야 IDT합니다. 수동으로 생성한 Amazon S3 버킷을 계정에서 삭제할 수도 있습니다.
제한 시간 오류 문제 해결
테스트 제품군이 실행되는 동안 제한 시간 오류가 발생하면 제한 시간 승수 계수를 지정하여 제한 시간을 늘립니다. 이 계수는 기본 제한 시간 값에 적용됩니다. 이 플래그에 대해 구성된 값은 1.0보다 크거나 같아야 합니다. 제한 시간 승수를 사용하려면 테스트 제품군을 실행할 때 --timeout-multiplier
플래그를 사용합니다.
셀룰러 기능 및 AWS 요금
device.JSON
파일Yes
에서 Cellular
기능이 로 설정된 경우 는 테스트를 실행하기 위해 t.micro EC2 인스턴스를 FullSecureSockets 사용하므로 AWS 계정에 추가 비용이 발생할 수 있습니다. 자세한 내용은 Amazon EC2 요금 섹션을
검증 보고서 생성 정책
검증 보고서는 지난 2년 이내에 릴리스된 무료RTOS 버전을 지원하는 AWS IoT Device Tester (IDT) 버전에서만 생성됩니다. 지원 정책에 대해 궁금한 점이 있으면 AWS Support