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.

DM385: Having trouble getting custom DM385 board to boot from SD or UART

Part Number: DM385

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!