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:DSP 使用/加载

Guru**** 2614265 points
Other Parts Discussed in Thread: TMDSEVM572X

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581710/linux-am5728-dsp-usage-loading

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

工具/软件:Linux

客户尝试测量 其 程序的 DSP 使用情况、该程序将 OpenCV 与 SDK 03.01.00.06结合使用。 它们在控制台中运行 dsptop, 在 telnet 会话中运行其程序。 如果 他们的程序使用这些函数中的一个- cvGaussian()和 cvErode ()- 它们会得到以下错误并且系统挂起:

 

[836.364891] OMAP-L3_NOC 440000.OCP:L3应用程序错误:目标3 mod.2 (不可清除)

[836.373082] OMA_L3_NOC 440000.OCP:L3调试错误:目标3 mod:2 (不可清除)

 

如果 他们放置 OCL::setUseOpenCL (false);在这些调用之前、强制 OpenCV 在这些调用期间不使用 OpenCL -程序工作正常、dsptop 显示 DSP 使用情况。 是否有任何方法可以使 dsptop 与上述函数配合使用?

 

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

    您能否分享他们到底在做什么? 即、它们正在运行:
    编号./ 和
    # dsptop

    我想、他们使用的是定制板和修改过的 Linux 内核、对吧? 是否可以发送他们的二进制文件、以便我可以在我的板上进行测试?

    它们可以尝试转储以下列出的寄存器:
    •L3_FLAGMUX_CLK1MERGE_MASK0用于屏蔽(启用)应用程序错误源
    •L3_FLAGMUX_CLK1MERGE_REGERR0用于检查哪些应用程序错误源处于活动状态
    •L3_FLAGMUX_CLK1MERGE_MASK1用于屏蔽调试错误源
    •L3_FLAGMUX_CLK1MERGE_REGERR1用于检查哪些调试错误源处于活动状态

    以查看他们是否会从内核中获取任何有用的信息。 他们还可以查看器件 TRM 的14.2.3.5标志复用和14.2.3.8.3标志复用错误记录部分。

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

    你好!

    [引述 user="Yordan Kovachev"]您能不能与大家分享他们到底在做什么? 即、它们正在运行:
    编号./ 和
    # dsptop

    [/报价]

    否、我使用以下命令在一个会话(通过 USB-UART 的主控制台)中运行 dsptop:

    dsptop -s0 -d1

    同时,我通过 telnet 打开另一个会话,并在此处启动我们的程序。

    [引用 user="Yordan Kovachev">我想他们使用的是定制板和修改过的 Linux 内核、对吧?

    [/报价]

    不、当时我要在 TMDSEVM572X 评估板和 Linux 处理器 SDK 中未经修改的 Linux 内核上测试我们的程序  03.01.00.06。

    [引用用户="Yordan Kovachev"]
    它们可以尝试转储以下列出的寄存器:
    •L3_FLAGMUX_CLK1MERGE_MASK0用于屏蔽(启用)应用程序错误源
    •L3_FLAGMUX_CLK1MERGE_REGERR0用于检查哪些应用程序错误源处于活动状态
    •L3_FLAGMUX_CLK1MERGE_MASK1用于屏蔽调试错误源
    •L3_FLAGMUX_CLK1MERGE_REGERR1用于检查哪些调试错误源处于活动状态

    [/报价]

    您是说我应该尝试在程序崩溃之前或之后转储这些寄存器吗? 因为如果您希望我在程序崩溃后执行此操作-我无法执行此操作、因为系统挂起且需要电源重置。  或者、是否有办法让系统在崩溃时打印这些寄存器?

    提前感谢 Alex。

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

    [引述]您是说我应该在程序崩溃之前还是之后尝试转储这些寄存器? [/报价]
    这些应在崩溃后或发生时读取... 这可以通过修改 drivers/bus/l3_oc.c l3_interrupt_handler ()中的 L3_NOC 驱动程序来实现。 但我注意到、这已经在内核驱动程序中实现:
    应用程序错误:目标3.
    调试错误:目标3
    但是、这似乎没有多大意义、因为根据表14-24、标志多路复用器输入3对应于 EVE2。 互连标志映射、请参阅:
    flag_mux = L3->L3_flagmux[i];
    ERR_reg = readl_relaxed (base + flag_mux->offset +
    L3_FLAGMUX_REGERR0 +(inttype << 3));

    ERR_reg &=~(inttype? flag_mux->mask_app_bits:
    flag_mux->mask_dbg_bits);

    如果(ERR_reg){
    /*识别来自控制状态寄存器的源*/
    ERR_src =__FFS (ERR_reg);

    RET = L3_handle_target (L3、base、flag_mux、err_src);

    如果(RET){
    DEV_ERR (L3->DEV、
    "L3 %s 错误:目标%d mod:%d %s\n"、
    inttype? “调试”:“应用程序”,
    ERR_src、i、"(不可清除)");
    您能否使用&测试在后台运行程序、然后启动 dsptop -s0 -d1? 我觉得运行两个调试会话(tellnet 和 console)可能与您的问题有关。

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

    我尝试使用&来运行程序、然后启动 dsptop -s0 -d1。 dsptop 屏幕显示了一段时间、然后系统挂起:

    dsptop -经过的时间00:00:29
    总模式
    平均 DSP 使用率:4.22%准确度99.99%
    外部存储器代码/数据163840KB (总计)、8.4%已使用

    >
    DSP %usage 运行时间+ 空闲时间+
    DSP_0 4.17 00:00:00.623 00:14.327
    DSP_1 4.27 00:00:00.638 00:00:14.316

    这次没有系统错误消息。