工具与软件:
尊敬的 Expert:
我的客户正在使用 AM335 RT-Linux-4.14.79、系统会在某个时间崩溃。 客户在系统崩溃时保存日志。 您能帮助浏览日志并向我们提供一些建议吗?
系统此时崩溃。

BR、
Biao
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
尊敬的 Expert:
我的客户正在使用 AM335 RT-Linux-4.14.79、系统会在某个时间崩溃。 客户在系统崩溃时保存日志。 您能帮助浏览日志并向我们提供一些建议吗?
系统此时崩溃。

BR、
Biao
尊敬的 TI 专家:
今天下午、我分析了 dmseg.log 和 messages.log。
首先、当我们查看 messages.log 时、我们可以知道系统崩溃并从 UTC 2024年8月15日凌晨1:31:30开始重新启动、如下所示。

然后、我们可以在 大约 UTC 8月15日01:31:30的时间在 dmseg.log 中找到相应的日志 2024年发布的示例。您可以看到、下面显示了许多日志 C_CAN_PLATFORM 设置 BTR 和 A 未处理故障:在处非线性获取(0x1018)时的外部中止 0xb6f90000 问题发生在 8月 15日 01:31:30 UTC 时间之前 2024。因此、我们认为这些信息与系统挂起和重新启动有关。
[22680.388666] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [22707.635149] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [22734.929720] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [22750.498764] Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6f90000 [22750.506804] pgd = edc08000 [22750.509635] [b6f90000] *pgd=b8287831 [22762.189387] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [22789.439849] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [22816.690282] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [22843.940136] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [22871.182779] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [22898.432157] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [22925.679634] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [22952.926924] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [22980.216998] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23007.474397] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23034.760643] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23062.013741] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23089.261795] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23116.504756] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23143.749109] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23171.000656] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23198.251710] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23225.547682] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23252.805864] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23280.047072] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23307.289898] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23334.535751] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23361.784525] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23389.031152] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23416.282239] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23443.532766] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23470.783823] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23498.036633] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23525.279906] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23552.528568] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23579.779225] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23607.027779] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23634.275070] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23661.515421] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23688.755723] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23716.024111] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23743.288513] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23770.541497] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23797.784523] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23825.034692] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23852.284806] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23879.532097] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23906.777194] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23934.023378] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [23961.356192] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [23988.641807] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24015.890338] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24043.135904] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24070.436582] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24097.711979] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24124.954738] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24152.198851] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24179.479663] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24206.733346] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24233.979360] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24261.226994] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24288.474237] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24315.721808] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24342.975131] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24370.222133] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24397.468603] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24424.716132] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24451.957429] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24479.203762] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24506.523433] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24533.789024] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24561.039736] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24588.291503] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24615.537327] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24642.783846] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24670.045386] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24697.329801] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24724.641936] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24751.900518] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24779.149213] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24806.398440] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24833.655005] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24860.899210] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24888.149630] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24915.400002] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24942.691127] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [24969.956086] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [24997.199650] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [25024.454901] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [25051.758139] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [25079.020489] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 [25106.273476] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 [25133.518246] c_can_platform 481cc000.can can0: setting BTR=1c1d BRPE=0000 ############ log : Thu Aug 15 01:31:30 UTC 2024 ############################# [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.14.79-rt47-g28d73230da (root@kong) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #41 Tue Jan 2 16:14:46 +14 2024 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
所用 CAN 客户的相应引脚为 DCAN0_RX 和 DCAN0_TX。
我可以知道、根据我们获得的这些信息、您是否有一些线索?
谢谢!
Kevin
尊敬的 TI 专家:
我想您可能想知道为什么在设置 CAN 波特率时有如此多的日志打印设置。 原因是、客户具有不同波特率的不同 CAN 外设、当未检测到 CAN 器件时、其应用编码将持续更改波特率以适应不同的 CAN 外设。
从 dmesg.log 中可以看到、一共出现了3次 未处理故障:在处非线性获取(0x1018)时的外部中止 0xb6f90000 和每次出现时、CAN 正在改变其波特率。 您认为这与问题有某种关系吗?
谢谢!
Kevin
您好!
下面的日志提取中是询问的中止消息。 但是、看起来这不是完整的转储、如果这是内核严重或警告、则寄存器和调用栈中有重要信息。 这里缺少该信息。 看起来 systemd 也在处理数据。 在我们看到完整的内核转储之前、不确认这实际上是导致中止的 CAN 驱动程序。
Aug 14 15:37:20 localhost user.info kernel: [21944.541106] c_can_platform 481cc000.can can0: setting BTR=1c0a BRPE=0001 Aug 14 15:37:40 localhost user.alert kernel: [21964.655983] Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6f0ef10 Aug 14 15:37:40 localhost user.alert kernel: [21964.664024] pgd = ede04000 Aug 14 15:37:40 localhost user.alert kernel: [21964.666854] [b6f0ef10] *pgd=b853a831
需要注意的另一点是该内核版本并非由 TI 发布、超过了支持窗口2。 这可能会限制 TI 为该问题提供支持的能力。
此致、
Schuyler
尊敬的 Schuyler:
感谢您的答复!
客户在内部检查了他们使用的是 AM335 RT-Linux-4.14.79内核、该内核于2018年从 SDK5.2下载。
您能否告诉我们、为什么 TI 实际上不提供它?
对于 dmesg 日志、客户使用 dmesg -w >> log 命令 要转储日志、您是否知道这是用于获取完整日志以供我们审阅的正确命令?
谢谢!
Kevin
您好、Bin、
从日志中可以看出、这至少与 CAN 波特率的变化有关。 那么、我在 google 上搜索以下信息。

这意味着只有当接口停止时才能更改波特率。 我咨询了客户此时的设置、他们使用了下面的代码。
IP 链路设置%s 关闭;IP 链路设置%s 类型可将%d 三次采样设置为打开;IP 链路设置%s 打开
客户在设置接口后似乎也遵循了该理论更改波特率。
是否可能 IP 链路设置%s 关闭 不会完全停止接口、且波特率变化导致出现此问题?
对于这一点、您有什么建议或评论吗?
谢谢!
Kevin
尊敬的 Kevin Kevin、Biao:
查看日志、您知道为什么每行打印两次吗? 最后两行给人一种2个中止序列的印象。 这与上面的日志不同。
客户是否可以将上述代码与我添加的附加内容一起放入其自己的脚本中? 我想看到运行此脚本的控制台日志、我想看看是否返回了任何错误。 我还建议删除"三路采样开启"、DCAN IP 不支持此功能、应返回错误。
IP 链路集%s 关闭;IP -d -s 链路显示%s;IP 链路集%s 类型可比特率%d 三重采样打开;IP 链路集%s 启动;IP -d -s 链路显示%s
我要求通过更改确认比特率。
对于每一比特率更改成功的流量、是否进行了确认?
此致、
Schuyler
尊敬的 Schuyler:
感谢您的建议!
客户有两种不同类型的具有不同波特率的 CAN 器件、每种器件都有正负极、因此打印显示两次。
当客户尝试添加您建议的命令时、它们符合下面的错误信息。
IP 链路集%s 关闭;IP -d -s 链路显示%s;IP 链路集%s 类型可比特率%d 三重采样打开;IP 链路集%s 启动;IP -d -s 链路显示%s

您是说他们需要将此代码添加到应用程序代码中、然后在问题发生时查看结果吗?
谢谢!
Kevin
尊敬的 Kevin:
出现此错误的一个原因可能是 ip link show 命令的接口名后缺少分号。
列出的命令查找 shell 或命令行 IP 实用程序命令。 我建议通过命令行脚本执行此操作、以便此 shell 而不是应用程序过程中显示错误消息。
很抱歉、我无法遵循积极和消极的含义。 我想总结一下命令的顺序:
-链路断开;链路显示;设置比特率(1);链路接通;链路显示;
-链路断开;链路显示;设置比特率(2);链路接通;链路显示;
-在两个不同的行之间来回切换
可以很好地总结一下命令之间的比特率变化了多长时间吗?
另请注意、上的三路采样应该会导致误差。
此致、
Schuyler
尊敬的 Schuyler:
感谢您的答复、客户目前正在尝试此方法、一旦出现问题、将告知您结果。
至于为什么打印显示两次是客户仍然有 dmesg -w 输出运行,他们的 UART 也将自动输出,所以完全显示两次。 对于他们之前的日志、他们没有添加 UART 打印、而只是使用 dmesg -w、因此只添加一次。
至于正电压和负电压、从 AM335x 端看、这只是 GPIO 引脚电压电平开关。
比特率变化之间的时间为12秒。
谢谢!
Kevin
尊敬的 Schuyler:
按照您的建议附加了内核配置文件。
e2e.ti.com/.../Gree_5F00_kernel_5F00_config
谢谢!
Kevin
尊敬的 Schuyler:
请参阅我从2018年发布的 AM335 SDK5.2下载的内核配置文件。
e2e.ti.com/.../tisdk_5F00_am335x_2D00_evm_5F00_defconfig
谢谢!
Kevin
尊敬的 Schuyler:
感谢您的支持!
客户提到他们没有使用介质、蓝牙、因此他们删除了这些配置文件。 如果他们使用缺省的 TI 内核配置、他们也许需要大幅修改他们的编码来适应他们的电路板。 (我不确定这是否正确、也许您可以对此进行评论)。
我的另一项建议是保持所有 coredump 配置和调试配置与 TI 内核配置相同、我不确定这是否足够了。 因为您知道客户需要1个月的时间来重现此问题、所以等待的成本很高。 我们可能需要确保下次发生中止问题时将出现回溯日志。
客户希望可以提供以下两点建议。
1:使用哪些内核配置来启用/控制反向跟踪日志?
2:我们能否在一个非常简单的中止编码示例中提供帮助、以便客户可以轻松地满足中止问题、从而测试跟踪日志是否已正确启用。 这样我们就不需要再等待1个月来进行验证。
非常感谢、
Kevin
嗨、Schuyler、
感谢您的建议、客户现在同意测试我们的默认配置文件。 正如我们离线讨论过的、它们具有不同的 CAN 模块加载过程、因此只需在配置文件中进行最小的更改、以尽可能保持其余部分与默认部分相同。
客户提供了下面的新配置文件、您能否对其进行审核?
非常感谢、
Kevin
尊敬的 Schuyler:
客户还集成了您在下面建议的配置、并重新运行测试12天、这次测试卡滞、未打印任何信息。 (即使没有中止打印)
https://git.sr.ht/%7Ebryanb/ti-buildroot/tree/canon/item/board/ti/configs/kernel_debug.config
我建议客户启用看门狗、现在他们开始使用看门狗进行测试。
同时、您能否帮我们思考是否还有其他方法可以进一步尝试?
客户可以修改其硬件以使用 JTAG 端口、如果我们说服客户这样做、您认为在系统卡住时、我们是否有机会使用 CCS 进行调试? 因为 AM335x 仅有1个 A8内核。
谢谢!
Kevin