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.

[参考译文] AM5728:启动 DSP 时出现 L3自定义错误

Guru**** 2589280 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/588370/am5728-l3-custom-errors-when-starting-dsps

器件型号:AM5728
主题中讨论的其他器件:BQ40Z60

在 DSP1和 DSP2上加载相同的 DSP 固件映像时、我会看到不同的行为(除了资源表中的微小地址差异)。  

DSP1

每次启动 DSP1都会导致单个 L3自定义错误:

[298.448466]警告:CPU:0 PID:0 at linux-4.4.4.3.32+gitAUTOINC+adde2ca9f8-gadde2ca9f8/drivers/bus/omap_l3_oc.c:147 L3_interrupt_handler + 0x258/0x368 ()
[298.465839] 44000000.OCP:L3自定义错误:主控 DSP1_MDMA 目标 L4_PER1_P3 (读取):在功能访问期间以用户模式访问数据
[298.477976]链接的模块:virtio_rpmsg_bus cmemk (O) omap_remoteproc remote_ring virtio xhci_plat_hcd xhci_hcd usbcore USB_f_putg_f_rNDIS composite libu_dwc3 con_plat_hip_c_decc x_cu cu v_cu v_cu v_core_tbt gp_ip_decc
[298.516573] CPU:0 PID:0 Comm:swapper/0被污染:G C O 4.4.3.32-gadde2ca9f8 #1
[298.524783]硬件名称:通用 DRA74X (平展器件树)
[298.530902]回溯:
[298.533378][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
[298.540978] R6:20080193 R5:c0acbb68 R4:00000000 R3:00000000
[298.546703][ ](show_stack)从[ ](dump_stack+0x9C/b0)
[298.553964][ ](dump_stack)从[ ](warn_slESpath_common+0x8c/bb)
[298.562089] R6:c030c984 R5:00000009 R4:c0aadd40 R3:c0aac000
[298.567811] ](warn_slowpath_common)、来自[ ](WARN_RASPH_FMt+0x38/0x40)
[298.576544] R8:c07fc150 r7:00000002 R6:e0082164 R5:c07fbd2c R4:c07fb48
[298.583319][ ](warn_slowpath_fmt)、来自[ ](L3_INTERRUPT_Handler+0x258/0x368)
[298.592226] r3:de1fd000 r2:c07fbe48
[298.595831] R4:80080003
[298.598387][ ](L3_interrupt_handler)、来自[ ](handle_irq_event_perpu + 0x90/0x148)
[298.607731] R10:c0af5514 R9:de1f7540 R8:00000017 r7:00000000 R6:00000000 R5:de1f75a0
[298.615635] R4:de1fd500
[298.618190][ ](handle_irq_event_perpu)、来自[ ](handle_IRQ_EVENT_+0x40/0x64)
[298.627098] R10:c0aac000 R9:c0652a24 R8:de008000 r7:00000001 R6:c0ab3534 R5:de1f75a0
[298.635002] R4:de1f7540
[298.637558][ ](handle_irq_event)从[ ](handle_fasteoi_IRQ+0xc0/0x194)
[298.646118] R6:c0ab3534 R5:de1f75a0 R4:de1f7540 R3:00000000
[298.651839][ ](handle_fasteoi_IRQ)、来自[ ](generic_handle_IRQ+0x2C/0x3c)
[298.660484] r7:00000001 R6:00000000 R5:00000000 R4:c0aa84ac
[298.666204][ ](generic_handle_IRQ)、来自[ ](_handle_domain_IRQ+0x64/bb)
[298.674945][ ](_handle_domain_IRQ)、来自[ ](GIC_Handle_IRQ+0x40/0x7c)
[298.683329] R8:fa213000 r7:fa212000 r6:c0aadef0 r5:fa21200c r4:c0aae97c r3:c0aadef0
[298.691152][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
[298.69667]异常堆栈(0xc0aadef0至0xc0aadf38)
[298.703743] dee0:00000001 00000000 fe600000 00000000
[298.711955] df00:c0aae56c 00000000 c0aadf60 c0aae5b8 c0652a24 c0aac000 c0aadf4c
[298.720170] df20:c0aadf2c c0aadf40 c0027940 c0010568 60080013 ffffff
[298.726810] R8:c0aae5b8 r7:c0aadf24 r6:ffff r5:60080013 r4:c0010568 r3:c0027940
[298.734635][ ](arch_cpu_idle)从[ ](DEFAULT_IDLE_CALL + 0x28/0x34)
[298.742765][ ](DEFAULT_IDLE_CALL)从[ ](CPU_STARTUP_END+0x1fc/0x260)
[298.751423][ ](CPU_STARTUP_INPUK)、来自[ ](REST_INIT+0x90/0x94)
[298.759196] r7:00000000
[298.761755][ ](REST_INIT)从[ ](start_kernel+0x418/0x424)
[298.769268] R4:c0af8050 R3:c0aac000
[298.772877][ ](start_kernel)从[<80008090>](0x80008090)
[298.779432]--[结束线迹05ffeb39f58d2c69 ]--

DSP2:


启动 DSP2会导致无尽的 L3异常垃圾邮件-最终我们的电路板需要手动重启才能恢复。  

[237.443979]警告:CPU:0 PID:0 at linux-4.4.4.3.32+gitAUTOINC+adde2ca9f8-gadde2ca9f8/drivers/bus/omap_l3_oc.c:147 L3_interrupt_handler + 0x258/0x368 ()
[237.461351] 440000.OCP:L3自定义错误:主器件 DSP2_DMA 目标 L4_PER3_P3 (空闲):在功能访问期间以用户模式访问数据
[237.473400]链接的模块:rpmsg_proto virtio_rpmsg_bus cmemk (O) omap_remoteproc virtio_ring virtio xhci_plat_hzci_husbcore USB_f_ecci gp_f_rphy ip_rphy iptbe_cr iptp_c3 u_mc_dec_c2 mc2 mc2 mc2 mc2 mc2
[237.513064] CPU:0 PID:0 Comm:swapper/0被污染:G WC O 4.4.3.32-gadde2ca9f8 #1
[237.521279]硬件名称:通用 DRA74X (平展器件树)
[237.527398]背迹:
[237.529875][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
[237.537477] R6:20070193 R5:c0acbb68 R4:00000000 R3:00000000
[237.543203][ ](show_stack)从[ ](dump_stack+0x9C/b0)
[237.550463][ ](dump_stack)从[ ](warn_slESpath_common+0x8c/bb)
[237.558586] R6:c030c984 R5:00000009 R4:c0aadd40 R3:c0aac000
[237.56431][ ](warn_slowpath_common)、来自[ ](WARN_RASPH_FMt+0x38/0x40)
[237.573044] R8:c07fc18c r7:00000000 R6:e0080e64 R5:c07fbd2c R4:c07fb48
[237.579816][ ](warn_slowpath_fmt)、来自[ ](L3_INTERRUPT_Handler+0x258/0x368)
[237.588724] r3:de1fd000 r2:c07fbe48
[237.592330] R4:80080003
[237.594887][ ](L3_interrupt_handler)、来自[ ](handle_irq_event_perpu + 0x90/0x148)
[237.604232] R10:c0af5514 R9:de1f7540 R8:00000017 r7:00000000 R6:00000000 R5:de1f75a0
[237.612137] R4:de1fd500
[237.614696][ ](handle_irq_event_perpu)、来自[ ](handle_IRQ_EVENT_+0x40/0x64)
[237.623606] R10:c0aac000 R9:c0652a24 R8:de008000 r7:00000001 R6:c0ab3534 R5:de1f75a0
[237.631513] R4:de1f7540
[237.634072][ ](handle_irq_event)从[ ](handle_fasteoi_IRQ+0xc0/0x194)
[237.642630] R6:c0ab3534 R5:de1f75a0 R4:de1f7540 R3:00000000
[237.648356][ ](handle_fasteoi_IRQ)、来自[ ](generic_handle_IRQ+0x2C/0x3c)
[237.657001] r7:00000001 R6:00000000 R5:00000000 R4:c0aa84ac
[237.662724][ ](generic_handle_IRQ)、来自[ ](_handle_domain_IRQ+0x64/bb)
[237.671465][ ](_handle_domain_IRQ)、来自[ ](GIC_Handle_IRQ+0x40/0x7c)
[237.679849] R8:fa213000 r7:fa212000 r6:c0aadef0 r5:fa21200c r4:c0aae97c r3:c0aadef0
[237.687678][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
[237.695195]异常堆栈(0xc0aadef0至0xc0aadf38)
[237.700271] DEe0:00000001 00000000 fe600000 00000000
[237.708487] df00:c0aae56c 00000000 c0aadf60 c0aae5b8 c0652a24 c0aac000 c0aadf4c
[237.716703] df20:c0aadf2c c0aadf40 c0027940 c0010568 60070013 ffffff
[237.723346] R8:c0aae5b8 r7:c0aadf24 r6:ffff r5:60070013 r4:c0010568 r3:c0027940
[237.731178][ ](arch_cpu_idle)从[ ](DEFAULT_IDLE_CALL + 0x28/0x34)
[237.739310][ ](DEFAULT_IDLE_CALL)从[ ](CPU_STARTUP_END+0x1fc/0x260)
[237.747968][ ](CPU_STARTUP_INPUK)、来自[ ](REST_INIT+0x90/0x94)
[237.755741] r7:00000000
[237.758300][ ](REST_INIT)从[ ](start_kernel+0x418/0x424)
[237.765812] R4:c0af8050 R3:c0aac000
[237.769424][ ](start_kernel)从[<80008090>](0x80008090)

注:

  • 虽然 DSP1启动似乎只会导致单个 L3自定义错误、但 DSP2启动会导致 ARM 产生无穷的错误。
  • DSP1
    • DSP1的 L3自定义错误主控器/启动器似乎始终是 MDMA
    • DSP1的 L3自定义错误目标通常为 L4_PER1_P3或 L4_PER3_P3
  • DSP2
    • DSP2的 L3自定义错误主/启动器似乎始终是 DMA
    • DSP2的 L3自定义错误目标会有所不同(L4_PER#_P#、DMM_P#等)

为什么我在具有相同固件映像的 DSP1和 DSP2之间看到这种不同的行为?

此时、我们的固件映像未将 DMA 用于任何内容;为什么我看到主器件/启动器显示为 MDMA/DMA?

如果您能帮助您了解从何处开始、我们将不胜感激。

谢谢

处理器 SDK 03.02.00.05

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

    您能否分享您使用什么命令启动每个 DSP? 您还在使用预构建的 DSP 固件还是自定义的固件?

    此外、最好检查 DTS、因为根据我的理解、您使用的是定制板。 查看是否有任何其他模块使用专用于 DSP 的 DMA 通道。

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

    对此还有更多想法。

    当尝试访问被锁定区域上禁用的模块时、通常会出现此错误。 您应该检查此错误正是在哪个寄存器/地址访问中生成的、尤其是在使用自定义 DSP 二进制文件时。 它通常是一个错误的存储器地址、DSP 正在尝试访问该地址。

    请参阅以下讨论:
    e2e.ti.com/.../437761

    另一个非常奇怪的解决方案是、我看到自定义错误时、将 RTC 条目从 DTS 中完全删除。 我没有对此进行解释、但我看到它在 L3自定义错误的情况下有效。

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

    [引用用户="Yordan Kovachev"]
    您能否分享您使用什么命令启动每个 DSP? 您还在使用预构建的 DSP 固件还是自定义的固件?

    [/报价]

    我们利用绑定/取消绑定节点(/sys/bus/platform/drivers/omap-rproc)动态启动/停止 DSP (绑定、取消绑定)。 符号链接用于将 Remoteproc 驱动程序中嵌入的固件路径指向我们希望在该时刻加载的相应自定义 DSP 固件。

    [引用用户="Yordan Kovachev"]
    此外、最好检查 DTS、因为根据我的理解、您使用的是定制板。 查看是否有任何其他模块使用专用于 DSP 的 DMA 通道。  

    [/报价]

    我已附上我们基于 AM5728 EVM 文件的定制电路板器件树文件。 我们没有在 DSP 上运行的定制固件映像中明确使用 DMA。 您是否在我们的器件树文件中看到了使用 DMA 通道的情况?

    [引用用户="Yordan Kovachev"]

    当尝试访问被锁定区域上禁用的模块时、通常会出现此错误。 您应该检查此错误正是在哪个寄存器/地址访问中生成的、尤其是在使用自定义 DSP 二进制文件时。 它通常是一个错误的存储器地址、DSP 正在尝试访问该地址。  

    [/报价]

    在哪里可以找到正在访问的寄存器/地址? 我唯一的可见性是这些 L3自定义错误、这些错误会弹出到 ARM 端的内核日志中。 我们可以告诉 DSP 端继续运行。

    [引用用户="Yordan Kovachev"]

    另一个非常奇怪的解决方案是、我看到自定义错误时、将 RTC 条目从 DTS 中完全删除。 我没有对此进行解释、但我看到它在 L3自定义错误的情况下有效。  

    [/报价]

    我将从开始的5728 EVM 器件树文件中删除器件树文件中的转移 RTC 参考、但我不太乐观、因为我们在 DSP1和 DSP2上看到了不同的行为、所以这会产生影响。

    如果您在随附的器件树文件中看到任何其他错误/问题、我很想听到这些错误/问题。

    谢谢

    e2e.ti.com/.../am572x_2D00_custom_2D00_main.dts.txt

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

    很抱歉耽误你的回答、我是 ooo。

    [引用]我已附上基于 AM5728 EVM 文件的定制电路板器件树文件。 我们没有在 DSP 上运行的定制固件映像中明确使用 DMA。 您是否在我们的器件树文件中看到了使用 DMA 通道的任何情况?

    使用的 DMA 在 dra74.dtsi 和 dra7.dtsi 文件中定义、因此根据您使用的外设、我看不到任何冲突...

    [报价]在哪里可以找到正在访问的寄存器/地址? 我唯一的可见性是这些 L3自定义错误、这些错误会弹出到 ARM 端的内核日志中。 我们可以告诉 DSP 端继续运行。[/quot]
    这可以在 DSP 二进制文件中找到、如果您使用自定义 DSP 固件、如果您使用未经修改的预编译 DSP 二进制文件、那么您应该没有问题。

    我将尝试在我的板上重新创建它、然后返回给您。

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

    我收集了更多信息;我的正常启动流程如下所示:

    1. 新加电
    2. 加载 rproc/rpmsg 内核模块,自动加载 DSP1和 DSP2
    3. 20秒后停止 DSP1和 DSP2 (通过解除绑定节点)(为了节省功耗、我们可能在几分钟/小时后不需要 DSP)
    4. 随机数秒/分钟/小时通过...
    5. 启动 DSP1和 DSP2 (通过绑定节点)

    如果我跳过步骤3并保持 DSP 正常运行、则不再出现 DSP1 L3自定义错误、而只会出现单个 DSP2 L3自定义错误(与之相反、许多错误导致系统卡住并需要重启):

    [46.612683]警告:CPU:0 PID:0 at linux-4.4.4.41+gitAUTOINC+f9f6f0db2d-gf9f6f0db2d/drivers/bus/omap_l3_oc.c:147 L3_interrupt_handler + 0x258/0x368 ()
    [46.630053] 44000000.OCP:L3自定义错误:主器件 DSP2_DMA 目标 DMM_P2 (读取):在功能访问期间以用户模式访问数据
    [46.641753]中链接的模块:virtio_rpmsg_bus cmemk (O) omap_remoteproc remote_ring virtio xhci_plat_hcd xhci_hcd usbcore bet c3 usb_frNDIS libphy composite u_pdrve_core_pvp_gpvp_gpv6_gp_gpvp_ec_dx_ip_gp_c2 v2_dw_ip_gp_ip_ec_dec_decc
    [46.678714] CPU:0 PID:0 Comm:swapper/0被污染:G WC O 4.4.4.41-gf9f6f0db2d #1
    [46.686926]硬件名称:通用 DRA74X (平展器件树)
    [46.693045]回溯:
    [46.695520][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [46.703122] R6:20070193 R5:c0acdba8 R4:00000000 R3:00000000
    [46.708847][ ](show_stack)从[ ](dump_stack+0x9C/b0)
    [46.716106][ ](dump_stack)从[ ](warn_slESpath_common+0x8c/bb)
    [46.724229] R6:c030cd48 R5:00000009 R4:c0aafd40 R3:c0aae000
    [46.729947][ ](warn_slowpath_common)、来自[ ](WARN_RASPH_FMt+0x38/0x40)
    [46.738680] R8:c07fd3cc r7:00000002 R6:e0081364 R5:c07fcf6c R4:c07fd088
    [46.74545451][ ](warn_slowpath_fmt)、来自[ ](L3_INTERRUPT_Handler+0x258/0x368)
    [46.754360] r3:de1f8b00 r2:c07fd088
    [46.757964] R4:80080003
    [46.760521][ ](L3_interrupt_handler)、来自[ ](handle_irq_event_perpu + 0x90/0x148)
    [46.769865] R10:c0af7554 R9:de1f6540 R8:00000017 r7:00000000 R6:00000000 R5:de1f65a0
    [46.777768] R4:de206000
    [46.780324][ ](handle_irq_event_perpu)、来自[ ](handle_IRQ_EVENT_+0x40/0x64)
    [46.789231] R10:c0aae000 R9:c0653a2c R8:de008000 r7:00000001 R6:c0ab5574 R5:de1f65a0
    [46.797132] R4:de1f6540
    [46.799689][ ](handle_irq_event)从[ ](handle_fasteoi_IRQ+0xc0/0x194)
    [46.808247] R6:c0ab5574 R5:de1f65a0 R4:de1f6540 R3:00000000
    [46.813977][ ](handle_fasteoi_IRQ)、来自[ ](generic_handle_IRQ+0x2C/0x3c)
    [46.822625] r7:00000001 R6:00000000 R5:00000000 R4:c0aa94ac
    [46.828341][ ](generic_handle_IRQ)、来自[ ](_handle_domain_IRQ+0x64/bb)
    [46.837081][ ](_handle_domain_IRQ)、来自[ ](GIC_Handle_IRQ+0x40/0x7c)
    [46.845468] R8:fa213000 r7:fa212000 r6:c0aafef0 r5:fa21200c r4:c0ab0978 r3:c0aafef0
    [46.853295][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
    [46.860810]异常堆栈(0xc0aafef0至0xc0aaff38)
    [46.865885] fee0:00000001 00000000 fe600000 00000000
    [46.874100] ff00:c0ab056c 00000000 c0aaff60 c0ab05b8 c0653a2c c0aae000 c0aaff4c
    [46.882312] ff20:c0aaff2c c0aaff40 c00279a0 c0010568 60070013 ffff
    [46.888951] R8:c0ab05b8 r7:c0aaff24 R6:ffff R5:60070013 R4:c0010568 R3:c00279a0
    [46.896779][ ](arch_cpu_idle)从[ ](DEFAULT_IDLE_CALL + 0x28/0x34)
    [46.90499][ ](DEFAULT_IDLE_CALL)从[ ](CPU_STARTUP_END+0x1fc/0x260)
    [46.91366][ ](CPU_STARTUP_INPUK)、来自[ ](REST_INIT+0x90/0x94)
    [46.921340] r7:00000000
    [46.923899][ ](REST_INIT)从[ ](start_kernel+0x418/0x424)
    [46.931411] R4:c0afa050 r3:c0aae000
    [46.935020][ ](start_kernel)从[<80008090>](0x80008090)

    因此、很明显、远程处理器框架(或其他内容)不喜欢在启用 DSP 20秒后关闭 DSP 电源。 如前所述、这样做的原因是为了省电。 我必须尝试更长的延迟。

    我仍然想了解 DSP2在其产生的 L3自定义错误方面的行为与 DSP1不同。 例如、这种行为是否暗示 DSP 的配置不同? 它们是否具有不同的加电 DMA 配置?

    (另请注意、从器件树中删除 RTC 引用(具体在 dra7.dtsi 中)无效。)