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.

AM4378: Can't boot from SD card

Genius 13655 points
Part Number: AM4378

Hello Champs,

Customer designed his own AM4378 board and failed to boot from SD card.     

1. Creating SD card, the SD card could boot from AM437x_gpEVM and Rico Board AM4378

2. Insert SD card to customer board, it can't boot, no output from UART0. 
    a. Have configured sysboot pin to SD boot mode.
    b. input clock is 24M
    c. There is 250KHz clock from SD clk pin, CMD(Pin3) and Data0(Pin7) is high without wave
    d. If setting sysboot pin to uart boot mode, there is CCCC.....outputting from UART0.

What's the problem?

Thanks.
Rgds
Shine

  • Hi Shine,

    For new board bring-up, one of important tasks is to verify followings via either (1) JTAG debugger or (2) early printf in SPL
    - all HW configuration (PMIC, DPLL, DDR) are all set-up and called correctly
    - DDR memory can be accessed successfully after sdram_init() call

    (1). I uploaded in attachment my note on SPL boot flow.
    It will facilitate SPL debugging via either using JTAG debugger or enabling additional debug() prints.
    (2). I also uploaded in attachment a simple patch to enable early prints in SPL with SDK 6.3 on TI EVM.

    Refer to this link for general board bring-up tips:
    https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/AM437X/linux/How_to_Guides/Board_Port/U-Boot.html#u-boot-bringup-debugging-tips

    Best,

    -Hong

    spl_boot_flow.pdf

    From 60bbdb6643c170a4e5da07164492f19e6ccee5ab Mon Sep 17 00:00:00 2001
    From: [Hong Guan] <hguan@ti.com>
    Date: Thu, 13 Aug 2020 17:18:24 -0700
    Subject: [PATCH 1/1] SDK6.3 early UART print enable in SPL with printf example
    
    
    Signed-off-by: [Hong Guan] <hguan@ti.com>
    ---
     arch/arm/mach-omap2/am33xx/board.c |    3 +++
     configs/am43xx_evm_defconfig       |    7 +++++++
     2 files changed, 10 insertions(+), 0 deletions(-)
     mode change 100644 => 100755 arch/arm/mach-omap2/am33xx/board.c
     mode change 100644 => 100755 configs/am43xx_evm_defconfig
    
    diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c
    old mode 100644
    new mode 100755
    index 62158a9..051a2b8
    --- a/arch/arm/mach-omap2/am33xx/board.c
    +++ b/arch/arm/mach-omap2/am33xx/board.c
    @@ -534,8 +534,11 @@ void board_init_f(ulong dummy)
     {
     	hw_data_init();
     	early_system_init();
    +	printf("\nPassed early_system_init()\n");
     	board_early_init_f();
    +	printf("\nPassed board_early_init_f()\n");
     	sdram_init();
    +	printf("\nPassed sdram_init()\n");
     	/* dram_init must store complete ramsize in gd->ram_size */
     	gd->ram_size = get_ram_size(
     			(void *)CONFIG_SYS_SDRAM_BASE,
    diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
    old mode 100644
    new mode 100755
    index 6272063..6b7afb0
    --- a/configs/am43xx_evm_defconfig
    +++ b/configs/am43xx_evm_defconfig
    @@ -12,6 +12,13 @@ CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1"
     CONFIG_SYS_CONSOLE_INFO_QUIET=y
     # CONFIG_MISC_INIT_R is not set
     CONFIG_VERSION_VARIABLE=y
    +# early UART
    +CONFIG_DEBUG_UART_BASE=0x44e09000
    +CONFIG_DEBUG_UART_CLOCK=48000000
    +CONFIG_DEBUG_UART=y
    +CONFIG_DEBUG_UART_OMAP=y
    +CONFIG_DEBUG_UART_SHIFT=2
    +CONFIG_DEBUG_UART_ANNOUNCE=y
     CONFIG_SPL_ETH_SUPPORT=y
     CONFIG_SPL_MTD_SUPPORT=y
     CONFIG_SPL_NET_SUPPORT=y
    -- 
    1.7.1
    
    

  • Hi Hong,

    Thank you very much for your support. 

    Customer's problem has been resolved. After he removed the capacitor of TVS, it can boot from the SD card and the log output from UART.

    Thanks.
    Rgds

    Shine