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.
Hi
The boot vector is stated to be stored in PSRAM1KECC. However, there is no one with the same name on the memory map as shown below. Based on the size of the area, am I correct in assuming that it is identical to PSRAMECC?
Is there any document or sample that shows what kind of program or data structure should be placed in PSRAM?
HaTa,
What document is this and who provided you this document?
Regards,
Shyam
Hi Kyle
How about the below?
>Is there any document or sample that shows what kind of program or data structure should be placed in PSRAM?
Currently, there is no good document to know how to prepare the boot program.
Therefore, cannot boot the code without CCS.
Thanks and Best regards,
HaTa
HaTa,
When you say boot without CCS, can you please confirm which scenario is being attempted?
Please also capture the other details that the customer is requesting for and provide details.
Hi
According to TRM chapter 6.5.3.7,
"6.5.3.7 C71x DSP Boot Configuration
In this device, the C71x boots from system memory instead of booting from ROM. A 1KB boot RAM
(PSRAM1KECC) is used to store boot vectors for the C71x CPU."
But, that is all description to "C7x DSP Boot configuration".
There is no other comment for it.
What I'd like to know is
- The boot mechanism of "the C71x boots from system memory instead of booting from ROM" which is described at ch6.5.3.7
- What is "boot vectors for the C7x CPU" which is described at ch6.5.3.7
Thanks and Best regards,
HaTa
Hi
Thanks to getting the information how to prepare the boot image from Karan, customer can resume their verification now.
Thank you very much.
So, while preparing it, they faces to the issue.
When the image is expanded to DSP-L2 by SBL, it freezes.
■Evidence
(1) DSP program and app
For the purpose of clarifying the problem, we prepared two cases.
Case (WithL2): DSP code that uses L2
Case (WithoutL2): DSP code that does not use L2 at all
In the above two cases, only the memory map has been changed.
(2) App generation batch
The app in the zip is generated by the following batch
The images of mcu1_0, mcu1_1, mcu2_0, mcu2_1, mpu1_0, mpu1_1, and c7x (out of (1)) are put together.
(The paths are different depending on your environment, so you may need to update some of them to use them)
(3) Boot loader
You can see that even if you use the standard boot loader, it stops in the middle
However, the logs are insufficient, so I made the following changes to the makefile and built it
SBL_LOG_LEVEL=3
■Execution procedure
App |
(in evidence 1) |
tiboot3.bin |
(in evidence (3)) |
tifs.bin |
(in PDK) |
Put them into the SD card and set EVM to SD boot.
Connect to MCU-UART via USB and check the output log after power-on
■Results
Case (WithL2): DSP code that uses L2
SBL Revision: 01.00.10.00 (Apr 27 2021 - 11:14:00) TIFS ver: 21.1.1--v2021.01a (Terrific Lla SCISERVER Board Configuration header population... PASSED Sciclient_setBoardConfigHeader... PASSED Efuse xlated: VD 2 to 800 mV (OppVid: 0x37, Slave:0x48, Res:0x0) Successfully set voltage to 800 mV for Slave:0x48, Res:0x0 Initlialzing PLLs ...done. InitlialzingClocks ...done. Initlialzing DDR ...done. Initializing GTC ...Begin parsing user application Calling Sciclient_procBootRequestProcessor, ProcId 0x20... Calling Sciclient_procBootRequestProcessor, ProcId 0x21... Calling Sciclient_procBootRequestProcessor, ProcId 0x1... Calling Sciclient_procBootRequestProcessor, ProcId 0x2... Calling Sciclient_procBootRequestProcessor, ProcId 0x6... Calling Sciclient_procBootRequestProcessor, ProcId 0x7... Calling Sciclient_procBootRequestProcessor, ProcId 0x8... Calling Sciclient_procBootRequestProcessor, ProcId 0x9... Calling Sciclient_procBootRequestProcessor, ProcId 0x3... Calling Sciclient_procBootRequestProcessor, ProcId 0x4... Calling Sciclient_procBootRequestProcessor, ProcId 0x30... Searching for X509 certificate ...not found Switching core id 4, proc_id 0x1 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x1... Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x1... Enabling MCU TCMs after reset for core 4 Sciclient_procBootSetProcessorCfg enabling TCMs... Copying 0x360 bytes to 0x70010000 Setting entry point for core 4 @0x70010000 Switching core id 4, proc_id 0x1 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x1... Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode... Sciclient_pmSetModuleState Off, DevId 0xfb... Calling Sciclient_procBootGetProcessorState, ProcId 0x2... Enabling MCU TCMs after reset for core 5 Sciclient_procBootSetProcessorCfg enabling TCMs... Setting HALT for ProcId 0x2... Sciclient_pmSetModuleState On, DevId 0xfb... Clearing core_id 5 ATCM @ 0x41400000 Clearing core_id 5 BTCM @ 0x41410000 Copying 0x368 bytes to 0x70012000 Setting entry point for core 5 @0x70012000 Switching core id 6, proc_id 0x6 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x6... Sciclient_procBootSetProcessorCfg, ProcId 0x6, enabling split mode... Sciclient_pmSetModuleState Off, DevId 0xf5... Calling Sciclient_procBootGetProcessorState, ProcId 0x6... Enabling MCU TCMs after reset for core 6 Sciclient_procBootSetProcessorCfg enabling TCMs... Setting HALT for ProcId 0x6... Sciclient_pmSetModuleState On, DevId 0xf5... Clearing core_id 6 ATCM @ 0x5c00000 Clearing core_id 6 BTCM @ 0x5c10000 Copying 0x368 bytes to 0x70014000 Setting entry point for core 6 @0x70014000 Sciclient_procBootSetProcessorCfg, ProcId 0x6, EntryPoint 0x70014000... Sciclient_pmSetModuleClkFreq, DevId 0xf5 @ 1000000000Hz... Copying first 128 bytes from app to MCU ATCM @ 0x5c00000 for core 6 Clearing HALT for ProcId 0x6... Switching core id 6, proc_id 0x6 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x6... Sciclient_procBootSetProcessorCfg, ProcId 0x6, enMCU2_0 runnaing bling split mode... Sciclient_pmSetModuleState Off, DevId 0xf6... Calling Sciclient_procBootGetProcessorState, ProcId 0x7... Enabling MCU TCMs after reset for core 7 Sciclient_procBootSetProcessorCfg enabling TCMs... Setting HALT for ProcId 0x7... Sciclient_pmSetModuleState On, DevId 0xf6... Clearing core_id 7 ATCM @ 0x5d00000 Clearing core_id 7 BTCM @ 0x5d10000 Copying 0x368 bytes to 0x70016000 Setting entry point for core 7 @0x70016000 Sciclient_procBootSetProcessorCfg, ProcId 0x7, EntryPoint 0x70016000... Sciclient_pmSetModuleClkFreq, DevId 0xf6 @ 1000000000Hz... Copying first 128 bytes from app to MCU ATCM @ 0x5d00000 for core 7 Clearing HALT for ProcId 0x7... Sciclient_pmSetModuleState On, DevId 0x4... Copying 0x688 bytes to 0x70024000 Copying 0x44 bytes to 0x70024688 Setting entry point for core 0 @0x70024000 Sciclient_procBootSetProcessorCfMCU2_1 running g, ProcId 0x20, EntryPoint 0x70024000... Sciclient_pmSetModuleClkFreq, DevId 0xca @ 2000000000Hz... Sciclient_pmSetModuleState Off, DevId 0xca... Sciclient_pmSetModuleState On, DevId 0xca... MPU1_0 running Sciclient_pmSetModuleState On, DevId 0x4... Copying 0x688 bytes to 0x70026000 Copying 0x44 bytes to 0x70026688 Setting entry point for core 1 @0x70026000 Sciclient_procBootSetProcessorCfg, ProcId 0x21, EntryPoint 0x70026000... Sciclient_pmSetModuleClkFreq, DevId 0xcb @ 2000000000Hz... Sciclient_pmSetModuleState Off, DevId 0xcb... Sciclient_pmSetModuleState On, DevId 0xcb... Copying 0x80 byMPU1_1 running tes to 0x64800000
If you connect with CCS after this, the DSP is not able to boot correctly.
Case (WithoutL2): DSP code that does not use L2 at all
SBL Revision: 01.00.10.00 (Apr 27 2021 - 11:14:00) TIFS ver: 21.1.1--v2021.01a (Terrific Lla SCISERVER Board Configuration header population... PASSED Sciclient_setBoardConfigHeader... PASSED Efuse xlated: VD 2 to 800 mV (OppVid: 0x37, Slave:0x48, Res:0x0) Successfully set voltage to 800 mV for Slave:0x48, Res:0x0 Initlialzing PLLs ...done. InitlialzingClocks ...done. Initlialzing DDR ...done. Initializing GTC ...Begin parsing user application Calling Sciclient_procBootRequestProcessor, ProcId 0x20... Calling Sciclient_procBootRequestProcessor, ProcId 0x21... Calling Sciclient_procBootRequestProcessor, ProcId 0x1... Calling Sciclient_procBootRequestProcessor, ProcId 0x2... Calling Sciclient_procBootRequestProcessor, ProcId 0x6... Calling Sciclient_procBootRequestProcessor, ProcId 0x7... Calling Sciclient_procBootRequestProcessor, ProcId 0x8... Calling Sciclient_procBootRequestProcessor, ProcId 0x9... Calling Sciclient_procBootRequestProcessor, ProcId 0x3... Calling Sciclient_procBootRequestProcessor, ProcId 0x4... Calling Sciclient_procBootRequestProcessor, ProcId 0x30... Searching for X509 certificate ...not found Switching core id 4, proc_id 0x1 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x1... Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x1... Enabling MCU TCMs after reset for core 4 Sciclient_procBootSetProcessorCfg enabling TCMs... Copying 0x360 bytes to 0x70010000 Setting entry point for core 4 @0x70010000 Switching core id 4, proc_id 0x1 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x1... Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode... Sciclient_pmSetModuleState Off, DevId 0xfb... Calling Sciclient_procBootGetProcessorState, ProcId 0x2... Enabling MCU TCMs after reset for core 5 Sciclient_procBootSetProcessorCfg enabling TCMs... Setting HALT for ProcId 0x2... Sciclient_pmSetModuleState On, DevId 0xfb... Clearing core_id 5 ATCM @ 0x41400000 Clearing core_id 5 BTCM @ 0x41410000 Copying 0x368 bytes to 0x70012000 Setting entry point for core 5 @0x70012000 Switching core id 6, proc_id 0x6 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x6... Sciclient_procBootSetProcessorCfg, ProcId 0x6, enabling split mode... Sciclient_pmSetModuleState Off, DevId 0xf5... Calling Sciclient_procBootGetProcessorState, ProcId 0x6... Enabling MCU TCMs after reset for core 6 Sciclient_procBootSetProcessorCfg enabling TCMs... Setting HALT for ProcId 0x6... Sciclient_pmSetModuleState On, DevId 0xf5... Clearing core_id 6 ATCM @ 0x5c00000 Clearing core_id 6 BTCM @ 0x5c10000 Copying 0x368 bytes to 0x70014000 Setting entry point for core 6 @0x70014000 Sciclient_procBootSetProcessorCfg, ProcId 0x6, EntryPoint 0x70014000... Sciclient_pmSetModuleClkFreq, DevId 0xf5 @ 1000000000Hz... Copying first 128 bytes from app to MCU ATCM @ 0x5c00000 for core 6 Clearing HALT for ProcId 0x6... Switching core id 6, proc_id 0x6 to split mode... Calling Sciclient_procBootGetProcessorState, ProcId 0x6... Sciclient_procBootSetProcessorCfg, ProcId 0x6, enabMCU2_0 running ling split mode... Sciclient_pmSetModuleState Off, DevId 0xf6... Calling Sciclient_procBootGetProcessorState, ProcId 0x7... Enabling MCU TCMs after reset for core 7 Sciclient_procBootSetProcessorCfg enabling TCMs... Setting HALT for ProcId 0x7... Sciclient_pmSetModuleState On, DevId 0xf6... Clearing core_id 7 ATCM @ 0x5d00000 Clearing core_id 7 BTCM @ 0x5d10000 Copying 0x368 bytes to 0x70016000 Setting entry point for core 7 @0x70016000 Sciclient_procBootSetProcessorCfg, ProcId 0x7, EntryPoint 0x70016000... Sciclient_pmSetModuleClkFreq, DevId 0xf6 @ 1000000000Hz... Copying first 128 bytes from app to MCU ATCM @ 0x5d00000 for core 7 Clearing HALT for ProcId 0x7... Sciclient_pmSetModuleState On, DevId 0x4... Copying 0x688 bytes to 0x70024000 Copying 0x44 bytes to 0x70024688 Setting entry point for core 0 @0x70024000 Sciclient_procBootSetProcessorCfg, MCU2_1 running ProcId 0x20, EntryPoint 0x70024000... Sciclient_pmSetModuleClkFreq, DevId 0xca @ 2000000000Hz... Sciclient_pmSetModuleState Off, DevId 0xca... Sciclient_pmSetModuleState On, DevId 0xca... MPU1_0 running Sciclient_pmSetModuleState On, DevId 0x4... Copying 0x688 bytes to 0x70026000 Copying 0x44 bytes to 0x70026688 Setting entry point for core 1 @0x70026000 Sciclient_procBootSetProcessorCfg, ProcId 0x21, EntryPoint 0x70026000... Sciclient_pmSetModuleClkFreq, DevId 0xcb @ 2000000000Hz... Sciclient_pmSetModuleState Off, DevId 0xcb... Sciclient_pmSetModuleState On, DevId 0xcb... Copying 0x40 byMPU1_1 running tes to 0x80000000 Copying 0x380 bytes to 0x81002000 Copying 0x38 bytes to 0x81002390 Setting entry point for core 12 @0x80000000 Sciclient_procBootSetProcessorCfg, ProcId 0x30, EntryPoint 0x80000000... Sciclient_pmSetModuleClkFreq, DevId 0xf @ 1000000000Hz... Sciclient_pmSetModuleState Off, DevId 0xf... Sciclient_pmSetModuleState On, DevId 0xf... Sciclient_procBootReleaseProcessor, ProcId 0x20... Sciclient_procBootReleaseProcessor, ProcId 0x21... Sciclient_procBootReleaseProcessor, ProcId 0x1... Sciclient_procBootReleaseProcessor, ProcId 0x2... Sciclient_procBootReleaseProcessor, ProcId 0x6... Sciclient_procBootReleaseProcessor, ProcId 0x7... Sciclient_procBootReleaseProcessor, ProcId 0x8... Sciclient_procBootReleaseProcessor, ProcId 0x9... Sciclient_procBootReleaseProcessor, ProcId 0x3... Sciclient_procBootReleaseProcessor, ProcId 0x4... Sciclient_procBootReleaseProcessor, ProcId 0x30... Calling Sciclient_procBootRequestProcessor, ProcId 0x1... Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x70010000... Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000000000Hz... Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 4 Calling Sciclient_procBootRequestProcessor, ProcId 0x2... Sciclient_procBootSetProcessorCfg, ProcId 0x2, EntryPoint 0x70012000... Sciclient_pmSetModuleClkFreq, DevId 0xfb @ 1000000000Hz... Copying first 128 bytes from app to MCU ATCM @ 0x41400000 for core 5 Calling Sciclient_procBootRequestProcessor, ProcId 0x1... MCU1_1 running MCU1_0 running
If you connect with CCS after this, the DSP is able to boot correctly.
From the log, we can see that it is freezing when writing from SBL to 0x64800000 (DSP-L2).
■Environment
・SDK
PROCESSOR-SDK-RTOS-J721E_07.02.00.06
We have confirmed that the same problem occurs with the SBLs of the following SDKs.
07.03.00.07
07.01.00.11
・CCS settings
Thanks and Best regards,
Tsurumoto.
C7x MMU must be programmed (secure supervisor or non-secure supervisor mode or both) before writing to L1, L2 or L3 memories. If this is not programmed at the right privilege level then it will result in a page fault.
Regards,
Shyam
Hi Shyam
Confirmed that writing CPU to L2 causes freezing.
They can memcpy to MSMC. However, copying to L2 does not pass.
Hi Tsurumoto-san,
Thanks for confirming with the experiment. Some updates
1. The hardware designers feel that there should be no issue writing to C7x L2 but there could be firewalls in place between R5F and C7X DSP which is preventing write access. I need to check if we can disable the firewalls and test the same memcpy program to see if the write goes through.
2. If we use OSPI boot mode then all sections of the image is transferred via DMA only. For MMCSD boot there are CPU copies involved. We are still checking how to force a DMA transfer. There could be some restrictions in forcing the ADMA in MMCSD IP due to alignment and size considerations.
Regards,
Shyam
Tsurumoto-san,
As discussed today, we have made progress and we need a little more time to share with you a package that you can try.
I will post the next update when ready. No further action on you for now.
Regards
Karthik
Tsurumoto-san,
I found a duplicate thread for this, lets continue discussions on this here. Closing this one.
Regards
Karthik