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.

[参考译文] TDA4VM:在 MCU R5F 和 DSP C7X 运行的情况下调试 memcpy_main_BareMetal.c 时出现问题

Guru**** 2393725 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1492224/tda4vm-issues-while-debugging-memcpy_main_baremetal-c-with-mcu-r5f-and-dsp-c7x-running

器件型号:TDA4VM

工具与软件:

您好、TI:

为了借助 C7X 通过 DMA 执行存储器传输、我想使用 TI 提供的主函数 memcpy_main_BareMetal.c 来使自己熟悉这一点 但是,当我启动调试会话时,我永远不会退出 Board_init ()函数。 下面是 main 的代码:


/**
*\file memcpy_main_BareMetal.c
*
*为裸机构建提供简短的主文件
*/

/*======================================== */
/*包含文件*/
/*======================================== */

#include
#include
#include
#include
#include

/*======================================== */
/*宏和类型定义*/
/*======================================== */

/*无*/

/*======================================== */
/*结构声明*/
/*======================================== */

/*无*/

/*======================================== */
/*函数声明*/
/*======================================== */

extern int32_t uDMA_memcpyTest (void);

/*======================================== */
/*全局变量*/
/*======================================== */

/*无*/

/*======================================== */
/*函数定义*/
/*======================================== */

int main (void)

printf ("初次使用 la config de la board");

board_initCfg boardCfg;

boardCfg = Board_init_module_clock |
BOARD_INIT_PINMUX_CONFIG |
BOARD_INIT_UART_stdio;

board_init (boardCfg);

printf ("Fin de la config de la board");

#if 已定义(BOARD_ENABLE_DDR_REG_VERIFY)
BOARD_STATUS 状态;

UART_printf ("DDR 寄存器检查正在进行中...");
状态= Board_init (BOARD_INIT_DDR_REG_VERIFY);
if (status!= Board_SOK)

如果(STATUS = BOARD_DDR_CTL_REG_CHECK_FAIL)

UART_printf ("DDR 控制寄存器检查失败!!\n");
}
否则为(STATUS = BOARD_DDR_PHYINDEP_REG_CHECK_FAIL)

UART_printf ("DDR PHY INDEP 寄存器检查失败!!\n");
}
否则为(STATUS = BOARD_DDR_PHY_REG_CHECK_FAIL)

UART_printf ("DDR PHY 寄存器检查失败!!\n");
}

返回-1;
}
设计

UART_printf ("DDR 寄存器检查成功!\n");
}
#endif

uDMA_memcpyTest ();

返回(0);
}   

请注意、我在函数前后添加了 printf 语句、以检查我是否输入了这些语句。 当我运行时、这些 printf 语句在控制台中都不可见。 为了查看有关所发生的事情的更多细节、我使用步入来了解哪些事情不起作用。 每次,我发现自己卡在下面的功能:

为了解决这一问题、我采取了以下行动:

  • 启动脚本 launch.js
  • 点击 R5_0内核、然后点击顶部的"Run"按钮
  • 在 C7X 内核上加载并启动应用程序

尽管如此,我有同样的问题,我不明白...

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

    您好!

     sciserver 是否在 mcu1_0内核上运行? 此调用依赖于 sciserver。 运行 launch.js 脚本时、该脚本通常在 mcu1_0上加载 sciserver 二进制文件、然后通常需要在 CCS 中点击 mcu1_0上的 运行按钮、以便该脚本运行。

    此致、

    Brijesh

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

    您好、Brijesh:

    我认为是的。

    我使用的是位于以下路径的 launch.js 脚本: packages\ti-processor-sdk-rtos-j721e-evm-10_01_00_04\pdk_jacinto_10_01_00_25\packages\ti\drv\sciclient\tools\ccsLoadDerver\j721e\launch.js、并且我看到代码似乎表明 MCU1_0内核上确实在运行 sciserver_0



    函数 loadSciserver()

    updateScriptVars();
    打印("###################################################################################################################################################################################################################################### ");
    print ("在 MCU1_0上加载 Sciserver 应用程序。 这将为 RM/PM 消息提供服务");
    print ("如果不希望加载此文件、请更新启动脚本、使 loadSciserverFlag = 0");
    print ("如果您要加载和运行其他内核、请在加载 Sciserver 后运行 MCU1_0内核。 ");
    打印("###################################################################################################################################################################################################################################### ");
    dsMCU1_0.expression.evaluate ('GEL_Load ("'+ sciserver_elf_file +'")');
    }

    函数 doEverything()

    printVars();
    connectTargets();
    DisconnectTargets();
    sampleDDRCheck ();
    if (clearCLECSecureClaimFlag == 1)

    打印("清除 CLEC 安全索赔...");
    clearclecSecureClaim();
    }
    如果(loadSciserverFlag =1)

    loadSciserver();
    }

    dsMCU1_0.target.runAsynch();
    Print ("快乐调试!!");
    }


    此外、正如您提到的、在启动 launch.js 脚本后、我会通过点击运行按钮来运行 MCU1_0内核。 我让它运行、然后连接到 C7X DSP、加载我的程序(memcpy_main_bareMetal.c)并运行它。 但是、它不起作用并永远停留在循环中。

    此致、  

    M é lanie

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

    尊敬的 Melanie:

    但为什么要从 C7x 中调用 Board_init? 通常、仅针对 R5F 内核调用它。 它的环路是什么? 您能分享更多信息吗?  

    此致、

    Brijesh