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.

[参考译文] Linux/AM4376:内核错误

Guru**** 2609895 points
Other Parts Discussed in Thread: AM4372, AM4376

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/642105/linux-am4376-kernel-errors

器件型号:AM4376
主题中讨论的其他器件:AM4372

工具/软件:Linux

你(们)好

我在内核启动日志中遇到了一些错误、这些错误不会导致恐慌或任何问题、但令人厌烦、我不知道此问题的含义或原因。

我还删除了 RTC 表单 am4372.dtsi、正如本论坛中其他人建议的那样。

OMAP-L3_NOC 440000.OCP:L3调试错误:目标8 mod0 (不可清除)
OMAP-L3_NOC 440000.OCP:L3应用程序错误:目标8 mod0 (不可清除)

什么是目标8 (TRM 互连中没有提到这一点)、以及什么可能导致此错误?

此致、

Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、

    您是否使用 AM4376 TI 电路板或定制电路板? 您是否使用最新版本的 AM4376 TI PSDK (v4.01)?

    请共享完整的引导日志。

    请参阅以下指针、它们讨论了这种错误:

    training.ti.com/.../Kernel-Debug-Series-Part6-understand-kernel-oops.pdf - 第20页

    e2e.ti.com/.../437761
    e2e.ti.com/.../475372

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 ,Pavel

    这是一个带有"禁用 RTC 功能的简化电源排序"的定制板。

    我阅读了您提到的这些文章。

    以下是完整日志: e2e.ti.com/.../4786.Boot-Log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Robert Noe"]这是一个定制板,带有“禁用 RTC 功能时简化电源定序”。[/quot]

    我建议您在 AM437x TI EVM 上运行 PSDK 4.01的预构建内核、并检查是否会出现相同的警告。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我无法运行预构建的映像、因为该板没有 I2C EEPROM 和 PMIC 以及与 EVM 不同的其他东西(如日志中所示)。 因此它根本不起作用。
    我只想知道导致错误的原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Robert Noe">我无法运行预构建的映像、因为该板没有 I2C EEPROM 和 PMIC 以及与 EVM 不同的其他内容(如您在日志中所见)。 因此、它根本不起作用。[/quot]

    再次检查我之前的帖子。 我建议在 TI EVM 上运行预构建的映像、而不是在您的定制板上运行。 如果也出现相同的警告、则此警告不是特定于您的定制板。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robert、

    我在 AM437x-GP 1.1 EVM 上测试了最新的 AM437x PSDK v4.01 (内核4.9.41)预构建映像。 我在那里看不到这个问题。 请找到附加完整的启动日志。

    e2e.ti.com/.../am437x_5F00_PSDK4_5F00_1_5F00_log

    您能否使用最新的 AM437x PSDK4.01 (内核4.9.41)(Linaro GCC 6.2-2016.11)检查您的定制板?

    我还有 cpuidle 消息、而不是您收到的 L3错误消息:

    DMA:预分配256 KiB 池、用于原子相干分配
    空闲:使用调速器梯
    空闲:使用调速器菜单
    OMAP-GPIO 44e07000.GPIO:找不到节点/OCP@44000000/L4_wkup@44c0000000/SCM@210000/引脚多路复用@800/GPIO0_Pins 的 pctldev、延迟探针

    您说您的电源管理与 AM437x TI EVM 不同。 您的定制板是否支持 CPUIdle? 您可以测试从 Linux 内核禁用 CPUIdle 的情况:

    processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.4)

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Pavel

    我认为它是针对我的电路板或内核配置的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Pavel、

    我在内核中禁用了 CPUIdle。
    我正在使用最新的 RT Kernel v4.01、Kernel 4.9.41 (位于日志中)。
    我认为这可能是由于电路板中的"RTC 功能被禁用"。

    很抱歉、我没有正确读取您之前的帖子。

    此致、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Robert Noe"]我在内核中禁用了 CPUIdle。

    结果如何? 在这种情况下(CPUIdle 已禁用)、您能否提供启动日志?

    [引用 user="Robert Noe"]我正在使用最新的 RT 内核 v4.01、内核4.9.41 (它在日志中)。

    您是否使用 ti-processor-sdk-linux-AM437X-EVM-04.01.00.06-linux/board-support/linux-4.9.41

    还是 ti-processor-sdk-linux-rt-AM437X-EVM-04.01.00.06-linux/board-support/linux-rt-4.9.41

    在这两种情况下、都应使用 Linaro GCC 6.2.1 2016.11硬浮点工具链、而在引导日志中、我看到 Linaro GCC 6.3-2017.05。

    [引用 USER="Robert Noe"]我认为这可能是由于电路板中的'RTC 功能被禁用'造成的。

    您能否分享禁用 RTC 时所执行的确切步骤?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我检查了之前上传的日志中 CPUIdle 是否被禁用。

    我使用的是 Linux-RT 版本。 GCC 版本是次要版本吗?

    对于 RTC、通过将 RTC_KALDO_ENn 连接到 VDDS_RTC (1.8V 电源)来禁用内部 LDO。 CAP_VDD_RTC 连接到 VDD_CORE (1.1V)。 RTC_PWRONRSTn 和 RTC_WAKEUP 接地。

    在软件中、我从 AM4372.dtsi 中删除了 RTC。

    我已查看数据表和 AM437x 原理图检查清单

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robert、

    [报价用户="Robert Noe"]我检查了在我之前上传的日志中禁用 CPUIdle 的情况。

    是的、我确认在 Linux-RT 版本中默认禁用 CPUIdle。

    [引用 user="Robert Noe">我使用的是 Linux-RT 版本。 GCC 版本是次要版本吗?[/quot]

    我怀疑您使用的是随 PSDK Linux-RT 4.01提供的 Linux-RT 内核。 从您共享的日志中、似乎您从某些未知和未定义的 GIT 存储库中提取了该内核:

    Linux 版本4.9.41(****@******)(Gcc 版本6.3.1 20170404( Linaro GCC 6.3-2017.05))#1抢占 RT ********

    在引导随 PSDK Linux-RT 4.01提供的 Linux-RT 内核时、我具有以下内容:

    Linux 版本4.9.41-rt23-gc038d21a22 (gtbldadm@ubuu-16)(gcc 版本6.2.1 20161016 (Linaro GCC 6.2-2016.11))#1优先于 RT

    您能否再次检查您是否正在使用 PSDK Linux-RT 4.01附带的 Linux-RT 内核?

    TI-processor-sdk-linux-rt-AM437X-EVM-04.01.00.06/board-support/linux-rt-4.9.41+gitAUTOINC+c038d21a22-gc038d21a22

    下面、我将使用 Linux-RT 内核附加完整的启动日志:

    e2e.ti.com/.../am437x_5F00_PSDK_5F00_4_5F00_1_5F00_RT_5F00_log

     

    [引用 user="Robert Noe"]在软件中,我从 AM4372.dtsi 中删除了 RTC。[/quot]

    您的主要 DTS 文件如何? 如何处理 RTC?

    在 AM437x GP EVM 上、描述了 RTC、但默认情况下在 am4372.dtsi 文件中禁用、并在 AM437X-gp-evm.dts 文件中启用。

    请附上您的 am4372.dtsi 文件和主 DTS 文件(即适用于 TI EVM 的 AM437X-gp-evm.dts)、我将检查您删除 RTC 的确切方式。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Robert Noe"]我只想知道导致错误的原因。

    我在第一篇帖子中提供的演示文稿中提供了此信息。 该错误可能是由以下原因引起的:

    由于访问时钟门控模块:
    –DTS 更改不当
    –驱动程序错误,主要在运行时 PM 中

    或由于访问 地址错误:
    – 硬件设计不正确。 例如、DDR 大小、RTC 等
    –驱动程序错误

    您可以查看源:drivers/bus/omap_l3_occ.c 驱动程序有详细的注释、说明如何检测 L3_NOC 中的错误。

    RTC 硬件故障可能会导致 L3互连错误报告、请仔细检查硬件中有关 RTC 的信息。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    -我刚刚从 am4372.dtsi 中删除了 RTC,因为如果我没有内核,将会产生恐慌。
    RTC 硬件设计类似于数据表和原理图检查清单、因此不会出现问题。
    - ompa_L3_NOC 没有目标8的相关信息。

    为什么 TRM 中没有关于 L3互连寄存器的内容? 该驱动程序适用于 TRM 中未提及的一些寄存器。

    我认为禁用 RTC 会产生 TI 不告诉我们的后果。
    您应该在禁用 RTC 的情况下检查内核。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Robert Noe"-我刚刚从 am4372.dtsi 中删除了 RTC、因为如果我没有内核、会导致恐慌。

    在我之前的一篇文章中、我已经解释过仅从 am4372.dtsi 文件中删除 RTC 是不够的。 您还应从主 DTS 文件(即 AM437X-gp-evm.dts)中删除 RTC 节点和时钟。

    linux-rt-4.9.41/arch/arm/boot/dts/am4372.dtsi

    Linux-RT-4.9.41/arch/arm/boot/dts/AM437X-gp-evm.dts

    同时确保从用于构建 RT 内核的.config 文件中删除 RTC 驱动程序/模块(即 RTC-OMAP.c)。 当您用作基本 tisdk_AM437X-EVM-RT_defconfig 时、请通过 menuconfig 删除 RTC 内核支持。 如果您使用"config 片段"、请从 ti_config_frages/baseport.cfg 文件中删除 RTC 支持。

    同时确保未在以下文件中注册 RTC L4 hwmod:

    linux-rt-4.9.41/arch/arm/mach-omap2/omap_hwmod_43xx_data.c

    linux-rt-4.9.41/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_interconnect_data.c

    [引用用户="Robert Noe"]

    - ompa_L3_NOC 没有目标8的相关信息。

    为什么 TRM 中没有关于 L3互连寄存器的内容? 该驱动程序适用于 TRM 中未提及的一些寄存器。

    [/报价]

    L3/L4互连寄存器和完整文档不公开提供、因为它们是第三方 IP。

    [引用 user="Robert Noe"]您应该检查禁用 RTC 的内核。

    您是说 AM437x RTC 已完全禁用、对吧? 我将对此进行检查(TI EVM 上已完全禁用 RTC)、但首先需要您对以下文件进行修改:

    - AM437X-gp-evm.dts (主 DTS 文件,其中包含 am4372.dtsi)

    - omap_hwmod_43xx_data.c

    还请提供 您的.config (用于构建 RT 内核的配置文件)以及您为构建 RT 内核所执行的确切步骤

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Pavel

    -从.config 文件中删除 RTC 驱动程序,而不是对其进行编译。

    - RTC 将从以下文件中删除:

    omap_hwmod_33xx_43xx_ipblock_data.c
    omap_hwmod_33xx_43xx_interconnect_data.c
    omap_hwmod_43xx_data.c

    您提到的所有文件都附加在 rar 文件中。

    此致、
    Robert

    e2e.ti.com/.../am4376.rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert、

    您是否完全禁用 AM437x RTC 模块?

    还请提供您的.config (用于构建 RT 内核的配置文件)以及您为构建 RT 内核所执行的确切步骤。

    最后修改后、请提供完整的启动控制台日志。 还请将一些 printk()语句放在以下文件中,这样我们就可以跟踪此错误是否与 hwmods 有关:

    linux-rt-4.9.41/arch/arm/mach-omap2/io.c

    void __init am43xx_init_early (void)

    OMAP2_SET_global_tap (AM335X_CLASS、AM33XX_L4_WK_IO_address (AM33XX_TAP_BASE));
    OMAP2_control_base_init ();
    omap3xxx_check_revision();
    am33xx_check_features ();
    OMAP2_prcm_base_init ();
    am43xx_powerdomains_init();
    am43xx_clockdomains_init();
    printk ("start of am43xx_hwmod_init\n");
    am43xx_hwmod_init();
    printk ("am43xx_hwmod_init\n"end of am43xx_hwmod_init\n");
    printk ("omap_hwmod_init_postsetup\n"的开始);
    omap_hwmod_init_postsetup();
    printk ("omap_hwmod_init_postsetup\n"的末尾);
    omap_l2_cache_init ();
    omap_clk_soc_init = am43xx_dt_clk_init;


    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Pavel

    -是的、我完全禁用了 RTC 模块。

    ——我做了你问的事情。 打印页在错误消息之前打印。

    [0.000000] AM437x ES1.2 (NEON)
    [0.000000] am43xx_hwmod_init 的开头
    [0.000000] am43xx_hwmod_init 结束
    [0.000000] OMAP-hwmod_init_postsetup 的开始
    [0.000000] OMAP-hwmod_init_postsetup 结束
    [0.000000]在区域顺序和移动分组中构建了1个区域列表。 总页数:129920
    [0.000000]内核命令行:console=ttyS0、115200n8
    [0.000000] PID 哈希表条目:2048 (顺序:1、8192字节)
    [0.000000]条目高速缓存散列表条目:65536 (顺序:6、262144字节)
    [0.000000] inode 高速缓存散列表条目:32768 (顺序:5、131072字节)
    [0.000000]内存:442580K/524288K 可用(5120K 内核代码、231K rwdata、1064K rodata、3072K init、284K BSS、 16172K 保留、65536K CMA 保留、0K HIGHMEM)

    -我使用以下命令编译内核并创建 uImage:

    使 arch=arm cross_compile=arm-linux-gnueabihf- AM437x-gp-evm.dtb
    使 arch=arm cross_compile=arm-linux-gnueabihf- zImage
    Cat arch/arm/boot/dts/AM437X-gp-evm.dTB >> arch/arm/boot/zImage
    mkimage -a arm -O Linux -T 内核-C none -a 80008000 -e 80008000 -n linux-4.9.41 -d arch/arm/boot/zImage arch/arm/boot/uImage

    -我还附加了.config 文件

    此致、
    Robert

    e2e.ti.com/.../3782_2E00_.config.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Robert Noe"]

    使 arch=arm cross_compile=arm-linux-gnueabihf- AM437x-gp-evm.dtb
    使 arch=arm cross_compile=arm-linux-gnueabihf- zImage
    Cat arch/arm/boot/dts/AM437X-gp-evm.dTB >> arch/arm/boot/zImage
    mkimage -a arm -O Linux -T 内核-C none -a 80008000 -e 80008000 -n linux-4.9.41 -d arch/arm/boot/zImage arch/arm/boot/uImage

    [/报价]

    这不符合以下 wiki 上提供的官方指南:

    要确定某些配置问题、请尝试以下流程:

    -使用 Linaro GCC 6.2-2016.11

    -使用 AM437x PSDK-RT v4.01中的 Linux-RT-4.9.41

    -使用 tisdk_AM437X-EVM-RT_defconfig、然后使用 menuconfig (或 xconfig)自定义内核配置以删除 RTC 支持

    -构建单个 DTB 文件,不要将其嵌入内核映像中

    请尝试执行这些步骤、并使用这些步骤的控制台日志和引导过程的控制台日志进行报告。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    -我将尝试使用 GCC 6.2-2016.11
    -正如我在使用 TI SDK 之前所说的、您为什么说我使用的是不同的版本?! 可能是因为我更改了额外的版本。
    我这样做了,我认为它不会改变任何东西。
    -DTB 应嵌入内核,因为我需要一个映像,而不是一个内核和一个 DTB。 所以这不是问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robert、

    这就是我们目前所拥有的:

    -此问题可能是由定制板的硬件故障引起的。 您声称您的定制板在硬件方面绝对正确(RTC、DDR 等)

    -此问题可能是由 DTS 更改不当或驱动程序错误引起的-您已更改 DTS 文件,但驱动程序又如何? 您是否对驱动程序进行了任何更改?

    此外、在您的.config 文件中、我看到您有"CONFIG_RTC_LIB=y"、请同时删除它。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    非常感谢您的支持。

    -我测试了所有内容(DDR、NAND、eMMC、...),迄今为止我没有遇到任何问题。
    -我没有更改我附加的日志中的任何驱动程序。 但之后、我更改了 CAN 驱动器。
    -我将删除 CONFIG_RTC_LIB。

    此致、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert、

    尝试删除 CONFIG_RTC_LIB 并报告状态。 如果问题仍然出现、请提供完整的启动日志(而不仅仅是其中的一部分)、可能会有更多错误/警告消息导致根本原因。

    此外、我看到您已从 DTS 中删除了 PRU 和 SGX。 是否删除 DTS 文件中的任何其他内容(除 RTC、SGX、PRU 之外)? 您能否在 DTS 文件中添加返回 SGX 和 PRU 进行测试、从而确定问题是否与 RTC 有关。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我删除了该配置、但未更改任何内容。
    我提供了完整的内核日志。 U-Boot 不在这里、因为我认为它不重要。 我使用 tftp 引导进行开发。
    我删除了 PRU 和 SGX、因为我考虑了其中一个导致的 L3错误。 因此、在删除这些值之前存在错误。

    此致、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robert、

    总之、这就是我们目前所拥有的:
    -您使用的是 AM437x 定制板,与 AM437x GP EVM 相比,唯一的硬件变化是 RTC。 在 AM437x 定制板上、RTC 被禁用
    -您已验证 AM437x 定制板是否可以正常工作、没有硬件问题、RTC、DDR3等问题
    -您使用的是 AM437x TI PSDK RT v4.01 (齿链和内核)
    -您只需修改 AM437x DTS 文件和内核即可删除 RTC 支持,无需再修改

    我将与 PSDK 团队一起检查、希望他们提供更多有关这些 L3警告的提示。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Pavel

    团队的任何新闻?

    此致、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert、

    因为已经有一段时间了、我只想检查您是否仍有此问题、或者您是否有任何新信息? 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 RonB:

    我仍然看到 L3错误、但我正在使用的所有外设和内核模块都可以正常工作。 因此、我决定暂时忽略该误差。

    此致、
    Robert