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/AM5728:使用 devmem2读取 DSP L2 SRAM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/650170/linux-am5728-read-dsp-l2-sram-with-devmem2

器件型号:AM5728

工具/软件:Linux

您好!  

我正在尝试使用 devmem2软件工具读取 DSP1 L2 SRAM (addr:0x4080 0000)。  

我收到消息:

总线错误(转储内核)

Colin

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

    DSP 是否处于活动状态? 如何配置 L2 SRAM?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    读数  

    CM_DSP1_CLKSTCTRL - 位于地址 0x4A00 5400
    CM_DSP1_DSP1_CLKCTRL -位于地址 0x4A005420

    我看到时钟门控和模块禁用。  

    是否有方法从 Linux 启用 DSP1? 或者我是否需要修改 dtsi 并重新编译?

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

    您是否已经有正在运行的程序?  如果是这样、则可能是内核发生故障。  您可以通过 Linux 强制内核保持活动状态。

    首先、确定哪一个内核是您的 DSP。  (此示例来自 AM571x、因此只有一个 DSP。)

    root@am57xx-EVM:~# cat /sys/kernel/debug/remoteproc/remoteproc /名称

    5882000.IPU
    5502000.IPU
    40800000.DSP
    4b234000.pru0
    4b238000.pru1
    4b2b4000.pru0
    4b2b8000.pru1.

    root@am57xx-EVM:~# ls /sys/kernel/debug/remoteproc
    remoteproc0 remoteproc1 remoteproc2   remoteproc3 remoteproc4 remoteproc5 remoteproc6

    root@am57xx-EVM:~# cat /sys/kernel/debug/remoteproc/remoteproc2/state

    暂停(1)

    root@am57xx-EVM:/sys/bus/platform/devices/40800000.dsp/power/control 上的~# echo

    root@am57xx-EVM:~# cat /sys/kernel/debug/remoteproc/remoteproc2/state

    运行(2)

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

    它是 AM5728 EVM。  

    我在 remoteproc2中没有“state”或“power”文件/目录。  

    我使用压缩的 img for windows 创建了我的 SD 卡、并按照 wiki 上的说明进行操作。  

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

    您使用的是 Linux 还是 Linux-RT?  是否可以运行"uname -a "并发布输出?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Linux am57xx-EVM 4.9.28-geed43d1050 #2 SMP 抢占 Wed 2017年6月28日 armv71 GNU/Linux
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    让我们再试一次... 我认为我们需要的一切都在/sys/class/remoteproc 目录中。

    您能否运行以下命令:

    CD /sys/class/remoteproc

    CAT remoteproc*/固件

    CAT remoteproc*/状态

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CAT remoteproc*/固件
    dra7-ipu1-fw.xem4.
    dra7-ipu1-fw.xem4.
    dra7-dsp1-fw.xe66
    dra7-dsp2-fw.xe66
    am57xx-pru1_0-fw
    am57xx-pru1_1-fw
    am57xx-pru2_0-fw
    am57xx-pru2_1-fw

    CAT remoteproc*/状态
    暂停
    暂停
    暂停
    暂停
    离线
    离线
    离线
    离线
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的 DSP 都处于"暂停"状态。 这就是您无法读取它们的原因。 尝试以下操作:

    回显打开> remoteproc2/电源/控制
    回显打开> remoteproc3/电源/控制
    CAT remoteproc*/状态

    它们应该处于"正在运行"状态、然后我相信您的 devmem2命令应该成功。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在向电源/控制器发出导通命令后、它们将保持暂停状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否"固定"控制字段以确保更新"卡住"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、很抱歉、我这么做了、控制字段显示为"on"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    加载了什么 DSP 代码? 使用 SDK 随附的示例、它的行为是否更好?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它是在库存.img 中打包的内容。

    OpenCL-monitor
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我更改了 symlink 以指向 dspdce 固件、然后加载了绑定。

    然后我运行 copycodectest 123、它具有正确的输出;它成功运行。 但是、在我执行绑定之后、在我运行 copycodectest 之后、我仍然处于挂起的 DSP 状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、有一整组具有类似结构和名称的目录。 我在这里有点困惑! 显然、这需要添加到"AM57xx 上的 Linux IPC"页面... 让我再尝试一下。 我只是在自己的板上尝试了它、并确认它可以正常工作、因此这次我很确定它应该适合您。

    Echo on >/sys/bus/platform/devices/40800000.dsp/power/control
    CAT /sys/class/remoteproc/remoteproc */州

    这最终应该会显示您"正在运行"。 很抱歉让你这么多"跑"来到达这里...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你 Brad! devmem2就是这么做的。

    仅需确认一下、如果我在 dtsi 中启用 DSP、我还可以将 DSP 状态设置为 on?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒! 我现在要在我刚才提到的 wiki 页面中添加一个部分、以便更轻松地实现这一点。 感谢您耐心等待、因为我找到了合适的目录!

    您在 dtsi 中提到了哪一个具体选项? 您可以将其放入一个简短的 shell 脚本中以使其变得简单。 例如,您可能需要一个 shell 脚本,它可以完成解除绑定、获取新固件、绑定、更改电源管理的完整过程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、它可以使用细化、但下面是我创建的一个段:

    processors.wiki.ti.com/.../Linux_IPC_on_AM57xx

    如果您有任何快速反馈或建议、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它看起来很好、很简单。 但是、我仍然感到困惑的是平台驱动程序如何执行电源管理、而不必在>/sys/class...上显式执行回显

    我可以运行 DSPDCE 固件、但 DSP 状态会显示为"已显示"。 主机执行 copycodectest 时、平台驱动程序是否将 DSP 置于"运行"状态? 然后在执行后又重新进入"待处理"状态? 如果是、如何操作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    DSP 从中断(消息、定时器节拍等)等源唤醒。 当它回到空闲线程中时、它返回到睡眠/自动空闲状态。