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.

Linux/AM4376: SD card boot fails

Part Number: AM4376

Tool/software: Linux

Hello,

I've a problem starting my custom board with am4376 processor.

Descriptions of the problem : the board is configured for SDcard boot (mmc1) but no console from the uboot-spl.

1) Sysbootpins are configured (when configured to start with UART, 'c' characters are displayed)

2) SDcard (with MLO file inside) boot is ok : tracing vectors are (32bit, msb first)

00000000000100000000000010011110
00000000000000010001000000000000
00000000000000000000000000100000
00000010000000000001111000000000
00000000000000000000000000000000

As described in TRM :

MMC Card in Ready State(CMD1 complete)
Memory Boot Data Read from the MMC Card
Memory Boot - USB_MS/MMC Master Boot record found
Memory Boot - USB_MS/MMC Active Partition Found

But MLO is not found !

3) am4376 gp evm board boots with console display with the same MLO.

4) jtag debug with CCS6 shows that the boot process before hanging on infinite loop (in fiq function) is :

_start() -> reset() -> save-boot-params() -> save-boot-params-ret() -> cpu-init-cp15() -> cpu-init-crit-() -> _main() -> board_init_f_alloc_reserve() -> board_init_f_init_reserve() -> board_init_f() -> spl-relocate-stack-gd() -> board_init_r() -> dram_init_banksize()

5) Our custom board uses a lpddr2 ram which is not configured, it's certainly a part of the problem. But our custom board boots (it displays spl booting message) with the sd card given with the EVM board (with the evm dram configuration). How can i configure the uboot-spl to printf message before external dram initialisation

Thanks for your help.

Yvan

  • Hi,

    What Linux version are you using? How did you build it? How did you create the SD card?
  • I'm using Linux 4.4.32 and uboot 2016.05 from SDK 03.02.00.05
    I'm using buildroot to generate boot files.
    Sdcard is created with a script found in ti wiki.

    Yvan
  • Hi Yvan,

    Have you tried building u-boot with the top level makefile (?):
    cd ~/ti-processor-sdk-linux-am437x-evm-03.02.00.05
    x0155517@mms:~/ti-processor-sdk-linux-am437x-evm-03.02.00.05$ make u-boot

    And then copy the generated MLO & u-boot.img on your sdcard boot partition. The above command ensures the use of the correct defconfig & toolchain.

    Also I am confused by your last question:
    5) Our custom board uses a lpddr2 ram which is not configured, it's certainly a part of the problem. But our custom board boots (it displays spl booting message) with the sd card given with the EVM board (with the evm dram configuration).


    Which u-boot version boots your custom board?

    You should make sure that your u-boot contains the correct ddr configurations in order for it to boot the board.

    Best Regards,
    Yordan
  • Hi Yordan,
    With the MLO generated with top level makefile, our custom board displays 'c' characters and stop.
    The EVM board boot with spl message.

    Could you confirm pls, spl displays first on uart0 then external ram is configured ?

    We have the same behavorial as e2e.ti.com/.../503918
    but we don't use RTC.
    Warm reset is drived by pmic_pgood signal (set to '1').

    NNmi signal (drived by Pmic_Nint stays at '0').
    thanks for your help
    Yvan
  • Hi Yvan,

    Could you confirm pls, spl displays first on uart0 then external ram is configured ?


    You can see the bootloader stages here:
    omappedia.org/.../Bootloader_Project

    You can see u-boot startup sequence here:
    www.denx.de/.../U-Boot_startup_sequence.pdf
    Memory configuration should be one of the first things the MLO does, but the actual first line "U-Boot 2016.05-00118-gabc6b2a-dirty (Mar 24 2017 - 17:09:42 +0200)" comes from preloader_console_init() and it it is before ram initialization.

    With the MLO generated with top level makefile, our custom board displays 'c' characters and stop.

    The 'CCC' characters means that your device tries to boot from uart. This can happen:
    1. Because of wrong sysboot settings (the device actually expects an uart boot)
    2. The device did not found a valid bootloader and skipped to the next boot peripheral.

    Best Regards,
    Yordan