主题中讨论的其他器件:TDA4VH
我们有与以下相同的问题:
正如您的同事回答的、有些 ECC 寄存器映射评分失败、ECC init enter exception 存在同样的问题。
这种现象在 A72内核完成后发生、然后继续执行 A72 ECC 初始化。
MCU1_0将进入数据中止。 你能再次做同样的实验吗???
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.
尊敬的 Josietaa:


康佳您好:
1.我们使用 SDK 9.1、这部分代码包含在引导应用程序中。 我们观察到 ecc_init 的返回值、发现所有返回值都是-1、这意味着 ECC 初始化失败。
int32_t main(void)
{
Board_initCfg boardCfg;
uint32_t ret = CSL_PASS;
TaskP_Params bootTaskParams;
int32_t retValue = SDL_PASS;
boardCfg = BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO;
Board_init(boardCfg);
OS_init();
ret = BootApp_SetupSciServer();
if(ret != CSL_PASS)
{
UART_printf("\nFailed to setup sciserver for boot app\r\n");
OS_stop();
}
BootApp_ArmR5PmuCntrInit();
UART_printf("[xxx] Compiled on %s %s\n", __DATE__, __TIME__);
UART_printf("SDL_ECC_init start\r\n");
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG0_ARM_COREPAC_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P0_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_COREPAC_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG0_ARM_CORE0_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P0_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU0_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG0_ARM_CORE1_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P0_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU1_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG0_ARM_CORE2_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P0_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU2_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG0_ARM_CORE3_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P0_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU3_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG1_ARM_COREPAC_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P1_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_COREPAC_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG1_ARM_CORE0_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P1_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU0_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG1_ARM_CORE1_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P1_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU1_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG1_ARM_CORE2_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P1_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU2_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
retValue = SDL_ECC_init(SDL_COMPUTE_CLUSTER0_CFG1_ARM_CORE3_ECC_AGGR,&ECC_Test_SDL_COMPUTE_CLUSTER0_COMPUTE_CLUSTER_J7AHP_P1_A72_QUAD_2MB_A72_QUAD_MID_ECC_AGGR_CPU3_initConfig);
UART_printf("line %d , retValue = %d\r\n",__LINE__, retValue);
UART_printf("SDL_ECC_init end\r\n");
UART_printf("\nMCU R5F App started at %d usecs\r\n", BootApp_GetTimeInMicroSec(CSL_armR5PmuReadCntr(CSL_ARM_R5_PMU_CYCLE_COUNTER_NUM)));
/* Initialize the task params */
TaskP_Params_init(&bootTaskParams);
bootTaskParams.priority = BOOT_TASK_PRIORITY;
bootTaskParams.stack = gBootAppTaskStack;
bootTaskParams.stacksize = sizeof (gBootAppTaskStack);
gbootTask = TaskP_create(&BootApp_TaskFxn, &bootTaskParams);
if (NULL == gbootTask)
{
UART_printf("\nBoot Task creation failed\r\n");
OS_stop();
}
OS_start(); /* does not return */
return(0);
}
2. 我们不仅需要 ECC_init 函数,而且还需要 在初始化后运行相应的测试。
() 
尊敬的 Kangjia:
是的、我认为 ECC 初始化会失败、因为您没有为 A72内核上电进行测试。 如果您在 SDL 中参阅 ecc_func_app、您会看到在 ECC 初始化之前、Sciclient_pmSetModuleState API 用于内核上电、然后初始化 ESM 模块和 ECC 回调。 我已将测试应用程序作为单个 API 调用添加到引导应用程序中、并测试了 A72的 ECC 初始化和 ECC 自检通过。
问题是、这会使 A72内核在 Boot App 中处于无法使用的状态、因此 Linux 内核流程会受到阻碍。 以前未执行过此操作、我们没有任何验证或文档可以帮助我们完成此操作。 它本质上是一种独立的功能开发。
此致、
约西塔
尊敬的 Kangjia:
根据与内部团队的讨论和多个实验、我们注意到、在 BootApp 将 A72内核上电以执行 ECC 测试之前、A72保持更改状态。 这可能需要复位。 在 A72内核由 BootApp 上电后、我们将测试其他一些可能的权变措施来包括 A72的 ECC、并检查是否可以避免复位。
我们没有为该修复程序定义时间表、但您可以参考此链接以获取内部跟踪信息以及有关该问题的任何其他更新:jira.itg.ti.com/.../JACINTOREQ-7538
此致、
约西塔