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.

AM3358: Not able to get U-boot prompt

Part Number: AM3358

Hi,

We have designed a board using AM3358 processor and Micron DDR3 Part MT41K512M8.

We have connected 2 DDRs to achieve 8Gb of DDR size.

We have calculated DDR timing registers as well as SDRAM configuration registers. We have also performed software levelling for the DDR using the procedure given.

Now from CCS we can access the DDR but after applying the same DDR configurations in u-boot we do not get any prompt.

Do we need to consider anything specific while doing configuration for dual DDR3?

PS: We do get CCC when SD card is not inserted and when the SD card is inserted we do not get any prints on the console.

We have also tried to transfer the u-boot-spl.bin file using UART but after the successful transfer we do not get any print on console.

  • Hi,

    Which is your debug console UART? Have you eliminated the EEPROM check in U-boot? Which Linux version are you using?
  • Hi Biser,

    debug console UART : UART0.
    EEPROM check disabled in U-boot.
    Linux version : 4.4 (arago yocto krogoth branch)

    Regards,
    Chirag
  • Hi Biser,

    We already tried using that SDK.
    But it did not help.

    Regards,
    Chirag
  • I have notified the software team. They will respond here.
  • Hello Chirag,

    You prepare the SD Card by using create-sdcard.sh, right? Can you add a #define DEBUG in <Processor SDK>/board-support/u-boot-<version>/include/configs/ti_armv7_common.h file and check if this will print something.

    Best regards,
    Kemal

  • Hi Kemal,

    Yes we have created SD card as mentioned in TI Wiki page. We have also tried to boot from UART.
    #define DEBUG in ti_armv7_common.h file didn't help.

    Regards,
    Chirag
  • Can you post the SYSBOOT settings?

  • Please find below the SYSBOOT configuration

    SYSBOOT[4:0] = 11100 - MMC1 -> MMC0 -> UART0 -> USB0
    SYSBOOT[5] = 0 - CLKOUT1 Disabled
    SYSBOOT[6:11] = 0 - Don't Care for ROM code
    SYSBOOT[12:13] = 00
    SYSBOOT[15:14] = 01 - 24MHz Crystal Frequency
  • Do you have anything connected on MMC1?
  • eMMC is connected on MMC1.
    But we can transfer the SPL file over UART0 so MMC1 does not seem to be blocking point.

    We have further debugged the SPL code using CCS and found that the code crashes when it tries to memset in the RAM.
    So it looks like there is some problem in SDRAM initialization.

    Regards,
    Chirag
  • Hi Biser/Kemal,

    Can you please verify the DDR timing register we have calculated from the Micron DDR3 datasheet attached. also note that we have used SDRAM configurations same as AM3358 starter kit evm.

    Our board DDR3 schematic : /cfs-file/__key/communityserver-discussions-components-files/791/DDR_5F00_schematic.pdf

    Our calculated DDR3 timing parameter: /cfs-file/__key/communityserver-discussions-components-files/791/AM335x_5F00_DDR_5F00_303.xls

    Micron DDR3 datasheet : /cfs-file/__key/communityserver-discussions-components-files/791/4Gb_5F00_automotive_5F00_DDR3L.pdf

    Update : Updated AM335x_DDR xls file

    Regards,

    Chirag

  • Update: Good news is that I can now boot up the board. And can see the u-boot prompt. (Issue was with the DDR software levelling)

    But now bootup stuck at "Starting kernel ..."
    Below is the console logs.

    U-Boot 2016.05 (Jun 02 2017 - 16:11:40 +0530)

    CPU : AM335X-GP rev 2.1
    Model: TI AM335x EVM
    Watchdog enabled
    DRAM: 1 GiB
    WARNING: Caches not enabled
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    *** Warning - bad CRC, using default environment

    <ethaddr> not set. Validating first E-fuse MAC
    Press SPACE to abort autoboot in 2 seconds
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    reading boot.scr
    ** Unable to read file boot.scr **
    reading uEnv.txt
    ** Unable to read file uEnv.txt **
    switch to partitions #0, OK
    mmc0 is current device
    Scanning mmc 0:1...
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    3743752 bytes read in 1711 ms (2.1 MiB/s)
    38821 bytes read in 41 ms (923.8 KiB/s)
    Kernel image @ 0x82000000 [ 0x000000 - 0x392008 ]
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 8fff3000, end 8ffff7a4 ... OK

    Starting kernel ...


    Can you please help with the same?
  • Hi All,

    I solved this issue and now kernel is up. (The issue was in the DTS file and I took fresh file from EVM and updated each and every interfaces one by one. One more thing I came across is each and every fixedregulator must contain a property named "regulator-name")

    Now the problem I came across is I can not see eMMc.

    Only SD card node is detected.

    root@am335x-evm:~# ls -al /dev/mmcblk*
    brw-rw---- 1 root disk 179, 0 May 26 06:23 /dev/mmcblk0 (SD card)
    brw-rw---- 1 root disk 179, 1 May 26 06:23 /dev/mmcblk0p1
    brw-rw---- 1 root disk 179, 2 May 26 06:23 /dev/mmcblk0p2
    brw-rw---- 1 root disk 179, 3 May 26 06:23 /dev/mmcblk0p3
    brw-rw---- 1 root disk 179, 4 May 26 06:23 /dev/mmcblk0p4
    brw-rw---- 1 root disk 179, 5 May 26 06:23 /dev/mmcblk0p5
    brw-rw---- 1 root disk 179, 6 May 26 06:23 /dev/mmcblk0p6

    No significant details in boot log for emmc.



    My DTS file configuration for EMMC:

    vmmcsd_fixed: fixedregulator@4 {
    compatible = "regulator-fixed";
    regulator-name = "vmmcsd_fixed";
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
    regulator-always-on;
    regulator-boot-on;
    enable-active-high;
    };

    &mmc2 {
    status = "okay";
    vmmc-supply = <&vmmcsd_fixed>;
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&emmc_pins_default>;
    pinctrl-1 = <&emmc_pins_sleep>;
    bus-width = <8>;
    ti,vcc-aux-disable-is-sleep;
    ti,non-removable;
    //ti,needs-special-hs-handling;
    };

    // eMMc PINMUX
    emmc_pins_default: emmc_pins_default {
    pinctrl-single,pins = <
    0x80 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (U9) gpmc_csn1.mmc1_clk */
    0x84 ( PIN_OUTPUT_PULLUP | MUX_MODE2 ) /* (V9) gpmc_csn2.mmc1_cmd */
    0x0 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (U7) gpmc_ad0.mmc1_dat0 */
    0x4 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (V7) gpmc_ad1.mmc1_dat1 */
    0x8 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (R8) gpmc_ad2.mmc1_dat2 */
    0xc ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (T8) gpmc_ad3.mmc1_dat3 */
    0x10 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (U8) gpmc_ad4.mmc1_dat4 */
    0x14 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (V8) gpmc_ad5.mmc1_dat5 */
    0x18 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (R9) gpmc_ad6.mmc1_dat6 */
    0x1c ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (T9) gpmc_ad7.mmc1_dat7 */
    >;
    };

    emmc_pins_sleep: emmc_pins_sleep {
    pinctrl-single,pins = <
    0x80 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (U9) gpmc_csn1.mmc1_clk */
    0x84 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (V9) gpmc_csn2.mmc1_cmd */
    0x0 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (U7) gpmc_ad0.mmc1_dat0 */
    0x4 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (V7) gpmc_ad1.mmc1_dat1 */
    0x8 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (R8) gpmc_ad2.mmc1_dat2 */
    0xc (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (T8) gpmc_ad3.mmc1_dat3 */
    0x10 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (U8) gpmc_ad4.mmc1_dat4 */
    0x14 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (V8) gpmc_ad5.mmc1_dat5 */
    0x18 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (R9) gpmc_ad6.mmc1_dat6 */
    0x1c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (T9) gpmc_ad7.mmc1_dat7 */
    >;
    };

    Can you please help?

  • Update -

    With the help of TI technical team I was able to resolve this issue.

    Just changed below line in DTS.
    0x84 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (V9) gpmc_csn2.mmc1_cmd */

    And eMMC was detected.