기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
문제 해결
중요
이 문서는 FreeRTOS 릴리스 202012.00에서 사용하기 위한 FreeRTOS 사용 설명서의 보관 버전입니다. 이 문서의 최신 버전은 FreeRTOS 사용 설명서를 참조하세요.
각 테스트 제품군 실행 시 results
디렉터리에서 results/
라는 폴더를 생성하는 데 사용되는 고유 실행 ID가 있습니다. 개별 테스트 그룹 로그는 execution-id
results/
디렉터리 아래에 있습니다. FreeRTOS용 IDT 콘솔 출력을 사용해 실행 ID, 테스트 사례 ID, 실패한 테스트 사례의 테스트 그룹을 찾은 뒤 해당 테스트 사례의 로그 파일 execution-id
/logsresults/
를 엽니다. 이 파일에는 있는 정보는 다음과 같습니다.execution-id
/logs/test_group_id
__test_case_id
.log
-
전체 빌드 및 플래시 명령 출력.
-
테스트 실행 결과
-
보다 상세한 FreeRTOS용 IDT 콘솔 출력.
다음 문제 해결 워크플로우를 사용하는 것이 좋습니다.
-
"
사용자/역할
이 리소스에 액세스할 수 있는 권한이 없습니다." 라는 오류가 표시되면 에 지정된 대로 사용 권한을 구성해야 합니다. -
실행 UUID 및 현재 실행 중인 작업과 같은 정보를 찾으려면 콘솔 출력을 읽습니다.
-
FRQ_Report.xml
파일에서 각 테스트의 오류 문을 찾습니다. 이 디렉터리에는 각 테스트 그룹의 실행 로그가 포함되어 있습니다. -
/results/
아래에 있는 로그 파일을 살펴봅니다.execution-id
/logs -
다음 문제 영역 중 하나를 조사합니다.
-
/configs/
폴더의 JSON 구성 파일과 같은 디바이스 구성 -
디바이스 인터페이스. 로그를 통해 실패한 인터페이스를 확인합니다.
-
디바이스 도구. 디바이스를 빌드하고 플래시하기 위한 도구 체인이 올바르게 설치 및 구성되었는지 확인합니다.
-
정리되고 복제된 버전의 FreeRTOS 소스 코드가 있는지 확인합니다. FreeRTOS 릴리스는 FreeRTOS 버전에 따라 태그가 지정됩니다. 특정 코드 버전을 복제하려면 다음 명령을 사용합니다.
git clone --branch
version-number
https://github.com/aws/amazon-freertos.git cd amazon-freertos git submodule update --checkout --init --recursive
-
디바이스 구성 문제 해결
FreeRTOS용 IDT를 사용할 때는 바이너리를 실행하기 전에 올바른 구성 파일을 준비해야 합니다. 구문 분석 및 구성 오류가 발생할 경우 첫 번째 단계는 환경에 적합한 구성 템플릿을 찾아서 사용하는 것입니다. 이러한 템플릿은
디렉터리에 위치합니다.IDT_ROOT
/configs
그래도 문제가 발생할 경우 다음 디버깅 프로세스를 참조하십시오.
어디를 살펴봐야 합니까?
먼저 콘솔 출력을 읽고 이 설명서에서 execution-id
로 참조되는 실행 UUID와 같은 정보를 찾습니다.
그런 다음 /results/
디렉터리에서 execution-id
FRQ_Report.xml
파일을 찾습니다. 이 파일에는 실행된 모든 테스트 사례와 각 실패에 대한 오류 코드 조각이 포함되어 있습니다. 모든 실행 로그를 가져오려면 각 테스트 케이스에 대한 /results/
파일을 찾아봅니다.execution-id
/logs/test_group_id
__test_case_id
.log
IDT 오류 코드
다음 표에서는 FreeRTOS용 IDT에서 생성되는 오류 코드에 대해 설명합니다.
오류 코드 | 오류 코드 이름 | 가능한 근본 원인 | 문제 해결 |
---|---|---|---|
201 |
InvalidInputError |
|
필수 필드가 누락되지 않았으며 나열된 파일에서 필요한 형식인지 확인합니다. 자세한 내용은 처음으로 마이크로 컨트롤러 보드의 테스트 준비 단원을 참조하십시오. |
202 |
ValidationError |
|
보고서에서 오류 코드의 오른쪽에 표시되는 오류 메시지를 확인합니다.
|
203 |
CopySourceCodeError |
FreeRTOS 소스 코드를 지정된 디렉터리에 복사할 수 없습니다. |
다음 항목을 확인합니다.
|
204 |
BuildSourceError |
FreeRTOS 소스 코드를 컴파일할 수 없습니다. |
다음 항목을 확인합니다.
|
205 |
FlashOrRunTestError |
IDT FreeRTOS가 DUT에서 FreeRTOS를 플래시하거나 실행할 수 없습니다. |
|
206 |
StartEchoServerError |
IDT FreeRTO가 WiFi 또는 SecureSocket 테스트를 위해 에코 서버를 시작할 수 없습니다. |
|
구문 분석 오류 디버깅
경우에 따라 JSON 구성의 오타로 인해 구문 분석 오류가 발생할 수 있습니다. 대부분의 경우 문제는 JSON 파일에서 대괄호, 쉼표 또는 따옴표를 생략한 결과입니다. FreeRTOS용 IDT는 JSON 확인을 수행하고 디버깅 정보를 인쇄합니다. IDT는 오류가 발생한 줄, 줄 번호, 구문 오류의 열 번호를 인쇄합니다. 이 정보만 있으면 오류를 수정할 수 있지만, 그래도 오류를 찾는 데 문제가 있는 경우 IDE, Atom이나 Sublime과 같은 텍스트 편집기에서 또는 JSONLint와 같은 온라인 도구를 통해 수동으로 확인을 수행할 수 있습니다.
무결성 검사 실패 디버깅
FreeRToIntegrity 테스트 그룹을 실행할 때 오류가 발생하면 먼저
디렉터리 파일을 수정하지 않았는지 확인합니다. 수정하지 않았는데도 여전히 문제가 발생하는 경우 올바른 브랜치를 사용하고 있는지 확인합니다. 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
파일에 있습니다. 파일 및 폴더 구조를 수정하지 않고 FreeRTOS 포트를 검증하려면 checksums.json
파일의 'exhaustive
' 및 'minimal
' 섹션에 나열된 파일이 수정되지 않았는지 확인합니다. 구성된 SDK를 사용하여 실행하려면 'minimal
' 섹션 아래의 파일이 수정되지 않았는지 확인합니다.
SDK를 사용하여 IDT를 실행하고
디렉터리에서 일부 파일을 수정한 경우 freertos
userdata
파일에 SDK를 올바르게 구성했는지 확인합니다. 그렇지 않으면 무결성 검사기가
디렉터리의 모든 파일을 검사합니다.freertos
FullWiFi 테스트 그룹 실패 디버깅
FullWiFi 테스트 그룹에서 실패가 표시되고 ‘AFQP_WiFiConnectMultipleAP
’ 테스트가 실패하는 경우 이는 두 액세스 포인트가 IDT를 실행하는 호스트 컴퓨터와 동일한 서브넷에 있지 않기 때문일 수 있습니다. 두 액세스 포인트 모두 IDT를 실행하는 호스트 컴퓨터와 동일한 서브넷에 있는지 확인합니다.
“필수 파라미터 누락” 오류 디버깅
FreeRTOS용 IDT에 새로운 기능이 추가되고 있으므로 구성 파일에 대한 변경 사항이 도입될 수 있습니다. 기존 구성 파일을 사용하면 구성이 손상될 수 있습니다. 이러한 문제가 발생할 경우, results/
디렉터리 아래의 execution-id
/logs
파일에 모든 누락 파라미터가 명시적으로 나열됩니다. 또한 FreeRTOS용 IDT는 JSON 구성 파일 스키마를 검사하여 지원되는 최신 버전이 사용되었는지 확인합니다.test_group_id
__test_case_id
.log
“테스트를 시작할 수 없음” 오류 디버깅
테스트 시작 중에 실패를 가리키는 오류가 발생할 수 있습니다. 이 오류에는 여러 원인이 있을 수 있으므로 다음 영역이 정확한지 확인하십시오.
-
실행 명령에 포함된 풀 이름이 실제로 존재하는지 확인합니다. 이 이름은
device.json
파일에서 직접 참조됩니다. -
풀에 있는 디바이스에 올바른 구성 파라미터가 있는지 확인합니다.
“리소스 액세스 권한 없음” 오류 디버깅
터미널 출력 또는 /results/
아래 execution-id
/logstest_manager.log
파일에 “사용자/역할
이 이 리소스에 액세스할 권한이 없습니다.”라는 오류가 표시될 수 있습니다. 이 문제를 해결하려면 AWSIoTDeviceTesterForFreeRTOSFullAccess
관리형 정책을 테스트 사용자에게 연결합니다. 자세한 내용은 단원을 참조하십시오.
네트워크 테스트 오류 디버깅
네트워크 기반 테스트의 경우 IDT는 호스트 시스템의 비 예약 포트에 바인딩하는 에코 서버를 시작합니다. WiFi 또는 SecureSocket 테스트에서 제한 시간 또는 사용할 수 없는 연결로 인해 오류가 발생하는 경우, 네트워크가 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)이 FreeRTOS 소스 코드에 대한 IDT의 변경 사항을 알지 못하고 업데이트된 바이너리를 빌드하지 않았기 때문일 수 있습니다. 이로 인해 OTA가 현재 디바이스에 있는 동일한 바이너리로 수행되고 테스트가 실패합니다. OTA 업데이트 실패에 대한 문제를 해결하려면 먼저 지원되는 최신 버전의 빌드 시스템을 사용하고 있는지 확인하십시오.
PresignedUrlExpired
테스트 케이스에 대한 OTA 테스트 실패
이 테스트의 한 가지 전제 조건은 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
및/dev/ttyUSB1
인 경우device.json
파일에서/dev/ttyUSB1
을 사용합니다.Windows의 경우 동일한 로직을 따릅니다.
디바이스 데이터 읽기
FreeRTOS용 IDT는 개별 디바이스 빌드 및 플래시 도구를 사용하여 포트 구성을 지정합니다. 디바이스를 테스트하는 동안 출력을 얻을 수 없는 경우 다음 기본 설정을 사용해 봅니다.
-
전송 속도: 115200
-
데이터 비트: 8
-
패리티: 없음
-
정지 비트: 1
-
흐름 제어: 없음
이러한 설정은 FreeRTOS용 IDT에서 처리됩니다. 직접 설정할 필요가 없습니다. 하지만 동일한 방법을 사용하여 디바이스 출력을 수동으로 읽을 수 있습니다. 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 이상을 설치하는 것이 좋습니다.
비호환성을 나타내는 증상에는 다음이 포함될 수 있습니다.
-
FreeRTOS가 디바이스에 빌드하거나 플래시하지 못합니다.
-
Code Composer Studio 설치 관리자가 동결될 수 있습니다.
-
빌드 또는 플래시 프로세스 중에 로그 출력이 콘솔에 표시되지 않습니다.
-
헤드리스로 호출하더라도 빌드 명령이 GUI 모드에서 시작하려고 시도합니다.
로깅
FreeRTOS용 IDT 로그는 단일 위치에 배치됩니다. 루트 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/
디렉터리에 있습니다. FreeRTOS용 IDT 콘솔의 출력을 사용해 실행 ID, 테스트 사례 ID, 실패한 테스트 사례의 테스트 그룹 ID를 찾습니다. 그런 다음이 정보를 사용하여 라는 테스트 사례에 대한 로그 파일을 찾아 엽니다execution-id
/logsresults/
.이 파일의 정보에는 전체 빌드 및 플래시 명령 출력, 테스트 실행 출력 및 더 자세한 AWS IoT Device Tester 콘솔 출력이 포함됩니다.execution-id
/logs/test_group_id
__test_case_id
.log
S3 버킷 문제
IDT를 실행하는 동안 CTRL+C 키를 누르면 IDT가 정리 프로세스를 시작합니다. 이 정리 작업 중에 IDT 테스트의 일환으로 생성된 Amazon S3 리소스가 제거됩니다. 정리를 완료할 수 없는 경우 생성된 Amazon S3 버킷이 너무 많아 문제가 발생한 것일 수 있습니다. 즉, 다음에 IDT를 실행하면 테스트가 실패하기 시작합니다.
CTRL+C 키를 눌러 IDT를 중지한 경우 정리 프로세스가 완료되도록 해야 이 문제가 발생하지 않습니다. 수동으로 생성한 Amazon S3 버킷을 계정에서 삭제할 수도 있습니다.
제한 시간 오류 해결
테스트 제품군이 실행되는 동안 제한 시간 오류가 발생하면 제한 시간 승수 계수를 지정하여 제한 시간을 늘립니다. 이 계수는 기본 제한 시간 값에 적용됩니다. 이 플래그에 대해 구성된 값은 1.0보다 크거나 같아야 합니다. 제한 시간 승수를 사용하려면 테스트 제품군을 실행할 때 --timeout-multiplier
플래그를 사용합니다.
셀룰러 기능 및 AWS 요금
device.JSON
파일Yes
에서 Cellular
기능이 로 설정된 경우 FullSecureSockets는 테스트를 실행하는 데 t.micro EC2 인스턴스를 사용하므로 AWS 계정에 추가 비용이 발생할 수 있습니다. 자세한 설명은 Amazon EC2 요금
검증 보고서 생성 정책
검증 보고서는 지난 2년 이내에 릴리스된 FreeRTOS 버전을 지원하는 AWS IoT Device Tester (IDT) 버전에서만 생성됩니다. 지원 정책에 대해 궁금한 점이 있으면 AWS Support