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, Snehal,
Theorectically, the RTOS binary built from MCSDK should also run regardless the Linux Kernel version running on ARM. It shouldn't stuck at bios_start. Bios_start actually will jump to the highest priority task which created earlier. Have you tried to set a breakpoint at one of the function created before bios_start?
If there is anything caused by the migration, It may be the memory usage changed between 2 SDKs. The memory configured to be used by remoteproc, cmem, etc. I assume these were preserved though.
Rex
Hi Rex,
DSP application is stopping before BIOS start, our DSP app is multicore based and we are checking this part.
Below are the memory configuration between MSCDK and P-SDK Linux,
MCSDK | PDK | |
MPM.JSON | ||
Start addr | 0xA0000000 | 0x90000000 |
length | 0x1FFFFC00 | 0x30000000 |
Device Tree Reserved | ||
MSMC (start) | 0xc000000 | 0xc000000 |
length | 0x600000 | 0x600000 |
dspmem(start) | 0xa0000000 | 0x820000000 * |
length | 0x20000000 | 0x20000000 |
Note: *: 0x820000000 is aliased of 0xa0000000 as DDR3A_REMAP_EN is high during boot,
Apart from this rproc mem l2sram l1sram reserve address remain same in both MCSDK and PDK,
CMEM is not being used in MCSDK but in P-SDK CMEM is being used, please find below are logs,
We have tried with align MCSDK memory configuration in mpm.json, cmem and dts to PDK but observation remains same, DSP is stoping.
Logs:
MCSDK
root@k2hk-evm:~# cat /proc/cmem
Block 0: Pool 0: 1 bufs size 0x57000000 (0x57000000 requested)
Pool 0 busy bufs:
Pool 0 free bufs:
id 0: phys addr 0x829000000
root@k2hk-evm:~#
PDK
root@k2hk-evm:~# cat /proc/cmem
Block 0: Pool 0: 1 bufs size 0x18000000 (0x18000000 requested)
Pool 0 busy bufs:
id 0: phys addr 0x840000000 (cached)
Pool 0 free bufs:
root@k2hk-evm:~#
Regards,
Snehal
Hi,
Do you have the .map file of the old DSP application from MCSDK? The Linux must be able to parse the DSP image in ELF format, then download it to DSP memory and instruct the DSP core start to run. Do you see any obvious conflict with Linux kernel? E.g, Linux may use the first 512MB of DDR? Linux may use a small region in MSMC?
Do you know if the DSP code can go main()? where is the Program Counter if you found the BIOS_start() is not executed? Do you have the source code if we want to add some debug code and rebuild?
Regards, Eric
Hi Rex and Eric,
DSP application was stopping at PA_setup,
PA_setup fails for Pa_addMac() api.
If we bypass packet accelerator setup and usage than the DSP application is running fine.
Is there anything that needs to enable related to PA on Linux kernel?
I have found a note in this link that: Keystone-2: PA/PA2 is not supported in NetCP driver. Is this the reason for PA_setup() fails?
Note: We are running DSP on MCSDK and ARM on SDK Linux 06.01.00.8.
We have a DSP source code for debugging further.
Thanks & Regards,
Snehal
Hi,
If the Pa_addMac() returned an error, what is the error code? Please check the ti\drv\pa\pa.h for error code enumeration.
Keystone-2: PA/PA2 is not supported in NetCP driver. ======> This meant the PA is not supported by Linux. I assume in Linux the PA is not powered on and no firmware download. And in your DSP application, as it is in ARM SPI boot mode (Not DSP no-boot mode), will you DSP application download the PA firmware? If not, will Linux download PA firmware?
In your DSP side code, do you have Init_PASS()?
if (no_bootMode == TRUE)
{
if (Download_PAFirmware ()) ============>Is this executed properly?
{
return -1;
}
}
Regards, Eric