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.
Part Number: TDA3
Hello everyone,
Is it possible to parse and start IPU1_0 (main) core from bootloader and to parse and start IPU1_1 core additionally from the application (in Vision SDK 2.12.01)?
I would like to start IPU1_0, and later to start an application that will parse, load and boot IPU1_1. Is this doable? Are there any special connections between these two cores that could make a problem?
Thanks in advance,
Jho.
Hi Jho,
You can boot IPU1_1 image from Vision SDK application by following the below steps. You need to modify the SBL code as well to achieve this.
1. SBL leaves IPU1_1 looping in a while loop in DDR in case it doesn't find an app image for it. You need to remove this code.
The code is:
/* Set while(1) loop */ HW_WR_REG32((SBLLIB_IPU1_CORE1_BOOT_ADDRESS_NO_IMAGE - 1U), 0xE7FEE7FEU); SBLLibPrintf(SBLLIB_TRACE_LEVEL_IMP_INFO, "\n No IPU1 CPU1 App Found, Switching to while Loop \n"); HW_WR_REG32(SBLLIB_IPU1_CORE_1_ENTRY_POINT_ADDRESS, SBLLIB_IPU1_CORE1_BOOT_ADDRESS_NO_IMAGE);
2. Doing 1 causes IPU1_1 to be in a while loop in OCMC RAM. The Vision SDK application should not use OCMC RAM from 0x0 to 0x200 offset.
3. Vision SDK appication should parse/load the app image for IPU1_1 and set entry point at SBLLIB_IPU1_CORE_1_ENTRY_POINT_ADDRESS.
With these changes both IPU cores will work. Care should be taken that IPU1_1 image does not reconfigure AMMU as it might result in crash on IPU1_0.
Regards,
Rishabh
Hi Jho,
IPU1 is a dual core system where Core0 is the master and Core1 is the slave. When RBL hands over the control to SBL, Core1 is held in WFE.
SBL will remap 0x0 to IPU RAM instead of ROM in order to have configurable vector table. If SEV is sent to core1 after remapping 0x0 a hard fault will occur. Hence SBL wakes up Core1 before remapping 0x0.
SBL sets up a while loop in OCMC. SBL passes on OCMC address to AUXBOOT so that on sending 'SEV' Core1 jumps to OCMC and loops there. After parsing the application image SBL passes the entry point of IPU1_1 to it and IPU1_1 jumps to this location from OCMC.
Regards,
Rishabh
Hi Jho,
I just gave a pointer for the debug. I am not sure if the above mentioned scenario is the exact cause of failure. Booting from application image or IPU1_1 depends on the use case. You can boot from either place.
Regards,
Rishabh