.. _jetson_pcie_err: ============================ Jetson Nano PCIe Buss Error ============================ .. warning:: 本文实践让我大跌眼镜,这个TF卡读写错误最终发现只是第三方转接器质量问题导致的不稳定...虽然我最初反复排查以为是Jetson Nano的硬件缺陷或者是内核bug,但是万万没有想到是一个小小的转接器印刷电路板质量问题。 意外发现Jetson Nano文件系统只读:: -bash: cannot create temp file for here-document: Read-only file system .. note:: 这个文件系统只读有可能是我通过dd复制TF卡,把原先旧卡中某些缺陷带入到新卡?我现在重新用新卡完整通过L4T重新安装,再继续观察。 检查系统日志中有PCIe错误: .. literalinclude:: jetson_pcie_err/dmesg_pcie_bus_error.txt :lines: 475-482 上述报错看起来和PCIe Bus相关:: [五 8月 20 08:40:47 2021] pcieport 0000:00:01.0: AER: Corrected error received: id=0010 [五 8月 20 08:40:47 2021] pcieport 0000:00:01.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, id=0008(Receiver ID) [五 8月 20 08:40:47 2021] pcieport 0000:00:01.0: device [10de:0fae] error status/mask=00000001/00002000 [五 8月 20 08:40:47 2021] pcieport 0000:00:01.0: [ 0] Receiver Error (First) - 检查处理器温度:: paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'\t' -t | sed 's/\(.\)..$/.\1°C/' 输出显示:: AO-therm 41.5°C CPU-therm 34.0°C GPU-therm 31.0°C PLL-therm 31.5°C PMIC-Die 100.0°C thermal-fan-est 33.0°C iwlwifi 39.0°C 上述 ``PCIe Bus Error: severity=Corrected, type=Physical Layer, id=0008(Receiver ID)`` 报错在 askubuntu `PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e5(Receiver ID) `_ 有一个解释: PCIe活跃状态电源管理(PCIe Active State Power Management)是将链路转换成低电能状态,在Jetson Nano的Ubuntu使用的内核版本较低,转换电能状态时会导致设备触发一些错误。 在内核启动参数中添加 ``pcie_aspm=off`` 可以使这种错误消息不再出现,但是这也会增加电能消耗,因为实际上主机这是关闭了节能功能。 修改启动参数 ============ - 检查当前内核运行参数:: cat /proc/cmdline 当前显示如下: .. literalinclude:: jetson_pcie_err/cmdline_origin 在Jetson Nano的配置文件 ``/boot/extlinux/extlinux.conf`` 可以看到: .. literalinclude:: jetson_pcie_err/extlinux.conf_origin 默认情况下,会从 CBoot 获取 bootargs ,所以这里可以替换和修改启动参数,所以我增加上 ``pcie_aspm=off`` : .. literalinclude:: jetson_pcie_err/extlinux.conf - 修改后,重启系统,再检查 ``cat /proc/cmdline`` 可以看到内核参数后添加了 ``pcie_aspm=off`` 参数: .. literalinclude:: jetson_pcie_err/cmdline 实践经验 ============ 从之前验证来看,使用 ``pcie_aspm=off`` 确实可以消除内核报错,并且印象中好像很少再出现文件系统只读问题。对比之下,我最近一次重装jetson系统,没有添加这个内核参数,则非常容易出现文件系统只读以及上述内核报错。 不过,我最终偶然发现,这个SD卡读写错误问题实际上是转接器的质量问题: 这真是出乎我的意料。实际上Jetson Nano并没有硬件问题,而是我购买的第三方装机外壳使用了一个TF卡转接器把原装的TF卡延伸到机壳外部方便装卸。然而这个转接卡电路板质量较差,我偶然拆机时发现电路印刷线路已经脱落翘起,导致TF卡安装后接触不良。 我尝试拆掉转接器,把TF卡直接插在Jetson Nano原装TF卡槽中,则之后使用就再也没有出现过TF卡读写错误。这真是一个非常令人哭笑不得的实践经验! 参考 ======= - `PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e5(Receiver ID) `_ - `NVIDIA U-Boot Customization `_ - `Where can I change default cmdline/cbootargs and other questions regarding jetson nano boot process. `_