本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排查 错误
每个测试套件执行都有一个唯一的执行 ID,用于在 results
目录中创建名为 results/
的文件夹。单个测试组日志位于 execution-id
results/
目录下。使用 f IDT or Fre RTOS e 控制台输出查找失败的测试用例的执行 ID、测试用例 ID 和测试组 ID,然后打开名为的测试用例的日志文件execution-id
/logsresults/
。此文件中的信息包括:execution-id
/logs/test_group_id
__test_case_id
.log
-
完整的 build 和 flash 命令输出。
-
测试执行输出。
-
免费RTOS控制台输出更详细IDT。
建议采用以下工作流程进行故障排除:
-
如果你看到错误”
user/role
未被授权访问此资源”,请确保按照中的指定配置权限创建和配置 AWS 账户。 -
阅读控制台输出以查找信息,例如执行UUID和当前正在执行的任务。
-
在
FRQ_Report.xml
文件中查找各个测试的错误语句。此目录包含每个测试组执行日志。 -
查看
/results/
下的日志文件。execution-id
/logs -
调查以下问题领域之一:
-
设备配置,例如
/configs/
文件夹中的JSON配置文件。 -
设备接口。检查日志以确定哪些接口失败。
-
设备工具。确保已正确安装和配置用于生成和刷写设备的工具链。
-
对于 FRQ 1.x.x,请确保有干净的克隆版免费RTOS源代码可用。免费RTOS版本根据免费RTOS版本进行标记。要克隆代码的特定版本,请使用以下命令。
git clone --branch
version-number
https://github.com/aws/amazon-freertos.git cd amazon-freertos git submodule update --checkout --init --recursive
-
对设备配置进行故障排除
使用 f IDT or Free 时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 错误代码
下表说明了 for Free IDT 生成的错误代码RTOS:
错误代码 | 错误代码名称 | 可能的根源 | 故障排除 |
---|---|---|---|
201 |
InvalidInputError |
|
确保在列出的文件中具有所需的字段,并且它们具有所需的格式。有关更多信息,请参阅 首次测试您的微控制器板。 |
202 |
ValidationError |
|
检查报告中的错误代码右侧的错误消息:
|
203 |
CopySourceCodeError |
无法将免费RTOS源代码复制到指定目录。 |
验证以下内容:
|
204 |
BuildSourceError |
无法编译免费RTOS源代码。 |
验证以下内容:
|
205 |
FlashOrRunTestError |
IDTFre RTOS e 无法在你的 Free RTOS 上闪存或运行 Free DUT。 |
验证 |
206 |
StartEchoServerError |
IDTFre RTOS e 无法启动回声服务器进行 WiFi 或安全套接字测试。 |
确保 |
调试配置文件解析错误
有时,JSON配置中的拼写错误可能会导致解析错误。大多数情况下,问题是由于在文件中省略了方括号、逗号或引号所致。JSONIDTfor Fre RTOS e 执行JSON验证并打印调试信息。它输出发生错误的行、行号以及语法错误的列号。这些信息应该足以帮助您修复错误,但是如果您仍然无法找到错误,则可以在Atom或Sublime等文本编辑器中手动进行验证IDE,也可以通过诸如此类的在线工具进行验证。JSONLint
调试测试结果解析错误
从 F ull PKCS11 _Core FreeRTOS-Libraries-Integration-Tests
在上述情况下,系统会输出奇怪的测试用例失败原因,例如,输出来自不相关设备输出的字符串。f IDT or Free RTOS 测试用例日志文件(包括 Free 在测试期间RTOS收到的所有串行输出IDT)可能显示以下内容:
<unrelated device output> TEST(Full_PKCS11_Capabilities, PKCS11_Capabilities)<unrelated device output> <unrelated device output> PASS
在上面的示例中,不相关的设备输出阻止 IDT Free 检测RTOS到测试结果,即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 版本的 Free,则需要RTOS进行以下完整性检查。
运行 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端口,请确保文件的 “” 和 “exhaustive
minimal
” 部分中列出的checksums.json
文件均未被修改。要使用SDK已配置的运行,请确认 “minimal
” 部分下的所有文件均未被修改。
如果您IDT使用运行SDK并修改了
目录中的某些文件,请确保在文件SDK中正确配置了您的freertos
userdata
文件。否则,完整性检查程序将验证
目录中的所有文件。freertos
调试 FullWiFi 测试组故障
如果您使用的是 FRQ 1.x.x,但在 FullWiFi 测试组中遇到故障,而 “AFQP_WiFiConnectMultipleAP
” 测试失败,则可能是因为两个接入点与运行的主机不在同一个子网中。IDT确保两个接入点与运行的主机位于同一个子网中IDT。
调试 “缺少必填参数” 错误
由于免费版中添加IDT了新功能RTOS,因此可能会对配置文件进行更改。使用旧配置文件可能会破坏您的配置。如果出现这种情况,results/
目录下的 execution-id
/logs
文件明确列出了所有缺少的参数。IDTfor Free 会RTOS验证您的JSON配置文件架构,以确保使用的是支持的最新版本。test_group_id
__test_case_id
.log
调试 “测试无法启动” 错误
在测试启动期间,您可能看到指示失败的错误。由于有多种可能的原因,请检查以下地方正确与否:
-
确保您包括在执行命令中的池名称实际存在。这会从您的
device.json
文件直接引用。 -
确保池中的设备具有正确的配置参数。
调试 “找不到测试结果的开始” 错误
IDT尝试解析被测设备输出的结果时,您可能会看到错误。这可能有多种原因,请检查以下方面是否正确:
-
确保被测试的设备与您的主机之间有稳定的连接。您可以查看日志文件中是否有显示这些错误的测试,以查看收到IDT的内容。
-
如果使用 FRQ 1.x.x,并且被测设备通过速度较慢的网络或其他接口连接,或者您在免费测试组日志中看不到 “----------------------STARTING TESTS-” 标志以及其他免费RTOSRTOS测试组输出,则可以尝试在用户数据配置中增加的值。
testStartDelayms
有关更多信息,请参阅 配置构建、刷写和测试设置。
调试 “测试失败:预期 __ 结果但看到 ___” 错误
在测试过程中,您可能看到指示测试失败的错误。该测试期望获得一定数量的结果,但在测试过程中没有看到。一些免费RTOS测试在IDT看到设备输出之前运行。如果您看到此错误,可以尝试在用户数据配置中增加 testStartDelayms
的值。有关更多信息,请参阅 配置构建、刷写和测试设置。
调试 “由于限制而未选择 ________” 错误 ConditionalTests
这意味着您正在与测试不兼容的设备池上运行测试。OTAE2E 测试可能会发生这种情况。例如,在运行OTADataplaneMQTT
测试组和device.json
配置文件中,您选择OTA了 “否” 或 “a OTADataPlaneProtocol
s” HTTP。选择运行的测试组必须与您选择的 device.json
的能力相匹配。
在设备输出监控期间调试IDT超时
IDT可能由于多种原因而超时。如果超时发生在测试的设备输出监控阶段,并且您可以在测试用例日志中IDT看到结果,则表示结果被错误地解析。IDT原因之一可能是测试结果中间有交错的日志消息。如果是这种情况,请参阅《免费RTOS移植指南》,了解有关如何设置UNITY日志的更多详细信息。
设备输出监控期间出现超时的另一个原因可能是设备在单个TLS测试用例失败后重新启动。然后,设备会运行刷写的映像并导致无限循环,这在日志中可以看到。如果发生这种情况,请确保您的设备在测试失败后不会重新启动。
调试 “未授权访问资源” 错误
你可能会看到错误”user/role
未被授权访问终端输出或test_manager.log
文件中的 “此资源” /results/
。要解决此问题,请将 execution-id
/logsAWS IoTDeviceTesterForFreeRTOSFullAccess
托管策略附加到您的测试用户。有关更多信息,请参阅 创建和配置 AWS 账户。
调试网络测试错误
对于基于网络的测试,IDT启动绑定到主机上非保留端口的回显服务器。如果由于超时 WiFi 或安全套接字测试中的连接不可用而遇到错误,请确保您的网络配置为允许流量流向1024-49151范围内的已配置端口。
安全套接字测试默认使用端口 33333 和 33334。默认情况下, WiFi 测试使用端口 33335。如果这三个端口正在使用或被防火墙或网络阻止,您可以选择使用 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测试用例失败,则可能是由于您的构建系统(例如 cmake)没有注意到对免费RTOS源代码IDT的更改,也没有构建更新的二进制文件。OTA这会OTA导致使用设备上当前相同的二进制文件执行,并且测试失败。要对OTA更新失败进行故障排除,请首先确保您使用的是支持的最新版本的构建系统。
OTA测试用例的PresignedUrlExpired
测试失败
此测试的一个先决条件是OTA更新时间应超过 60 秒,否则测试将失败。如果发生此情况,日志将包含以下错误消息:“Test takes less than 60 seconds (url expired time) to finish。Please reach out to us. (测试在 60 秒(URL 过期时间)内完成。请与我们联系。)”
调试设备接口和端口错误
本节包含有关IDT用于连接设备的设备接口的信息。
支持的平台
IDT支持 Linux、macOS 和 Windows。对于连接到其上的串行设备,所有三种平台都有不同的命名方案:
-
Linux:
/dev/tty*
-
macOS:
/dev/tty.*
或/dev/cu.*
-
视窗:COM*
要查看您的设备端口,请执行以下操作:
-
对于 Linux/macOS,打开终端并运行
ls /dev/tty*
。 -
对于 macOS,打开终端并运行
ls /dev/tty.*
或ls /dev/cu.*
。 -
对于 Windows,打开设备管理器并展开串行设备组。
要验证连接到端口的设备,请执行以下操作:
-
对于 Linux,请确保
udev
程序包已安装,然后运行udevadm info –name=
。此实用程序打印设备驱动程序信息,帮助您验证使用了正确的端口。PORT
-
对于 macOS,请打开 Launchpad 并搜索
System Information
。 -
对于 Windows,打开设备管理器并展开串行设备组。
设备接口
每台嵌入式设备都不相同,这意味着它们可以有一个或多个串行端口。设备在连接到计算机时有两个端口是常见情况:
-
一个数据端口,用于刷写设备。
-
一个读取端口,用于读取输出。
您必须在
device.json
文件中设置正确的读取端口。否则,从设备中读取输出可能会失败。在有多个端口时,请确保在您的
device.json
文件中使用设备的读取端口。例如,如果您插入 Espressif WRover 设备并且分配给它的两个端口是/dev/ttyUSB0
和/dev/ttyUSB1
,则在您的文件/dev/ttyUSB1
中使用。device.json
对于 Windows,请按照相同的逻辑操作。
读取设备数据
IDTfor Fre RTOS e 使用单独的设备构建和 Flash 工具来指定端口配置。如果您测试设备但未获得输出,请尝试以下默认设置:
-
波特率:115200
-
数据位:8
-
奇偶校验:无
-
停止位:1
-
流控制:无
这些设置由 for Fre IDT e 处理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)具有的 glibc
程序包版本与 Code Composer Studio 7.x 版本不兼容。建议您安装 Code Composer Studio 版本 8.2 或更高版本。
不兼容症状可能包括:
-
Free RTOS 无法构建或刷新到您的设备。
-
Code Composer Studio 安装程序可能会冻结。
-
在生成或刷写过程中,控制台未显示任何日志输出。
-
即使以 headless GUI 模式调用,构建命令也会尝试在模式下启动。
日志记录
IDTf RTOS or Free 日志放在一个位置。在根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
日志错误
每个测试套件执行都有一个唯一的执行 ID,用于创建名为 results/
的文件夹。单个测试用例日志位于 execution-id
results/
目录下。使用 for Fre RTOS e 控制台的输出来查找失败的测试用例的执行 ID、测试用例 ID 和测试组 ID。IDT然后使用此信息查找并打开名execution-id
/logsresults/
为的测试用例的日志文件。此文件中的信息包括完整的编译和 Flash 命令输出、测试执行输出以及更详细的 AWS IoT Device Tester 控制台输出。execution-id
/logs/test_group_id
__test_case_id
.log
S3 存储桶问题
如果你CTRL+C在运行时按下IDT,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 定价
资格报告生成策略
资格报告仅由支持最近两年内发布的免费RTOS版本的 AWS IoT Device Tester (IDT) 版本生成。如果您对支持策略有疑问,请联系 AWS Support