

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

# 보드 검증
<a name="freertos-qualification"></a>

## 사전 조건
<a name="prerequistes-qualification"></a>

하드웨어 요구 사항

FreeRTOS AWS IoT 라이브러리가 실행되는 MCU 기반 개발 보드에는 다음이 있어야 합니다.
+ 이더넷, Wi-Fi 또는 셀룰러 연결 기능

소프트웨어 요구 사항:

FreeRTOS [이식 안내서의 이식 순서도](https://docs.aws.amazon.com/freertos/latest/portingguide/porting-chart.html)는 지정된 MCU 기반 개발 보드에 필요한 FreeRTOS AWS IoT 라이브러리를 식별합니다. *FreeRTOS * 최소 하위 집합은 다음과 같습니다.
+ FreeRTOS 커널
+ coreMQTT
+ AWS IoT Over-The-Air 업데이트(OTA)

테스트 요구 사항:
+ FreeRTOS용를 사용하여 정의된 [테스트](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests) GitHub 리포지토리와 비교하여 FreeRTOS 라이브러리에 필요한 하드웨어 플랫폼별 APIs의 구현 AWS IoT Device Tester 을 확인합니다. [AWS IoT Device Tester (IDT)를 사용하여 이식된 FreeRTOS 라이브러리 확인](#qualifying-your-device-idt)을(를) 참조하세요.
+ Device Advisor를 AWS IoT Core 사용하여 와의 상호 운용성을 확인합니다. [AWS IoT Device Tester (IDT)를 사용하여 이식된 FreeRTOS 라이브러리 확인](#qualifying-your-device-idt)의 4단계를 참조하세요.

## 권장 사항
<a name="recommendations-qualification"></a>

보안 강화를 위한 권장 사항은 다음과 같습니다.
+ 오프라인 또는 일시적 손상이 영구화되지 않도록 하려면 물리적 공격에 저항하는 하드웨어 신뢰 루트(예: [Secure Element](https://wikipedia.org/wiki/Secure_element) 또는 Secure Enclave)에 비밀 및 보안 인증 정보를 저장하십시오.
+ 무단 데이터 공개로 이어질 수 있는 네트워크 [스푸핑](https://wikipedia.org/wiki/Spoofing_attack) 및 [중간자 공격](https://wikipedia.org/wiki/Man-in-the-middle_attack)의 위험을 줄이려면 DHCP, DNS, TCP/IP, TLS와 같은 프로토콜을 구현하는 FreeRTOS 라이브러리용 [실제 난수 생성기(TRNG)](https://wikipedia.org/wiki/Hardware_random_number_generator)를 사용하십시오. 자세한 내용은 [Recommendation for Random Number Generation Using Deterministic Random Bit Generators](https://csrc.nist.gov/publications/detail/sp/800-90a/rev-1/final)(NIST SP 800-90A)의 50페이지를 참조하세요.

## 검증 단계
<a name="qualifying-your-device"></a>

### AWS IoT Device Tester (IDT)를 사용하여 이식된 FreeRTOS 라이브러리 확인
<a name="qualifying-your-device-idt"></a>

1. FreeRTOS 라이브러리를 보드로 이식합니다. 지침은 [FreeRTOS 이식 안내서](https://docs.aws.amazon.com/freertos/latest/portingguide/)를 참조하세요.

1. 테스트 프로젝트를 생성하고 [Freertos-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests) GitHub 리포지토리에서 필요한 테스트를 이식합니다. 테스트 실행기 태스크 [ RunQualificationTest](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/blob/a8cafefc714cdbb4ee1d0f97c92e9c4cc75059fd/src/qualification_test.c#L52)를 직접 호출합니다.
**참고**  
우수한 개발자 경험을 위해 FreeRTOS 라이브러리를 이식하고 IDE를 사용하여 해당 개별 테스트 그룹을 로컬에서 실행하여 통합을 확인하는 것이 좋습니다.  
테스트 실행기 태스크는 개별 테스트 프로젝트 또는 데모 애플리케이션 프로젝트에서 실행됩니다.

1. 검증에 사용된 모든 종속성을 나열하는 `manifest.yml` 파일을 생성합니다. 종속성에는 FreeRTOS 라이브러리 및 테스트 리포지토리가 포함됩니다. 세부 정보는 [FreeRTOS 매니페스트 파일 지침](afq-checklist-manifest-instr.md) 섹션을 참조하세요.
**참고**  
`manifest.yml`은 IDT가 특정 FreeRTOS 라이브러리 버전에 대한 무결성 검사에 필요한 종속성을 검색하고 테스트 바이너리를 빌드, 플래시 및 실행하도록 테스트 프로젝트를 구성하는 데 사용합니다.  
IDT는 특정 프로젝트 구조를 요구하지 않으며 `manifest.yml` 파일에 포함된 참조 경로를 사용합니다.

1. <a name="qualifying-your-device-da"></a>Device Advisor를 사용하여 AWS IoT 상호 운용성을 확인합니다.

   1. 위의 테스트에서 사용된 FreeRTOS 라이브러리, 이식, OTA와 같은 통합 태스크를 포함하여 동일한 구성 요소를 사용하는 데모 프로젝트를 생성합니다.

      검증을 위해서는 데모 애플리케이션이 다음 기능을 제공해야 합니다.
      + MQTT 주제 게시 및 구독을 수행합니다.
      + OTA 업데이트를 수행합니다.
      + OTA 업데이트를 지원하는 부트 로더를 생성합니다. 자체 부트 로더 또는 [McUboot](https://freertos.org/mcuboot/)를 사용합니다. [Labs-FreeRTOS-Plus-MCUBoot](https://github.com/FreeRTOS/Lab-Project-FreeRTOS-MCUBoot)를 참조하세요.
**참고**  
[FreeRTOS GitHub](https://github.com/FreeRTOS/FreeRTOS) 리포지토리에는 개별 태스크를 보여주는 사전 구성된 예제가 있습니다. 또한 coreMQTT 및 OTA 태스크를 모두 포함하는 통합 [coreMQTT 에이전트 데모](https://github.com/FreeRTOS/coreMQTT-Agent-Demos)도 있습니다. [검증 프로젝트의 예](examples-qualification.md)에서 FreeRTOS 추천 IoT 통합도 참조하세요.

   1. AWS IoT Device Tester 는 [AWS IoT Device Advisor](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor.html)에 대해 데모를 실행합니다. 검증을 위해서는 다음과 같은 Device Advisor 테스트 사례가 필요합니다.  
**테스트 사례**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/freertos/latest/qualificationguide/freertos-qualification.html)

1. 에서 테스트를 실행 AWS IoT Device Tester 하고 테스트 보고서를 생성합니다.
   + IDT는 테스트를 구성하고 보드에서 자동으로 빌드 및 플래시를 수행합니다. 이를 활성화하려면 `userdata.json` 파일에서 디바이스에 대한 빌드 및 플래시 명령을 실행하도록 IDT를 구성해야 합니다. [FreeRTOS용 IDT 사용 설명서](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html)의 [빌드, 플래시 및 테스트 설정 구성](https://docs.aws.amazon.com/freertos/latest/userguide/lts-qual-steps.html#lts-cfg-dt-ud)을 참조하세요.
   + `device.json` 파일에서 연결 유형, 암호화 알고리즘, IDT용 키 프로비저닝 방법 등 기기 지원 기능을 제공하여 실행할 테스트를 결정합니다. [FreeRTOS용 IDT 사용 설명서](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html)의 [FreeRTOS용 IDT에서 디바이스 풀 생성](https://docs.aws.amazon.com/freertos/latest/userguide/lts-qual-steps.html#lts-cfg-dt-dp)을 참조하세요.
   + IDT용 AWS 계정을 생성하고 구성하여 필요한 클라우드 리소스를 생성합니다. [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html)[용 IDT 사용 설명서의 IDT용 AWS 계정 생성 및 구성을 참조하여 필요한 클라우드 리소스를 생성합니다](https://docs.aws.amazon.com/freertos/latest/userguide/lts-qual-steps.html#lts-cfg-aws-afr).

### 제출 준비
<a name="qualifying-your-device-preparation"></a>

1. **시작 안내서**를 작성하여 디바이스에서 MQTT 또는 OTA 데모 프로젝트를 실행합니다. 지침은 [디바이스용 FreeRTOS 시작 안내서 작성](https://docs.aws.amazon.com/freertos/latest/qualificationguide/afq-gsg.html)을 참조하세요.

1. *FreeRTOS 이식 안내서*의 [OTA 라이브러리 이식](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-ota.html)에 설명된 [AWS IoT 디바이스 부트로더에 대한 위협 모델링](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-ota.html#afr-bootloader)에 정의된 위험을 완화하는지 확인하는 위협 모델링 문서를 제공합니다. [APN Partner Central](https://partnercentral.awspartner.com)에 디바이스를 제출할 때 이 문서를 지원 자산으로 업로드해야 합니다.

1. 코드 다운로드를 위한 퍼블릭 리포지토리를 제공합니다. 기업 GitHub 리포지토리 링크를 제공하는 것이 좋습니다.

### 검증 제출
<a name="qualifying-your-device-submission"></a>
+ IDT 테스트 보고서.
+ AWS IoT Device Advisor 테스트 보고서.
+ 위협 모델링 문서.
+ 다운로드용 소스 코드가 있는 GitHub 리포지토리.

# 디바이스용 FreeRTOS 시작 안내서 작성
<a name="afq-gsg"></a>

FreeRTOS를 검증하려면 디바이스용 FreeRTOS 시작 안내서를 작성해야 합니다. 이 안내서에서는 FreeRTOS 디바이스용 애플리케이션을 개발하고 생성된 데모 애플리케이션을 디바이스에서 빌드, 실행 및 플래시하도록 하드웨어 및 개발 환경을 설정하는 과정을 안내합니다.

이 안내서는 공개 웹 사이트에서 고객에제 제공되어야 합니다. 가이드의 URL은 AWS 파트너 디바이스 카탈로그에 적격 보드를 나열하기 위한 요구 사항입니다.

안내서에는 다음 지침이 포함되어야 합니다.
+ 디바이스 하드웨어 설정
+ 개발 환경 설정
+ 데모 프로젝트 빌드 및 실행
+ 디버깅
+ Troubleshooting.

그 밖에도 다음과 같은 지침을 포함하는 것이 좋습니다.
+ MCU 데이터 시트에 대한 링크
+ Printed Circuit Board(PCB) 도식
+ 기본 이미지 부팅 콘솔 로그

**중요**  
운영 체제별로 지침이 다른 경우 Windows, Linux 및 macOS 운영 체제에 대한 지침을 제공해야 합니다.

보드 안내서를 작성할 때 [시작 안내서 템플릿](getting_started_template.md)을 따르세요. [FreeRTOS 사용 설명서](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-getting-started.html)에서 다른 검증된 보드에 대해 게시된 안내서의 예를 찾을 수 있습니다. 시작 안내서용 템플릿은 [APN Partner Central](https://partnercentral.awspartner.com/)에서 제공됩니다.

# 시작 안내서 템플릿
<a name="getting_started_template"></a>

보드에 대한 간단한 설명을 제공하는 개요를 작성합니다. 이 단원에서는 다음과 같은 의문 사항을 해결합니다.
+ 데모 애플리케이션을 실행하려면 어떤 하드웨어가 필요합니까?

  자세한 내용은 회사 웹 사이트의 페이지에 대한 링크를 제공하십시오.
+ 보드용 애플리케이션을 개발할 때 지원되는 IDE는 무엇입니까?

  IDE 사용 설명서 및 다운로드 페이지에 대한 링크를 제공하십시오.
+ 개발에 필요한 도구 체인 및 기타 소프트웨어 유틸리티는 무엇입니까?

  사용 설명서 및 다운로드 페이지에 대한 링크를 제공하십시오.
+ 보드에서 Partner Central를 시작하기 위한 다른 사전 조건이 있습니까?

  구매 페이지, 사용 설명서 및 다운로드 페이지에 대한 링크를 제공하십시오.

## 하드웨어 설정
<a name="template-setup-hardware"></a>

이 단원에서는 플랫폼 하드웨어 설정에 대한 지침을 제공합니다. 하드웨어 설정에 대한 사용 설명서나 기타 설명서에 대한 링크를 제공했는지 확인하십시오.

이러한 지침에는 다음 내용이 포함됩니다.
+ 점퍼 설정 구성
+ 드라이버 다운로드 및 설치.

  지원되는 드라이버 버전에 대한 다운로드 페이지 및 기타 설명서에 대한 링크를 제공하십시오.
+ 컴퓨터에 보드 연결
+ 하드웨어를 설정하는 데 필요한 기타 모든 단계

## 개발 환경 설정
<a name="template-setup-dev"></a>

이 단원에서는 플랫폼에서 지원하는 개발 환경 설정에 대한 지침을 제공합니다. 각각에 대한 다운로드 페이지, 사용 설명서 또는 기타 설명서에 대한 링크를 제공했는지 확인하십시오.

이러한 지침에는 다음 내용이 포함됩니다.
+ 직렬 연결 설정
+ 도구 체인 다운로드 및 설치
+ 지원되는 IDE 다운로드 및 설치
+ 디바이스용 애플리케이션을 개발하고 디버깅하는 데 필요한 기타 소프트웨어

## 데모 애플리케이션 빌드 및 실행
<a name="template-build-and-run-example"></a>

### 데모 애플리케이션 빌드
<a name="template-freertos-import-project"></a>

이 섹션에서는 지원되는 IDE 또는 지원되는 명령줄 도구로 제공된 데모 애플리케이션을 빌드하는 방법을 제공합니다.

### 데모 애플리케이션 프로젝트 실행
<a name="template-run-examples"></a>

이 섹션에서는 보드에서 FreeRTOS 데모 코드를 플래시하고 실행하는 방법을 제공합니다.

## 디버깅
<a name="template-debugging"></a>

이 단원에서는 온보드 또는 외부 디버거 사용에 대한 지침을 제공합니다.

## 문제 해결
<a name="template-troubleshooting"></a>

이 단원에서는 일반적인 문제 또는 잠재적인 문제를 해결하기 위한 문제 해결 팁을 제공합니다.

**시작 안내서** 템플릿은 [APN Partner Portal](https://partnercentral.awspartner.com/ContentFolderPartner?id=0690h000009VVzsAAG)에서 다운로드할 수 있습니다. 로그인할 보안 인증 정보가 필요합니다.

# FreeRTOS 매니페스트 파일 지침
<a name="afq-checklist-manifest-instr"></a>

가 사용 중인 버전과 라이브러리를 식별 AWS IoT Device Tester 하려면 매니페스트 파일이 필요합니다. 이 파일은 고객이 버전, 라이브러리 종속성 및 메타데이터를 설명하는 데 도움이 됩니다.

파일은 다음 시스템 요구 사항을 충족해야 합니다.
+ 파일의 이름은 `manifest.yml`여야 합니다.
+ 라이브러리 또는 패키지의 기본 폴더에 있어야 합니다.
+ YAML 형식이어야 하며 [YAML 1.2](https://yaml.org/spec/1.2/spec.html) 사양을 준수해야 합니다.

파라미터는 어떤 순서든 가능하지만 가독성을 최적화하려면 아래 나열된 순서대로 입력하는 것이 좋습니다. 고객이 패키지를 사용할 수 있도록 파일에 주석을 추가합니다.

**파일 경로**  
패키지 또는 라이브러리의 루트에 있습니다. 패키지당 매니페스트 파일은 하나뿐입니다. 가져온 종속성에는 자체 매니페스트 파일이 있을 수 있습니다.

**파라미터**    
**이름**  
패키지의 이름입니다. 모든 공백은 밑줄(\$1)로 바꿔야 합니다. 예를 들어 `My project name - 2020`는 `My_project_name_-_2020`으로 변경되어야 합니다.  
+ 유형: 문자열
+ required: true
+ minLength: 1
+ maxLength: 40  
**version**  
패키지의 버전입니다. 버전은 릴리스 버전 또는 버전 태그일 수 있습니다.  
+ 유형: 문자열
+ required: true
+ minLength: 1
+ maxLength: 30  
**description**  
사람이 읽을 수 있는 패키지 설명입니다. 이 설명은 패키지가 무엇이고 무엇을 제공하는지 명확하게 설명해야 합니다.  
+ 유형: 문자열
+ required: true
+ minLength: 30
+ maxLength: 255  
**종속성**  
사용자가 이 패키지를 성공적으로 빌드하는 데 필요하고 Git, Subversion 또는 Mercurial 소스 코드 호스트에서 검색할 수 있는 모든 1차 수준 종속성 목록입니다. Git, SVG 또는 hg를 통해 사용할 수 없는 종속성은 포함하지 마세요. 테스트, 문서 생성 또는 개발에 사용되는 종속성은 포함하지 마세요. 우수한 경험을 제공하려면 제한되거나 비공개인 종속성은 나열하지 않는 것이 좋습니다.  
+ type: array
+ required: false
+ minLength: 0  
**dependencies[].name**  
종속성의 패키지 이름입니다. 이 이름은 종속성의 `name` 파라미터에 있는 패키지 이름과 일치해야 합니다.  
+ 유형: 문자열
+ required: true
+ minLength: 1
+ maxLength: 40  
**dependencies[].version**  
종속성의 버전입니다. 버전은 릴리스 버전 또는 버전 태그일 수 있습니다. 패키지 자체에 종속성이 포함된 경우 버전은 종속성에 있는 매니페스트 파일과 일치해야 합니다.  
+ 유형: 문자열
+ required: true
+ minLength: 1
+ maxLength: 30  
**dependencies[].repository**  
종속성 소스 코드의 위치를 설명합니다.  
+ type: dictionary
+ required: true  
**dependencies[].repository.type**  
리포지토리 유형입니다.  
+ 유형: 문자열
+ required: true
+ enum: [git, svn, hg]  
**dependencies[].repository.url**  
리포지토리 위치의 URL입니다. 프로토콜 접두사가 포함된 전체 URL이어야 합니다(예: https://github.com/*ACCOUNT\$1NAME*/*REPO\$1NAME*).  
+ 유형: 문자열
+ required: true  
**dependencies[].repository.path**  
종속성의 프로젝트 작업 공간으로부터의 상대 경로입니다.  
+ 유형: 문자열
+ required: true  
**dependencies[].repository.branch**  
사용되는 종속성의 브랜치입니다. 패키지가 라이브러리의 릴리스 브랜치를 사용하는 경우 매니페스트의 길이를 최소화하기 위해 이 파라미터를 포함하지 마세요.  
+ 유형: 문자열
+ required: false  
**license**  
라이브러리의 SPDX 라이선스 식별자입니다. 전체 목록은 [https://spdx.org/licenses/](https://spdx.org/licenses/)를 참조하세요. 리포지토리의 루트에 포함된 `LICENSE` 파일(있는 경우)과 일치해야 합니다.  
+ 유형: 문자열
+ required: true

# Example manifest.yml
<a name="afq-checklist-manifest-example"></a>

```
---
# This is an example of the manifest file that is included at the root of all FreeRTOS GitHub repositories.

name : "Project_Name"
version: "202012.00-LTS"
description: "Clear concise description of this project."         

dependencies:
  - name: "dependency_1"
    version: "v1.0.0"
    repository:
      type: "git"
      url: "https://github.com/account/dependency_1"
      path: "/relative/path/from/project/root/to/dependency_1"
      branch: "1.x"
  - name: "dependency_2"
    version: "v1.0.1_LTS"
    repository:
      type: "git"
      url: "https://github.com/account/dependency_1"
      path: "/relative/path/from/project/root/to/dependency_2"

license: "MIT"
```