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.

DM8168 proto bring up

new to processors of this type,  was looking for some pointers for board bring up

I've got a custom pcb which is based on the DM8168 DDR3 EVM board artwork.  PSU's are up and sequencing as the EVM. 


I can JTAG into it and run the GEL / DDR3 slave ratio programs and can get the DDR3 to converge as the wiki write up shows; have compiled UBOOT from the june SDK with the timing changes referenced by the slave ratio program.  Boot jumpers are set to SD card.


The MLO seems to be getting read off the SD card (mmc clock/data activity), but hangs up somewhere early on; can't see anything on the UART.  The custom pcb is pretty much a copy of the ddr3 EVM artwork with some added peripherals.  I did not include the Ethernet hardware on the PCB, and haven’t populated the audio codec, SERDES, PCI, SATA or USB.  I set the CONFIG_NO_ETH define, but suspect that maybe the lack of ethernet or the unpopulated hardware might be causing my initialization problem. 


I know this is pretty vague and a million things could be wrong, but was hoping to bounce some ideas off someone?

 

Thanks!

Dal

  • Hi,

    I have designed  a custom board. U-boot boots from SD card just fine. No changes needed (even I have used x16 DDR3 memories) - only console redirection to UART0 was required.

    How the waveform looks? Can you see two sets of clocks coming out (one is MLO, one is u-boot.bin)? Or it's just few clocks ... Did you create SD card by using the script from DM816x_C6A816x_AM389x_PSP_U-Boot.pdf (page 19)?

     

     

  • I can see the MLO file boot --SD clock/data waveforms look similar to the EVM, but no further loading on my custom board as in the EVM.  I don't see activity on the UART.  I did build the SD with script; changing to ddr2  allows the same card to boot on the EVM (DDR2 version).  I recompile uboot with DDR3 changes and try to boot on the custom I'm not getting signs of life.  I am able to get the JTAG to run the GEL DDR and slave ratio programs on the target and the timing elements seem pretty consistent.  I do have a number of unpopulated peripherals on the other side of the PCB, and no ethernet, so I'm going through the pin assignments in case something is hanging on that.  The UBOOT code is kind of oddly organized, so its taking me a while to follow that through to figure out what is getting initialized early on.  I did hand stock the PCB , so it is possible I woofed something along the way (BGA's were machine placed though).  PSU's do sequence, clocks look good, jtag seems to work fine.  Haven't seen anything come out of the UART2 though ( I didn't redirect, but I suppose I could try one of the others). Do you happen to know of a GEL function/file that will print something out of the UART?

     

    Thanks for the response, I appreciate any insight/pointers..

    Dal

  • Hi, I don't have JTAG.

    You need to see two sets of clocks coming out - this means, the MLO runs ok. If you see only one set - the MLO is loaded, but probably doesn't start/run correctly.

    I would try to compile the original TI u-boot (with no changes), or even try to use directly precompiled MLO and u-boot binaries - I believe it should work on your board.

  • I'm only seeing 1 set.  will try the ddr3 flavor original file

  • Here are a few things that you can check...

    • Is MLO getting read from SD card and getting copied to internal memory? Check this would be comparing the OCMC content over JTAG with the U-Boot binary
    • Is U-Boot waiting for something to complete? Check for this be the PC location and the opcode being executed.
    • Has U-Boot crashed? Check for this would again be the PC location. If its something like 0x200xx then the answer is yes.
    • If U-Boot has crashed, is memory setup the problem? To check this you can build a U-Boot image which runs out of internal memory by making use of "ti8168_evm_min_ocmc" as the target name in the configure step of U-Boot build. The binary generated can be loaded over JTAG after enabling just the OCMC clocks from the GEL. This image runs out of internal memory and gives a prompt which is really handy for running an mtest and checking memory stability.

    Regards,

    Vaibhav

  • will check these...  booting off the MLO seems to have the JTAG stoping at 0x2008c

  • does building uboot this way default to uart2?

    I edited the make file to do the ocmc build, ran the GEL ddr init, and load memory with u-boot.bin ad 0x40300000.  I'm a newbie, is this what you meant?

  • Trying to get U-boot to run on my EVM in the way you suggest above; and I'm coming up empty.  edited the GEL to work on the old DDR2 EVM, compiled uboot with OCMC, and am having trouble getting the file on the target to run.  Could you step me through that?

     

    So far, I'm firing up the EVM, loading the GEL, running doall(), and load mem with the u-boot.bin file and hit run.  not seeing uart activity on the EVM; so I'm wondering if my build is bad, or my load memory method is not correct.

     

     

  • and now my custom target is talking.  can debug now...

     

  • was able to debug and now...

    Custom PCB has booted from the microSD into Linux now!!!!   Sweet!!!!

    Thanks everyone!

    Dal

  • Great!!! Can you share what changes were required? It will help others.

    Regards,

    Vaibhav

    P.S. Please close the thread also.

  • Hello Dal,

    I came across your post. We have run into a similar situation. Can you please explain what you did to get your board working ?

    Thanks,

    Lakshmi

  • Hello Lakshmi/Dal Wheeler,

        Even we also have similar kind of problem in our board. we have tried to boot from SD card(i.e. 10111 switch setting) and from NAND (i.e. 10010 switch setting).Our design is similar to EVM. Here we have indicator LED (i.e. to L9(UART2_RTSN/GP1[23]) BGA pin of processor). So with SD/NAND boot modes LED is blinking and i have verified same with EVM, But not able to see any data on UART2. I am able to see mmc data/clock activity on SD card. and on UART0 (with 00001 switch setting) able to see continuously printing 'o' character with 115200 baud, 8-bits, even parity, 1 stop bit configuration. 

    Please help me to resolve this problem.

    Thanks in advance!

    Regards,

    Pragnesh Virani

  • Hi Pragnesh,

    Are you able to get into SD uboot and see messages on UART0? 

    Lakshmi

  • Hello Lakshmi,

      with SD boot mode, not able to see any messages on UART0. But as i told you with  00001 Boot Pin Settings, able to see continuously printing 'o' character.

     

    Regards,

    Pragnesh Virani

  • Hi Pragnesh,

    Please check the following:


    1) Power Sequencing

    2) AVS voltage value (the spec changed slightly in Feb 2014. Please check new datasheet rev_

    3) DDR3 initialization as specified in Tech Ref Manual (TRM) and the Wiki page

    4) Check each GPIO and ensure it has right connection including clock inputs like RTC.

    5) Check clock and reset.

    5) Check layout.


    Also you use XDS100v2 JTAG emulator to identify the trace vector (as specified in TRM). Also, you can try to run the memory gel file to see if you are able to test memory. With that test, you can also check if your DDR signals look good.

    These are all what you can do to verify from hardware side. Hope this helps.

    Lakshmi

  • Hi Lakshmi,

       This is working design. Initially we assembled some boards and it was working fine. right now i don't have any of them and In the second lot, i am getting this problem.Clock and Reset are fine. And  with  JTAG emulator  i tried to load 'nand flash writer'  tests which i have downloaded from spectrum digital, there is some simple DDR testing utility which i tried and getting this result :

    [CortexA8] Welcome to CCS Nand Flash Utility
    [CortexA8]
    [CortexA8]
    [CortexA8] Choose your operation
    [CortexA8] Enter 1 ---> To Flash an Image
    [CortexA8] Enter 2 ---> To ERASE the whole NAND
    [CortexA8] Enter 3 ---> To DDR Simple test
    [CortexA8] Enter 4 ---> To EXIT
    3
    [CortexA8]
    [CortexA8] DDR Simple test
    [CortexA8] --- addr 0x80000004 (0x51555555)
    [CortexA8] --- addr 0x80000008 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000010 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000014 (0x53557555)
    [CortexA8] --- addr 0x80000018 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000020 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000024 (0x55557555)
    [CortexA8] --- addr 0x80000028 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000030 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000034 (0x55557555)
    [CortexA8] --- addr 0x80000038 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000040 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000044 (0x53555555)
    [CortexA8] --- addr 0x80000048 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000050 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000054 (0x53557555)
    [CortexA8] --- addr 0x80000058 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000060 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000064 (0x53555555)
    [CortexA8] --- addr 0x80000068 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000070 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000074 (0x55557555)
    [CortexA8] --- addr 0x80000078 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000080 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000104 (0x53555555)
    [CortexA8] --- addr 0x80000108 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000110 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000114 (0x53557555)
    [CortexA8] --- addr 0x80000118 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000120 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000124 (0x55557555)
    [CortexA8] --- addr 0x80000128 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000130 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000134 (0x5a555555)
    [CortexA8] --- addr 0x80000138 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000140 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000148 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000150 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000154 (0x53557555)
    [CortexA8] --- addr 0x80000158 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000160 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000164 (0x53557555)
    [CortexA8] --- addr 0x80000168 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000170 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000174 (0x53555555)
    [CortexA8] --- addr 0x80000178 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000180 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000204 (0x53555555)
    [CortexA8] --- addr 0x80000208 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000210 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000214 (0x53557555)
    [CortexA8] --- addr 0x80000218 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000220 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000224 (0x55557555)
    [CortexA8] --- addr 0x80000228 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000230 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000234 (0x55557555)
    [CortexA8] --- addr 0x80000238 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000240 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000244 (0x52555555)
    [CortexA8] --- addr 0x80000248 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000250 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000254 (0x53555555)
    [CortexA8] --- addr 0x80000258 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000260 (0xaaaa8aaa)
    [CortexA8] --- addr 0x80000268 (0xaaaa8aaa).... 

    Please give some advise  

    Thank You!

    Regards,

    Pragnesh Virani