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:ECC 聚合器和 RAT

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1109753/tda4vm-ecc-aggregator-and-rat

器件型号:TDA4VM

您好,

我想 从主域内的 r5f 访问 ECC 聚合器地址。 代码是  

Fullscreen
1
result = SDL_ECC_init(SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR0, &ECC_Test_MAINMSMCA0ECCInitConfig);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我使用 osal_interface 初始化 OSAL、并使用它的 addrTranslate 函数 SDL_test_addrTranslate。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define PBIST_RAT_CFG_BASE CSL_MCU_ARMSS_RAT_CFG_BASE
static SDL_OSAL_Interface osal_interface =
{
.enableInterrupt = (pSDL_OSAL_interruptFunction) SDL_enableInterrupt,
.disableInterrupt = (pSDL_OSAL_interruptFunction) SDL_disableInterrupt,
.registerInterrupt = (pSDL_OSAL_registerFunction) SDL_registerInterrupt,
.deregisterInterrupt = (pSDL_OSAL_deregisterFunction) HwiP_delete,
.globalDisableInterrupts = (pSDL_OSAL_globalDisableInterruptsFunction) SDL_globalDisableInterrupts,
.globalRestoreInterrupts = (pSDL_OSAL_globalRestoreInterruptsFunction) SDL_globalRestoreInterrupts,
.printFxn = (pSDL_OSAL_printFunction) printf,
.delay = (pSDL_OSAL_delayFunction) Osal_delay,
.addrTranslate = (pSDL_OSAL_addrTranslateFunction) SDL_TEST_addrTranslate
};
ret = SDL_OSAL_init(&osal_interface);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是、当我运行此应用程序时、它在 CSL_ratDisableRegionTranslation 函数中挂起。

总体调用关系如下:

Fullscreen
1
2
3
4
5
6
7
8
SDL_ECC_init
SDL_ECC_mapEccAggrReg
SDL_OSAL_addrTranslate
gOSAL_Interface->addrTranslate
SDL_TEST_addrTranslate
CSL_ratDisableRegionTranslation
CSL_ratGetMaxRegions
CSL_REG32_FEXT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我需要以下方面的帮助:
1) 1)在 TDA4芯片上、我找到了名为 CSL_MCU_ARMSS_RAT_CFG_BASE 的 RAT 寄存器是否正确?
2) 2)我参考 SDL 编写的上述代码是否存在任何问题? 为什么它在 RAT 地址转换函数中挂起?

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

    您好、Zhang、

    您能否分享 SDL_OSAL_init 的功能? 此 API 似乎不是来自 PDK。
    此外、请说明您正在使用的 SDK 版本?

    此致、
    Parth

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

    您好 Parth、

    SDL 在 RTOS SDK8.2链接: PROCESSOR-SDK-RTOS-J721E 软件开发套件(SDK)|德州仪器 TI.com 中提供 SDL_OSAL_init 函数。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    sdl/osal/src/sdl_osal.c
    int32_t SDL_OSAL_init(SDL_OSAL_Interface *osalInterface)
    {
    SDL_ErrType_t ret = SDL_PASS;
    if (osalInterface == NULL_PTR)
    {
    ret = SDL_EINVALID_PARAMS;
    }
    else
    {
    gOSAL_Interface = osalInterface;
    }
    return ret;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好 Parth、

    关于此主题,您能给我一些建议吗? 谢谢。

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

    能否在主域 MCU 内核中访问基地址"CSL_MCU_ARMSS_RAT_CFG_BASE 0x40f90000U"?

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

    根据 TRM 8.4.1、我应该可以从主域中的 MCU 访问 RAT 模块。 在哪里可以找到它的基地址。

    从 pdk_jacinto_08_02_00_21/packages/ti/cSL/test/core-R5/core_r5_rat_test.c 的代码路径 中,似乎只定义了来自 MCU 域的地址访问。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    int32_t cslcore_r5_ratTest(void)
    {
    /* Declarations of variables */
    CSL_RatExceptionInfo ratExceptionInfo;
    int32_t testResult = CSL_APP_TEST_PASS;
    #if defined (SOC_AM65XX)
    CSL_ratRegs *pRatRegs = (CSL_ratRegs *)CSL_MCU_RAT_CFG_BASE;
    #elif defined (SOC_AM64X)
    CSL_ratRegs *pRatRegs = (CSL_ratRegs *) CSL_R5FSS0_RAT_CFG_BASE;
    #elif defined (SOC_J721E)
    CSL_ratRegs *pRatRegs = (CSL_ratRegs *) CSL_MCU_ARMSS_RAT_CFG_BASE;
    #elif defined (SOC_J7200)
    CSL_ratRegs *pRatRegs = (CSL_ratRegs *) CSL_MCU_R5FSS0_RAT_CFG_BASE;
    #else
    # error "RAT register BASE not defined"
    #endif
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好!

    查看 TRM 文档、可以在使用 RAT 的模块中定义 RAT 寄存器基址。

    以主域 R5s 为例、基地址如下所示为0x0FF90000、请参见 TRM 代码段下方的(2)。

    SDK RTOS 8.2中的 MCU2_0 (R5主域)编码示例、可使用以下文件中的0x0FF90000基址查看。

    packages/ti/CSL/example/ospi/DDR_memory_daling_main_rtos.c

    此致、

    KB

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

    谢谢 Kb。

    最恰当的考虑。

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

    尊敬的 KB:

    关于 ECC aggr 的另一个问题、我无法获取 ECC aggr ramnums。 第9行返回 pNumRams 为0。 我发现 pEccAggrRegs->STAT 可以被置位、也等于0。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    int32_t SDL_ecc_aggrGetNumRams(const SDL_ecc_aggrRegs *pEccAggrRegs, uint32_t *pNumRams)
    {
    int32_t retVal = SDL_EBADARGS;
    if ( pEccAggrRegs != NULL_PTR )
    {
    if (pNumRams != NULL_PTR)
    {
    *pNumRams = (uint32_t)SDL_REG32_FEXT(&pEccAggrRegs->STAT, ECC_AGGR_STAT_NUM_RAMS);
    retVal = SDL_PASS;
    }
    }
    /* Return the API success/fail with value in the address provided by caller */
    return (retVal);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您能就这个问题提供一些建议吗?

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

    尊敬的 KB:

    我调用 了在主域的 MCU 内核中的 SDL/示例文件名 ECC_TRIGGER.c 中定义的函数"ECC_funcTest"。  

    但它会将 RAM 的数量报告为0、如上所示。

    完整日志如下所示,您能告诉我代码的错误位置吗?

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [MCU3_0] 3.963121 s: CIO: Init ... Done !!!
    [MCU3_0] 3.963197 s: ### CPU Frequency = 1000000000 Hz
    [MCU3_0] 3.963238 s: APP: Init ... !!!
    [MCU3_0] 3.963264 s: SCICLIENT: Init ... !!!
    [MCU3_0] 3.963538 s: SCICLIENT: DMSC FW version [22.1.1--v2022.01 (Terrific Llam]
    [MCU3_0] 3.963586 s: SCICLIENT: DMSC FW revision 0x16
    [MCU3_0] 3.963635 s: SCICLIENT: DMSC FW ABI revision 3.1
    [MCU3_0] 3.963673 s: SCICLIENT: Init ... Done !!!
    [MCU3_0] 3.963702 s: MEM: Init ... !!!
    [MCU3_0] 3.963742 s: MEM: Created heap (DDR_SHARED_MEM, id=0, flags=0x00000004) @ db000000 of size 8388608 bytes !!!
    [MCU3_0] 3.963816 s: MEM: Init ... Done !!!
    [MCU3_0] 3.963843 s: IPC: Init ... !!!
    [MCU3_0] 3.963907 s: IPC: 8 CPUs participating in IPC !!!
    [MCU3_0] 3.985068 s: IPC: Init ... Done !!!
    [MCU3_0] 3.985136 s: APP: Syncing with 7 CPUs ... !!!
    [MCU3_0] 4.709536 s: APP: Syncing with 7 CPUs ... Done !!!
    [MCU3_0] 4.709580 s: REMOTE_SERVICE: Init ... !!!
    [MCU3_0] 4.711653 s: REMOTE_SERVICE: Init ... Done !!!
    [MCU3_0] 4.711738 s: VX_ZONE_INIT:Enabled
    [MCU3_0] 4.711779 s: VX_ZONE_ERROR:Enabled
    [MCU3_0] 4.711809 s: VX_ZONE_WARNING:Enabled
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好!

    TI 在 MCU 安全岛的 MCU1_0上测试 SDL 版本、通常 MCU1_0是 SDL 运行安全解决方案的预期位置。

    要使 代码在 MCU3_0上正常工作、但可能必须执行一些移植。   

    关于所述问题、系统的其余部分此时是否空闲、或者是否正在使用其他内核?

    谢谢、

    KB

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

    尊敬的 KB:

    感谢您的回复。

    我们仍处于功能安全的开发阶段。 当出现上述问题时,系统中的大多数 CPU 都处于空闲状态。

    1) 1) ECC aggr RAM 编号是否等于0与 CPU 使用相关?
    2) 2)我们计划在主域的 mcu3_0上实施部分功能安全。 此设计是否可行且合理?
    3) 3)根据日志的打印、读取 ECC aggr 寄存器中的值为0。 在哪里可以看到每个 ECC AGG 的器件手册? 我应该如何继续进行下一次分析?

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

    尊敬的 KB:

    以上问题、请帮助检查、谢谢。

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

    您好!

    我发现这个主题开始介绍标题不一定包含的主题、而一些主题似乎与其他 e2e 主题重叠。

    (+) TDA4VM:TRM 中的 ECC aggr 类型应如何与 SDL 中的类型和子类型匹配? -处理器论坛-处理器- TI E2E 支持论坛

    是否已解决最初的"ECC 聚合器和 RAT"问题?  如果是、可以关闭此线程、并根据需要创建一个新线程以涵盖(1)(2)和(3)?

    谢谢、

    KB

x 出现错误。请重试或与管理员联系。