

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 主板资格认证
<a name="freertos-qualification"></a>

## 先决条件
<a name="prerequistes-qualification"></a>

硬件要求：

运行 FreeRTOS 库的基于 MCU 的开发板必须 Amazon IoT 有：
+ 以太网、Wi-Fi 或蜂窝连接功能

软件要求：

《*FreeRTOS [移植指南》中的移植流程图](https://docs.amazonaws.cn/freertos/latest/portingguide/porting-chart.html)确定了任何基于 MC* U 的开发板所需的 FreeRTOS Amazon IoT 库。最小子集为：
+ FreeRTOS 内核
+ coreMQTT
+ Amazon IoT Over-The-Air 更新 (OTA)

测试要求：
+ 使用 Amazon IoT Device Tester for FreeRTOS 对照[定义](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests)的 GitHub 测试存储库验证 FreeRTOS 库 APIs 所需的特定硬件平台的实现。请参阅[使用 (IDT) 验证移植 Amazon IoT Device Tester 的 FreeRTOS 库](#qualifying-your-device-idt)。
+  Amazon IoT Core 使用设备顾问验证互操作性。请参阅[使用 (IDT) 验证移植 Amazon IoT Device Tester 的 FreeRTOS 库](#qualifying-your-device-idt)的步骤 4。

## 建议
<a name="recommendations-qualification"></a>

为提高安全性，我们建议执行以下操作。
+ 为防止离线或临时入侵成为永久性入侵，请将密钥和凭证存储在可抵御物理攻击的硬件信任根中，例如[安全元件](https://wikipedia.org/wiki/Secure_element)或安全飞地。
+ 为了降低可能导致未经授权的数据泄露的网络[欺骗](https://wikipedia.org/wiki/Spoofing_attack)和[man-in-the-middle](https://wikipedia.org/wiki/Man-in-the-middle_attack)攻击的风险，请为实现 DHCP、DNS、TCP/IP 和 [TLS 等协议的 FreeRTOS 库使用真随机数生成器 (TRNG)](https://wikipedia.org/wiki/Hardware_random_number_generator)。有关更多信息，请参阅[使用确定性随机位生成器生成随机数的推荐](https://csrc.nist.gov/publications/detail/sp/800-90a/rev-1/final) (NIST SP 800-90A) 中的第 50 页。

## 资格认证步骤
<a name="qualifying-your-device"></a>

### 使用 (IDT) 验证移植 Amazon IoT Device Tester 的 FreeRTOS 库
<a name="qualifying-your-device-idt"></a>

1. 将 FreeRTOS 库移植到主板上。有关说明，请参阅[《FreeRTOS 移植指南》](https://docs.amazonaws.cn/freertos/latest/portingguide/)。

1. 创建一个测试项目，然后从 [FreerTOS-Libraries-Integration-Te](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests) GitHub sts 存储库中移植所需的测试。调用测试运行器任务[ 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)。
**注意**  
IDT 使用 `manifest.yml` 来查找针对特定 FreeRTOS 库版本进行完整性检查所需的依赖项，并配置测试项目以构建、刷新和运行测试二进制文件。  
IDT 不强制要求特定的项目结构，而是使用 `manifest.yml` 文件中包含的参考路径。

1. <a name="qualifying-your-device-da"></a>使用设备顾问验证 Amazon IoT 互操作性。

   1. 创建一个与上述测试中使用的 OTA 相同的组件的演示项目，包括 FreeRTOS 库、移植、集成任务。

      为了获得资格，该演示应用程序必须具备以下功能：
      + 执行 MQTT 发布和订阅主题。
      + 执行 OTA 更新。
      + 创建支持 OTA 更新的引导加载程序。使用自己的引导加载程序或 [MCUBoot](https://freertos.org/mcuboot/). 参见 [Labs-freertos-plus-](https://github.com/FreeRTOS/Lab-Project-FreeRTOS-MCUBoot)。MCUBoot
**注意**  
[FreeRTO GitHub S](https://github.com/FreeRTOS/FreeRTOS) 存储库中预先配置了示例，演示了各个任务。还有一个集成的 [coreMQTT 代理演示](https://github.com/FreeRTOS/coreMQTT-Agent-Demos)，其中包含了 coreMQTT 和 OTA 任务。另请参阅 FreeRTOS 精选 IoT 集成：[资格认证项目示例](examples-qualification.md)。

   1. Amazon IoT Device Tester 将针对[Amazon IoT 设备顾问](https://docs.amazonaws.cn/iot/latest/developerguide/device-advisor.html)运行您的演示。资格认证需要以下 Device Advisor 测试用例。  
**测试用例**    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/freertos/latest/qualificationguide/freertos-qualification.html)

1. 从中运行测试 Amazon IoT Device Tester 并生成测试报告。
   + IDT 会配置测试，然后自动构建并刷写您的主板。要启用此功能，您必须将 IDT 配置为在 `userdata.json` 文件中为您的设备运行构建和刷写命令。请参阅[《适用于 FreeRTOS 的 IDT 用户指南》](https://docs.amazonaws.cn/freertos/latest/userguide/device-tester-for-freertos-ug.html)中的[配置构建、刷写和测试设置](https://docs.amazonaws.cn/freertos/latest/userguide/lts-qual-steps.html#lts-cfg-dt-ud)。
   + 在 `device.json` 文件中提供设备支持的功能，例如连接类型、加密算法、密钥配置方法，以便 IDT 确定要运行的适用测试。请参阅[《适用于 FreeRTOS 的 IDT 用户指南》](https://docs.amazonaws.cn/freertos/latest/userguide/device-tester-for-freertos-ug.html)中的[在 IDT 中为 FreeRTOS 创建设备池](https://docs.amazonaws.cn/freertos/latest/userguide/lts-qual-steps.html#lts-cfg-dt-dp)。
   + 为 IDT 创建和配置您的 Amazon 帐户，以创建所需的云资源。请参阅 [IDT for [FreeRTOS 用户指南中的创建和配置 IDT Amazon](https://docs.amazonaws.cn/freertos/latest/userguide/device-tester-for-freertos-ug.html) 帐户以创建所需的云资源](https://docs.amazonaws.cn/freertos/latest/userguide/lts-qual-steps.html#lts-cfg-aws-afr)。

### 提交准备
<a name="qualifying-your-device-preparation"></a>

1. 编写**入门指南**，以便在您的设备上运行 MQTT 或 OTA 演示项目。请参阅[利用 FreeRTOS 指南为设备创建入门指南](https://docs.amazonaws.cn/freertos/latest/qualificationguide/afq-gsg.html)的说明。

1. 提供威胁建模文档，验证您是否降低了 *FreeRTOS* 移植指南中[移植 OTA 库](https://docs.amazonaws.cn/freertos/latest/portingguide/afr-porting-ota.html)中所述的[Amazon IoT 设备引导加载程序威胁建模](https://docs.amazonaws.cn/freertos/latest/portingguide/afr-porting-ota.html#afr-bootloader)中定义的风险。在 [APN 合作伙伴中心](https://partnercentral.awspartner.com)提交设备时，必须将此文档作为支持资产上传。

1. 为代码下载提供公共存储库。我们建议您提供公司 GitHub 存储库链接。

### 资格提交
<a name="qualifying-your-device-submission"></a>
+ IDT 测试报告。
+ Amazon IoT 设备顾问测试报告。
+ 威胁建模文档。
+ GitHub 包含下载源代码的存储库。