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.
您好,
我想 从主域内的 r5f 访问 ECC 聚合器地址。 代码是
result = SDL_ECC_init(SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR0, &ECC_Test_MAINMSMCA0ECCInitConfig);
我使用 osal_interface 初始化 OSAL、并使用它的 addrTranslate 函数 SDL_test_addrTranslate。
#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);
但是、当我运行此应用程序时、它在 CSL_ratDisableRegionTranslation 函数中挂起。
总体调用关系如下:
SDL_ECC_init SDL_ECC_mapEccAggrReg SDL_OSAL_addrTranslate gOSAL_Interface->addrTranslate SDL_TEST_addrTranslate CSL_ratDisableRegionTranslation CSL_ratGetMaxRegions CSL_REG32_FEXT
我需要以下方面的帮助:
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 函数。
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; }
您好 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 域的地址访问。
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
您好!
查看 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。
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); }
您能就这个问题提供一些建议吗?
尊敬的 KB:
我调用 了在主域的 MCU 内核中的 SDL/示例文件名 ECC_TRIGGER.c 中定义的函数"ECC_funcTest"。
但它会将 RAM 的数量报告为0、如上所示。
完整日志如下所示,您能告诉我代码的错误位置吗?
[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 [MCU3_0] 4.712844 s: VX_ZONE_INIT:[tivxPlatformCreateTargetId:54] Added target IPU2-0 [MCU3_0] 4.712909 s: VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!! [MCU3_0] 4.712948 s: APP: OpenVX Target kernel init ... !!! [MCU3_0] 4.712982 s: APP: OpenVX Target kernel init ... Done !!! [MCU3_0] 4.713015 s: APP: Init ... Done !!! [MCU3_0] 4.714161 s: [MCU3_0] 4.714203 s: ECC_Test_init: Init MCU ESM complete [MCU3_0] 4.761676 s: Ruifeng SDL_ECC_init 895 retVal = 0 [MCU3_0] 4.761737 s: Ruifeng SDL_ECC_mapEccAggrReg 256 [MCU3_0] 4.761788 s: Ruifeng SDL_ECC_mapRatEccAggrBaseAddress 221 [MCU3_0] 4.761838 s: rat version = 1719677184 [MCU3_0] 4.761883 s: Ruifeng CSL_ratConfigRegionTranslation 574 [MCU3_0] 4.761932 s: Ruifeng CSL_ratConfigRegionTranslation 579 [MCU3_0] 4.761988 s: Ruifeng CSL_ratValidateTranslationConfig 140 Input regionIndex = 1 [MCU3_0] 4.762043 s: Ruifeng CSL_ratValidateTranslationConfig 143 [MCU3_0] 4.762110 s: Ruifeng CSL_ratValidateTranslationConfig 158 (uint64_t)pTranslationCfg->baseAddress & (regionSize-1UL) = 0 [MCU3_0] 4.762210 s: Ruifeng CSL_ratValidateTranslationConfig 160 translatedAddress = 0x4d20000000 regionSize = 0x400 (pTranslationCfg->translatedAddress & (regionSize-1UL) = 0 [MCU3_0] 4.762314 s: Ruifeng CSL_ratValidateTranslationConfig 162 CSL_ratIsRegionOverlap(pRatRegs, regionIndex, pTranslationCfg ) = 0 [MCU3_0] 4.762384 s: Ruifeng CSL_ratConfigRegionTranslation 589 [MCU3_0] 4.762432 s: Ruifeng CSL_ratConfigRegionTranslation 593 [MCU3_0] 4.762478 s: Ruifeng CSL_ratConfigRegionTranslation 601 [MCU3_0] 4.762536 s: Ruifeng CSL_ratValidateTranslationConfig 140 Input regionIndex = 1 [MCU3_0] 4.762606 s: Ruifeng CSL_ratValidateTranslationConfig 158 (uint64_t)pTranslationCfg->baseAddress & (regionSize-1UL) = 0 [MCU3_0] 4.762713 s: Ruifeng CSL_ratValidateTranslationConfig 160 translatedAddress = 0x4d20000000 regionSize = 0x400 (pTranslationCfg->translatedAddress & (regionSize-1UL) = 0 [MCU3_0] 4.762815 s: Ruifeng CSL_ratValidateTranslationConfig 162 CSL_ratIsRegionOverlap(pRatRegs, regionIndex, pTranslationCfg ) = 0 [MCU3_0] 4.762893 s: Ruifeng CSL_ratConfigRegionTranslation 603 retVal = 1 [MCU3_0] 4.762942 s: Ruifeng CSL_ratConfigRegionTranslation 609 [MCU3_0] 4.762993 s: Ruifeng SDL_TEST_addrTranslate 266 result = 1 [MCU3_0] 4.763042 s: Ruifeng SDL_ECC_mapRatEccAggrBaseAddress 223 [MCU3_0] 4.763094 s: Ruifeng SDL_ECC_mapEccAggrReg 261 mapIdx = 0 [MCU3_0] 4.763143 s: Ruifeng SDL_ECC_mapEccAggrReg 266 [MCU3_0] 4.763188 s: Ruifeng SDL_ECC_mapEccAggrReg 271 [MCU3_0] 4.763237 s: Ruifeng SDL_ECC_init 901 retVal = 0 [MCU3_0] 4.763277 s: Ruifeng SDL_ECC_init 909 [MCU3_0] 4.763319 s: Ruifeng SDL_ecc_aggrDisableAllIntrs 1536 [MCU3_0] 4.763363 s: Ruifeng SDL_ecc_aggrDisableAllIntrs 1540 [MCU3_0] 4.763410 s: Ruifeng SDL_ecc_aggrDisableIntrs 1489 [MCU3_0] 4.763457 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 404 [MCU3_0] 4.763504 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 410 [MCU3_0] 4.763551 s: Ruifeng SDL_ecc_aggrGetNumRams 475 [MCU3_0] 4.763594 s: Ruifeng SDL_ecc_aggrGetNumRams 478 [MCU3_0] 4.763663 s: Ruifeng SDL_ecc_aggrGetNumRams 483 pEccAggrRegs->STAT = 0x0 *pNumRams = 0 retVal = 0 [MCU3_0] 4.763722 s: Ruifeng SDL_ecc_aggrGetNumRams 487 [MCU3_0] 4.763772 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 412 sdlRet = 0 [MCU3_0] 4.763834 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 440 sdlRet = 0 retVal = 1 [MCU3_0] 4.763891 s: Ruifeng SDL_ecc_aggrDisableIntrs 1494 operation = 1 [MCU3_0] 4.763946 s: Ruifeng SDL_ecc_aggrDisableIntrs 1506 retVal = 0 [MCU3_0] 4.763999 s: Ruifeng SDL_ecc_aggrDisableAllIntrs 1542 retVal = 0 [MCU3_0] 4.764046 s: Ruifeng SDL_ecc_aggrDisableIntrs 1489 [MCU3_0] 4.764091 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 404 [MCU3_0] 4.764138 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 410 [MCU3_0] 4.764182 s: Ruifeng SDL_ecc_aggrGetNumRams 475 [MCU3_0] 4.764225 s: Ruifeng SDL_ecc_aggrGetNumRams 478 [MCU3_0] 4.764287 s: Ruifeng SDL_ecc_aggrGetNumRams 483 pEccAggrRegs->STAT = 0x0 *pNumRams = 0 retVal = 0 [MCU3_0] 4.764343 s: Ruifeng SDL_ecc_aggrGetNumRams 487 [MCU3_0] 4.764391 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 412 sdlRet = 0 [MCU3_0] 4.764451 s: Ruifeng SDL_ecc_aggrToggleIntrsEnable 440 sdlRet = 0 retVal = 1 [MCU3_0] 4.764508 s: Ruifeng SDL_ecc_aggrDisableIntrs 1494 operation = 1 [MCU3_0] 4.764559 s: Ruifeng SDL_ecc_aggrDisableIntrs 1506 retVal = 0 [MCU3_0] 4.764619 s: Ruifeng SDL_ecc_aggrDisableAllIntrs 1548 retVal = 0 [MCU3_0] 4.764669 s: Ruifeng SDL_ecc_aggrGetNumRams 475 [MCU3_0] 4.764711 s: Ruifeng SDL_ecc_aggrGetNumRams 478 [MCU3_0] 4.764774 s: Ruifeng SDL_ecc_aggrGetNumRams 483 pEccAggrRegs->STAT = 0x0 *pNumRams = 0 retVal = 0 [MCU3_0] 4.764831 s: Ruifeng SDL_ecc_aggrGetNumRams 487 [MCU3_0] 4.764889 s: Ruifeng SDL_ECC_init 916 sdlResult = 0 numMemRegions = 0 [MCU3_0] 4.764943 s: Ruifeng SDL_ECC_init 919 sdlResult = 0 [MCU3_0] 4.764991 s: Ruifeng SDL_ECC_init 922 retVal = -1 [MCU3_0] 4.765041 s: Ruifeng SDL_ECC_init 944 retVal = -1 [MCU3_0] 4.765088 s: Ruifeng SDL_ECC_init 954 retVal = -1 [MCU3_0] 4.765137 s: Ruifeng SDL_ECC_init 1010 retVal = -1 [MCU3_0] 4.869619 s: APP: Run ... !!! [MCU3_0] 4.869656 s: IPC: Starting echo test ... [MCU3_0] 4.873083 s: APP: Run ... Done !!! [MCU3_0] 4.874721 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] mcu3_0[s] mcu3_1[.] C66X_1[.] C66X_2[.] C7X_1[.] [MCU3_0] 4.874855 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] mcu3_0[s] mcu3_1[.] C66X_1[P] C66X_2[.] C7X_1[.] [MCU3_0] 4.874973 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] mcu3_0[s] mcu3_1[P] C66X_1[P] C66X_2[.] C7X_1[.] [MCU3_0] 4.875078 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] mcu3_0[s] mcu3_1[P] C66X_1[P] C66X_2[P] C7X_1[.] [MCU3_0] 4.875185 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[P] mcu3_0[s] mcu3_1[P] C66X_1[P] C66X_2[P] C7X_1[P] [MCU3_0] 4.902715 s: IPC: Echo status: mpu1_0[x] mcu2_0[P] mcu2_1[P] mcu3_0[s] mcu3_1[P] C66X_1[P] C66X_2[P] C7X_1[P]
您好!
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