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:A15上的Linux写入USB后DSP1卡住

Guru**** 2539500 points
Other Parts Discussed in Thread: AM5728, SYSBIOS, TPIC2810

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1100405/am5728-dsp1-stuck-after-linux-on-a15-is-writing-to-usb

部件号:AM5728
“Thread: SysBIOSTPIC2810”中讨论的其它部件

您好,

我使用的是Linux处理器-SDK AM5728的05.02 .00.10 和RTOS处理器-SDK 4.03 .00.05。
Linux运行在两个A15内核上。 没有涉及任何Jailhouse或其他任何内容。
它通过eMMC启动。

Linux启动后,我使用JTAG进行连接,启用DSP1时钟并将项目加载到从Linux中分割出来的内存区域(0x9900万)。

一切正常。

将文件从eMMC上的Linux文件系统复制到密钥磁盘时出现问题。

DSP冻结。

有时我可以暂停DSP1,我发现它卡在ti_SysBIOS_family_c64p_HWi0() ti_SysBIOS_family_c64p_HWI_int0()中

有时我会得到以下内核转储

root@am57xx-evm:/home/MC#[ 1078.886728 ]------- [剪切在这里]-----------
[ 1078.891380 PID]警告:CPU: 0 PID: 28 at /home/build/projects/tisdk/build/arago-tmp-external_arm-toolchain/work shared/am57xx-EVM-eVM/kernel-source/drivers/bus/omap_l3_NOC.c:147 L3_interrupt_handl+0x32c/0x378
[ DMA] 4400万.OCP:L3自定义错误:主1078.909621 DSP1_MDMA目标DMM_P1 (读取):在功能访问期间用户模式下的数据访问
[ 1078.921406 ]链接模块: can_2 can vnetdevice r8152 ecatmc ti_cpsw cpsw_common cts mc_gp_timer d芬 奇_mDIO ec_master sd_mod us_storage xhci_plat_hcd xhci_hcdusbcore dwc3 udc_core udc_核心us_cwcv3u_cv gPIO_tpic2810 ov2659 v4l2_fwnode omap_des des_generic crypto_engine omap_crypto overlay omap_remoteproc virtio_rpmsg_bus rpmsg_core remotesch proc_fq_codel jailhouse (O)
[ 1078.984288 PID] CPU: 0 PID: 28 Comm:IRQ/23-L3-APP-I dorted: G O 4.14 .79-rt47-g0d66f4b982 #1.
[ DRA74X]硬件名称:通用1078.984290 (平展设备树)
[ 1078.984292 ]回溯追踪:
[ 1078.984302 ][<c010c298>](dump_backtrace)来自[<c010c600>](show_stack+0x18/0x1c)
[ 1078.984307 R7] r7:c041ab24 r6:6000.0013万 r5:0万 r4:c0c54fe0
[ 1078.984320 ][<c010c5e8>](显示堆栈),来自[<c0764df8>](转储堆栈+0x90/0xa4)
[ 1078.984331 ][<c0764d68>](dump_stack)来自[<c012b168>](__warn+0xe8/0x104)
[ 1078.984335 R7] r7:c041ab24 r6:0.0009万 r5:0万 r4:d4a31e40
[ 1078.984341 ][<c012b080>](__warn)来自[<c012ad94>](warn_lowpath_fmt+0x40/0x48)
[ 1078.984345 ] r9:0.0001万 r8:d4a1b3d0 r7:c099a890 r6:0.0002万 r5:c099a460 r4:c099a504
[ 1078.984352 ][<c012ad58>](warn_lowpath_fmt)来自[<c041ab24>](L3_interrupT_handl+0x32c/0x378)
[ 1078.984354 ] r3:d4a1b240 r2:c099a504
[ 1078.984356 ] R4:8008.0003万
[ 1078.984363 ][<c041a7f8>](L3_INTERRUCK_handler)来自[<c1.816万c>](irq_forced_thread_fn+0x28/0x7c)
[ 1078.984367 ] r10:c0.1815万e4 r9:0万 r8:0.0001万 r7:d4a1b764 r6:ffffe000 r5:d49e2100
[ 1078.984368 ] R4:d4a1b740
[ 1078.984373 ][<c0.1815万e4>](irq_forced_thread_fn)来自[<c18.197万>](irq_thread+0x140/0x1fc)
[ 1078.984376 ] r7:d4a1b764 r6:ffffffe000 r5:d4a1b740 r4:d49e2100
[ 1078.984382 ][<c18.183万>](irq_thread),来自[<c14.9328万>](kthread+0x164/0x16c)
[ 1078.984386 ] r10:d4871b20 r9:c18.183万 r8:d4a1b740 r7:d4a3万 r6:0万 r5:d4a1b780
[ 1078.984387 ] R4:d49e3080
[ 1078.984395 ][<c0.1491万c4>](kthread),来自[<c0107c70>](ret_fin_fork + 0x14/0x24)
[ 1078.984398 ] R10:0万 R9:0万 R8:0万 r7:0万 R6:0万 R5:c0.1491万c4
[ 1078.984400 ] R4:d4a1b780
[ 1078.984402 ]----[结束跟踪0万00000002]----</s>0.0002万

我甚至不能暂停和检查带有JTAG的DSP1内核,出现以下消息:
C66xx_DSP1:停止目标CPU时出现问题:(错误-1060 @ 0x0)设备未响应请求。 重置设备,然后重试此操作...

这种行为的原因可能是什么?

非常感谢,

NIR。

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

    为了进一步分析问题,我进行了一项测试:

    我正在使用JTAG将DSP .out文件加载到内存中,然后该程序保留在_c_int00的第一行中。

    我正在打开内存浏览器,地址是_cint00的开头:

    然后,在不释放DSP以运行的情况下,我将Linux命令行上的文件从eMMC复制到USB闪存盘。

    复印完成后,我将再次检查内存:

    因此,在复制过程中,DSP内存区域0x9900万 - 0x9D0万被覆盖。

    我试图在_c_int00地址0x99bcc820上放置一个来自A15核心端的硬件断点,但没有被捕获。 我猜是因为复制事务实际上是由DMA执行的。

    最后,问题是如何阻止Linux使用DSP1内存区域0x9900万 - 0x9D0万?

    我尝试在DTS中禁用此保留内存区域,但我得到了内核转储,系统被卡住。

    非常感谢,

    NIR。