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.

[参考译文] AM62A7:尝试运行 rpmsg_char_zerocopy 示例。 DSP 将会崩溃。

Guru**** 2487425 points
Other Parts Discussed in Thread: AM62A7

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1439359/am62a7-trying-to-run-rpmsg_char_zerocopy-example-dsp-is-crashing

器件型号:AM62A7

工具与软件:

您好!

我们正在尝试运行 AM62A7的 MCU_PLUS 用户指南的 AM62A7多核部分中提到的 rpmsg_zero_copy 示例:

https://git.ti.com/cgit/rpmsg/rpmsg_char_zerocopy/

我们将遵循 Git 区域中的 README.md。  我们能够毫无问题地执行 hello world 和 echo 测试。

我们的客户有兴趣将 DSP 用于特定应用、在可能使用 C7x 实现预期 AI 功能的通用硬件的单独应用中将一些滤波/FFT 转移到 C7x DSP。

我们使用以下命令行:

 rpmsg_char_zerocopy -r 8 -s 10 -e "linux,cma"

我们已更新 DSP 应用程序中的 example.syscfg 以添加 CMA 保留区域:

mmu_armv812.$name = "CONFIG_SHARED";
mmu_armv812.vAddr = 0xC0000000;
mmu_armv812.pAddr = 0xC0000000;
mmu_armv812.size = 0x1000000;
mmu_armv812.attribute = "MAIR4";

Linux 在这里得到并停止

Created endpt device rpmsg-char-8-1317, fd = 4 port = 1025
Exchanging 1 messages with rpmsg device on rproc id 8 ...

dma-buf address: 0xc00f4000
Buffer @0xffff891f7000 (size 10240) filled with pattern 0xaaaa5555
Sending buffer data #0
Address: 0xc00f4000
Size: 10240
Pattern: 0xaaaa5555
Receiving buffer data #0:

当我们转储跟踪缓冲区时、DSP 崩溃(似乎会不断循环出错、因此我们会遗漏开始)。  但调试程序显示它在 Cache_inv()操作中使 buffer_validate()崩溃。

cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
]
[c75ss0] 174.365843s : 0x000000000000000a [7] 0x0000000000000000 [7]
[c75ss0] 174.365361s :
[c75ss0] 174.365553s : Exception at 0x0000000000000000
[c75ss0] 174.365903s : TSR at time of exception: 0x0000000000000000
[c75ss0] 174.365342s : Page fault:
[c75ss0] 174.365545s : IERR=0x0000000000000001
[c75ss0] 174.365825s : IEAR=0x00000000c00f4000
[c75ss0] 174.365115s : IESR=0x00000000000300c5
[c75ss0] 174.365424s : Page fault exception:
[c75ss0] 174.365711s : uTLB Fault, cpu_se_N_rstatus[10:0]=0xc5
0x0000000000000000 [6]
[c75ss0] 174.365704s : 0x0000000000000000 [7] 0x0000000000000000 [7]
[c75ss0] 174.365218s :
[c75ss0] 174.365376s : SE1_2=0x0000000000000000 [0] SE1_3=0x021dcee084aa6e66 [0]
[c75ss0] 174.365882s : 0x0000000000000000 [1] 0xf7d5bfac76060c23 [1]
[c75ss0] 174.365412s : 0x0000000000000000 [2] 0x0e8880a01e30789d [2]
[c75ss0] 174.365943s : 0x0000000000000003 [3] 0x0000000000000808 [3]
[c75ss0] 174.365425s : 0x4d41bc6801f7043a [4] 0x1509a1111a904103 [4]
[c75ss0] 174.365957s : 0xd038226ce83bd4f6 [5] 0x89a919006ebacd26 [5]
[c75ss0] 174.365511s : 0x80283da21d502185 [6] 0x043844ec8c92c192 [6]
[c75ss0] 174.365063s : 0x0000000000000800 [7] 0x0000000000000010 [7]

是否有任何明显的问题我们可能做错了?

谢谢!

Mike

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

    我能够让此示例使用在地址0xA3000000的器件树中预定义的"edgeai_shared-memory 块运行。  不清楚为什么0xA3000000在 Linux 中工作、地址为0xC0000000的 CMA 区域不工作。  DSP 可以达到的可寻址空间是否有限制?

    是否有可能访问这些文档?  我怀疑他们会回答我的问题。

    C71x DSP Corepac 技术参考手册- SPRUIQ3

    C71x DSP CPU、指令集和矩阵乘法加速器 SPRUIP0

    谢谢!

    Mike

    root@mitysom-am62ax:~#./rpmsg_char_zerocopy -r 8 -s 10 -e "carveout_edgeai_shared-memories"
    打开 rpmsg-char-8-1309
    创建了 Endpt 器件 rpmsg-char-8-1309、FD = 4端口= 1025
    在 rproc id 8上与 rpmsg 设备交换1条消息...

    dma-buf 地址:0xa3000000
    缓冲器@0xff96126000 (大小10240)填充图案0xaaa5555
    正在发送缓冲区数据#0
    地址:0xa3000000
    尺寸:10240
    模式:0xaaaa5555
    接收缓冲区数据#0:
    地址:0xa3000000
    尺寸:10240
    模式:0x5555aaaa
    已使用模式0x5555aaaa 成功验证缓冲区@0xff96126000 (大小10240)

    在 rpmsg-char-8-1309上已成功完成1个缓冲区更新

    测试状态:通过

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

    Michael、您好!

    简介和关于学院的供参考页

    我是目前维护零复制示例的人(以及 多核学院的作者)。

    很高兴听到您能够通过 dma-buf 分配运行项目。 说实话、我通常测试零复制示例的方式是这样、我认为我没有尝试使用 CMA 分配一段时间、因为我们在使用该示例的某些其他设备上默认未定义分配。

    在学院网页上看到:当我们上周推出了 SDK 10.0版本的学院时,后端出现了一个错误,令人抓狂。 网站试图显示"最新"版本、但只显示第一位数字、而不是完整数字。 因此、它会筛选出 SDK 9.2版本、但随后看到该值1 < 9、并尝试显示滤除的页面。 我们应该在接下来的几天内修复它、但在此之前、您可以使用"manage versions"工具手动启用 SDK 9.2版本的文档:

    进入您的问题

    您使用的是哪个版本的 Linux SDK 和 MCU+ SDK?

    我不确定 目前是否支持 AM62Ax C7上的通用开发。 我正在将您的主题重新分配给一位更熟悉 C7的团队成员、以评论现有 C7资源。

    此致、

    Nick

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

    您好、Nick。

    感谢您的答复。  我会使用正确的版本信息重新阅读一些多内核内容、以查看是否有任何重大变化。

    我们使用的是10.0.0.8版 Linux SDK (移植到我们的 SOM)和 10.00.00.14 MCU+ SDK。

    完全了解我们可能会尝试一些 TI 计划支持范围之外的工作、即结合使用 C7和 AM62A。  AI 支持给人留下了深刻的印象、但我们的一些客户希望使用 L138 DSP 向设计中添加新功能、并正在探索我们是否能够支持某种风格的 AM62、以解决这一问题。

    此致、

    Mike

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

    您好、Michael:

    感谢您关注 AM62A。

    n`t 的产品侧重于视觉和 EdgeAI、目前我们完全支持将 AM62A 上的 C7x 用作通用 DSP。 但是、我们希望了解您近期需要在未来规划中考虑这一点。 请联系您当地的 TI 联系人进一步讨论此问题。

    此致、

    Qutaiba