Hello
Processor and Revision == ADSP-SC584 rev 1.0
Hardware Platform and Version == Custom Board
Target Software and Version == DDR3 Interfacing
Development Software and Version == CCES 2.9.2
Host Operating System and Version == Windows 11
Emulator Device == ICE 1000
I am working on the custom board which includes one SC584 processor, UARTs, one Winbond W25Q128FV SPI Flash and one DDR3 (MT41J128M16JT) memory. The custom board is designed as per Eval board schematics. To connect the board using ICE-1000 I used default preload code as supplied in the default directory (C:\Analog Devices\CrossCore Embedded Studio 2.x.x\SHARC\ldr\). But the loading of test code using debugger doesn't happened and stuck in between. On further research (Preload Customization FAQ), I came to know that during loading using debugger
"External memory needs to be configured appropriately before applications can be loaded. When the application boots, this is done through initcodes; when the application is loaded to target using the debugger, this can be done by the IDE automatically for simple processors."
The preload code that I used was for default DDR2 Memory (MT47H128M16) present on SC584 eval kit. To solve this issue I modified the "preload" source code in default directory (C:\Analog Devices\CrossCore Embedded Studio 2.9.2\SHARC\ldr\init_code\SC58x_Init\sc584_preload_Core0) for DDR3 memory (MT41K128M16JT). This is same DDR3 memory that is present in SC589 eval board.
I modified the CONFIG_DMC0 to Micron_2Gb_DDR3_MT41K128M16JT instead Micron_2Gb_DDR2_MT47H128M16 in config.h. I build and with this customized preload.dxe the custom board got connected and started working. In debug configuration Core 0 default preload path is modified to this custom preload.dxe. The different peripherals were checked independently and all works good.
But DDR3 memory (MT41J128M16JT) being used on our custom board is different from the DDR3 memory (MT41K128M16JT) used in preload code. It may happen that both part are quite similar and settings used in preload code works well for both.
The same modification as applied in "preload" code is done with "initcode" source code in default directory (C:\Analog Devices\CrossCore Embedded Studio 2.9.2\SHARC\ldr\init_code\SC58x_Init\sc584_init_Core0).
But the build customized initcode.dxe doesn't flashes the test code. It got stuck indefinitely after driver line as shown in snapshot.
Command used for loader file creation:
elfloader -proc ADSP-SC584 -si-revision 1.0 -bspimaster -fbinary -width 8 -bcode 1 -init "C:\Analog Devices\CrossCore Embedded Studio 2.9.2\SHARC\ldr\init_code\SC58x_Init\sc584_init_Core0\Release\sc584_init_Core0" -core0="D:/Working Dir/Radio 1/test_Core0/Debug/test_Core0" -NoFinalTag="test_Core0" -core1="D:/Working Dir/Radio 1/test_Core1/Debug/test_Core1.dxe" -o "test.ldr"
Command used for flashing:
cldp -proc ADSP-SC584 -cmd prog -driver "C:\Analog Devices\ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.2\ADSP-SC5xx_EZ-KIT\Examples\Device_Programmer\sc584\sharc\sc584_w25q128fv_dpia_Core1\sc584_w25q128fv_dpia_Core1.dxe" -erase all -emu ice-1000 -format bin -core 1 -file test.ldr -cmd compare -format bin -core 1 -file test.ldr
Questions:
1. Does any further modification is required for new DDR3 (MT41J128M16JT) in preload/initcode?
2. Does the flashing driver also depends on the DDR memory configuration used?
3. Does any changes required for .ld files for memory mapping?
Please guide me to tackle this problem. Hoping for favorable response.
Flash Snapshot: