移植网络传输接口 - FreeRTOS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

移植网络传输接口

集成 TLS 库

对于传输层安全性 (TLS) 身份验证,请使用您的首选 TLS 堆栈。我们建议使用 Mbed TLS,因为它已通过 FreeRTOS 库进行了测试。你可以在这个GitHub存储库中找到一个例子。

无论您的设备使用哪种 TLS 实现,您都必须使用 TCP/IP 堆栈实现 TLS 堆栈的底层传输挂钩。它们必须支持支持的 TLS 密码套件Amazon IoT

移植网络传输接口库

必须实现网络传输接口才能使用 CoreMQTT 和 Co reHTTP。网络传输接口包含在单个网络连接上发送和接收数据所需的函数指针和上下文数据。有关更多详细信息,请参阅传输接口。FreeRTOS 提供了一组内置的网络传输接口测试来验证这些实现。以下部分将指导您如何设置项目以运行这些测试。

先决条件

要移植此测试,您需要:

  • 一个带有构建系统的项目,该系统可以使用经过验证的 FreeRTOS 内核端口构建 FreeRTOS。

  • 网络驱动程序的工作实现。

移植

  • Freertos-Libraries-Intestraries- Integraries-Test作为子模块 子模块在项目中的放置位置并不重要,只要它可以被构建即可。

  • config_template/test_execution_config_template.h和复制config_template/test_param_config_template.h到生成路径中的项目位置,然后将其重命名为test_execution_config.htest_param_config.h

  • 将相关文件包含到编译系统中。如果使用CMakesrc/transport_interface_tests.cmake则使用qualification_test.cmake和来包含相关文件。

  • 在适当的项目地点实现以下功能:

    • network connect function:签名由NetworkConnectFunc中定义src/common/network_connection.h。此函数接受指向网络上下文的指针、指向主机信息的指针和指向网络凭据的指针。它使用提供的网络凭据与主机信息中指定的服务器建立连接。

    • network disconnect function:签名由NetworkDisconnectFunc中定义src/common/network_connection.h。此函数接收指向网络上下文的指针。它断开存储在网络环境中的先前建立的连接。

    • setupTransportInterfaceTestParam():这是在中定义的src/transport_interface/transport_interface_tests.h。实现的名称和签名必须与中定义的完全相同transport_interface_tests.h。此函数接收指向TransportInterfaceTestParam结构的指针。它将填充传输接口测试使用的TransportInterfaceTestParam结构中的字段。

  • 实现 UNITY_OUTPUT_CHAR,这样测试输出日志就不会与设备日志交错。

  • runQualificationTest()从应用程序中调用。在呼叫之前,必须正确初始化设备硬件并连接网络。

凭证管理(设备上生成的密钥)

FORCE_GENERATE_NEW_KEY_PAI R 中的值设置test_param_config.h为 1 时,设备应用程序会生成新的设备端key pair 并输出公钥。在与回显服务器建立 TLS 连接时,设备应用程序使用 ECHO_SERVER_ROOT_CA 和 TRANSPORT_CLI ENT_CERTICATE 作为回声服务器根 CA 和客户端证书。IDT 在资格认证运行期间设置这些参数。

凭证管理(导入密钥)

与 echo 服务器建立 TLS 连接时,设备应用程序使用 ECHO_SERVER _ROOT_ CA、TRANSPORT _CLIENT_CERTICAT E 和 TRANSPORT_CLIENT_KEYtest_param_config.h 作为回声服务器根 CA、客户端证书和客户端私钥。IDT 在资格认证运行期间设置这些参数。

测试

本节介绍如何通过资格测试在本地测试传输接口。或者,也可以使用 IDT 自动执行。有关详细信息 Amazon IoT Device Tester,请参阅 FreeRTO S 用户指南中的 FreeRTOS

启用测试

打开 TRtest_execution_config.h ANSPORT _INTERFACE_TEST_ENABLE D 并将其定义为 1

设置 echo 服务器进行测试

本地测试需要可从运行测试的设备访问的 echo 服务器。如果传输接口实现支持 TLS,则回显服务器必须支持 TLS。如果你还没有,那么 FreerTOS-Libraries-Integration- Tests GitHub 存储库有一个 echo 服务器实现。

配置项目以供测试

在中test_param_config.h,将 ECHO_SERVER_ENDPOINTECHO_SERVER_POR T 更新到上一步中的端点和服务器设置。

设置凭据(设备上生成的密钥)

  • ECHO_SERVER_ROOT_CA 设置为 echo 服务器的服务器证书。

  • FORCE_GENERATE_NEW_KEY_PAI R 设置为 1 以生成key pair 并获取公钥。

  • 生成密钥后,将 FORCE_GENERATE_NEW_KEY_PAI R 设置回 0。

  • 使用公钥和服务器密钥和证书生成客户端证书。

  • 将 TR ANSPORT_CLIENT_C ERTICATE 设置为生成的客户端

设置凭据(导入密钥)

  • ECHO_SERVER_ROOT_CA 设置为 echo 服务器的服务器证书。

  • 将 TR ANSPORT_CLIENT_C ERTICATE 设置为预生成的客户端证书

  • 将 TR ANSPORT_CLIENT_PR IVATE_KEY 设置为预生成的客户端私钥。

生成并刷新应用程序

使用您选择的工具链构建和刷新应用程序。调runQualificationTest()用时,传输接口测试将运行。测试结果输出到串行端口。

注意

要使设备正式获得 FreeRTOS 资格,您必须使用 OTA PAL 和 OTA E2E 测试组验证设备移植的源代码Amazon IoT Device Tester。按照 FreeRTOS 用户指南中 FreeRTOS 的使用Amazon IoT Device Tester中的说明Amazon IoT Device Tester进行端口验证设置。要测试特定库的端口,必须在Amazon IoT Device Testerconfigs文件夹device.json的文件中启用正确的测试组。