Hi Everyone,
We are bringing up a new custom board with a DM385 processor.
We are not able to boot the boards through the SD card. The device just seems to hang. The nSketch CBB eval board that we are using will boot just fine from the same SD card. We can see activity on the SD card lines but uboot never outputs anything to the console.
We also cannot program through the uart. We get the “CCCCC” and send a binary through xmodem. After that it appears to hang. The same operation starts uboot on the nSketch eval board.
We can access the processor through JTAG. I am using code composer v5.5. I did not find any example code for the DM385 like test ram, output to the uart, etc. Are there any code composer projects for the DM385?
Through JTAG I found that when a program is loaded through uart and the processor appears to hang it is in a loop.
00020080: EAFFFFFE B 0x20080 |
I tried some of the GEL file initialization scripts that came with nSketch CBB software. It looks like it hangs trying to reset the HDVICP. We have verified that the HDVICP is at 1.2v and the HDVICP PLL is at 1.8v.
The GEL file init is hanging at the highlighted spot below. I have added some debug prints.
CortexA8: Output: PRCM for DucatiSS is Done Successfully ********
CortexA8: Output: User Can Connect to DUCATI M3s....
CortexA8: Output: PRCM for IVHD0 is in Progress, Please wait.....
CortexA8: Output: PRCM after check power is on
CortexA8: Output: PRCM before
CortexA8: Output: PRCM after gclk
DM385_System_Initialisation_TEST_device() cannot be evaluated.
GEL_TextOut("\tPRCM for IVHD0 is in Progress, Please wait..... \n","Output",1,1,1); WR_MEM_32(CM_IVAHD0_CLKSTCTRL, 2); /*Enable Power Domain Transition*/ while(RD_MEM_32(PM_IVAHD0_PWRSTST)!=0x37); /*Check Power is ON*/ GEL_TextOut("\tPRCM after check power is on\n","Output",1,1,1); WR_MEM_32(CM_IVAHD0_IVAHD_CLKCTRL, 2); /*Enable IVHD0 Clocks*/ WR_MEM_32(CM_IVAHD0_SL2_CLKCTRL, 2); /*Enable IVHD0 SL2 Clocks*/
GEL_TextOut("\tPRCM before\n","Output",1,1,1); while(((RD_MEM_32(CM_IVAHD0_CLKSTCTRL)&0x100))!=0x100); /*IVAHD0_GCLK is Active*/ GEL_TextOut("\tPRCM after gclk\n","Output",1,1,1);
WR_MEM_32(RM_IVAHD0_RSTCTRL, 3); /*Enable IVHD0 logic & SL2 */
while(RD_MEM_32(RM_IVAHD0_RSTST)!=4); GEL_TextOut("\tPRCM after RSTST\n","Output",1,1,1);
WR_MEM_32(0x58088000, 0xEAFFFFFE); /*Write Self Branch Instruction in ICONT1 ITCM 0 Location*/
WR_MEM_32(0x58098000, 0xEAFFFFFE); /*Write Self Branch Instruction in ICONT2 ITCM 0 Location*/
WR_MEM_32(RM_IVAHD0_RSTCTRL, 0); /*Bring ICONT1 & ICONT2 out of Reset*/
while(RD_MEM_32(RM_IVAHD0_RSTST)!=7); /*ICONT1 & ICONT2 are out of Reset*/ GEL_TextOut("\tPRCM after RSTST\n","Output",1,1,1);
GEL_TextOut("\tPRCM for IVHD0 is Done Successfully \n","Output",1,1,1); GEL_TextOut("\tUser Can Connect to ICONT1 & ICONT2 of IVHD0 \n","Output",1,1,1); |
RM_IVAHD0_RSTCTRL is 0x48180C10
RM_IVAHD0_RSTST is 0x48180C14
Any help appreciated.
Thanks!