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: MMC Booting Problem.

Part Number: AM3358

Hi,

Boot Configuration is 11100b. (MMC1 - MMC0 - UART0 - USB0)

MMC1 - eMMC

MMC0 - SD Card.

Booting starts approximately 3:25s after power is on.

MMC1_CLK and debug message is not output for 3:25s.

I attached a am335x-boot-analysis.txt

CONTROL: device_id = 0x2b94402e
  * AM335x family
  * Silicon Revision 2.1

PRM_DEVICE: PRM_RSTST = 0x00000001
  * Bit 0 : GLOBAL_COLD_RST

CONTROL: control_status = 0x008103fc
  * SYSBOOT[15:14] = 10b (25 MHz)
  * SYSBOOT[11:10] = 00b No GPMC CS0 addr/data muxing
  * SYSBOOT[9] = 0 GPMC CS0 Ignore WAIT input
  * SYSBOOT[8] = 1 GPMC CS0 16-bit data bus
  * Device Type = General Purpose (GP)
  * SYSBOOT[7:6] = 11b RGMII no internal delay (EMAC boot modes only)
  * SYSBOOT[5] = 1 CLKOUT1 enabled
  * Boot Sequence : MMC1 -> MMC0 -> UART0 -> USB0

ROM: Current tracing vector, word 1 = 0x0010009f
  * Bit 0  : [Memory Boot] Memory booting device MMCSD1 or SPI0
  * Bit 1  : [General] Entered main function
  * Bit 2  : [General] Running after the cold reset
  * Bit 3  : [Boot] Main booting routine entered
  * Bit 4  : [Memory Boot] Memory booting started
  * Bit 7  : [Boot] GP header found
  * Bit 20 : [Configuration Header] CHSETTINGS found

ROM: Current tracing vector, word 2 = 0x00011000
  * Bit 12 : [Memory Boot] Memory booting trial 0
  * Bit 16 : [Memory Boot] Execute GP image

ROM: Current tracing vector, word 3 = 0x00000000

ROM: Current copy of PRM_RSTST = 0x00000000

ROM: Cold reset tracing vector, word 1 = 0x00000000

ROM: Cold reset tracing vector, word 2 = 0x00000000

ROM: Cold reset tracing vector, word 3 = 0x00000001
  * Bit 0  : [Memory Boot] Memory booting device NULL

Cortex A8 Program Counter = 0x402f8264

ROM Exception Vectors
  * 0x4030CE04 Undefined
  * 0x4030CE08 SWI
  * 0x4030CE0C Pre-fetch abort
  * 0x4030CE10 Data abort
  * 0x4030CE14 Unused
  * 0x4030CE18 IRQ
  * 0x4030CE1C FIQ

ROM Dead Loops
  * 0x00020080 Undefined exception default handler
  * 0x00020084 SWI exception default handler
  * 0x00020088 Pre-fetch abort exception default handler
  * 0x0002008C Data exception default handler
  * 0x00020090 Unused exception default handler
  * 0x00020094 IRQ exception default handler
  * 0x00020098 FIQ exception default handler
  * 0x0002009C Validation test PASS
  * 0x000200A0 Validation test FAIL
  * 0x000200A4 Reserved
  * 0x000200A8 Image not executed or returned
  * 0x000200AC Reserved
  * 0x000200B0 Reserved
  * 0x000200B4 Reserved
  * 0x000200B8 Reserved
  * 0x000200BC Reserved

  • Hi,

    Are you using Linux or RTOS?

    Thanks,

    Max

  • Hi,

    I'm using Linux.

    I guess RBL load SPL from eMMC to internal RAM slowly or CPU can't reset.

  • SY,

    can you please clarify what your issue/concern is in a bit more detail? Is it that the start of the boot process is too slow? From which boot media? But except that, everything is working as expected?

    Regards, Andreas

  • Sorry my english is not good.

    In mmc boot mode, system power is turned ON, device doesn't show console message and MMC_CLK for 200s (200 ~ 210s)

    After 200 seconds, SPL and U-Boot message is displayed in the console. at this time, the MMC_CLK is driven. 

    In the first time boot (no MMC and SD Card), 'C' log is displayed. This is normal because boot sequence is mmc1, mmc0, uart0, usb0.

    I attach power sequence wave form.

    I think  this is no problem compared to other mass-produced models

    The difference between mass-produced model and board has booting issue is the reset circuit.

  • Thanks for the detailed information!

    SY Yoon said:
    In the first time boot (no MMC and SD Card), 'C' log is displayed. This is normal because boot sequence is mmc1, mmc0, uart0, usb0.

    I think we need to verify when the device actually starts executing the ROM boot code based on observing activity of another boot peripheral, other than MMC. As you probably know the "CCCC..." you are seeing in your boot sequence actually comes from the X-Modem serial handshake the ROM is attempting as a fallback boot mechanism as part of your sequence.

    I'd suggest to change your boot mode to one where UART0 is first in the boot sequence, and then observing the time it takes from power-on to seeing the sequence "CCC...". With UART0 being first in line this should happen pretty much right away after power-up. There are several UART0-first boot modes available as per "Table 26-7. SYSBOOT Configuration Pins" in the TRM, you can pick one that is the easiest to rework/rewire your board to given your specific circuit.

    Then, if the "CCC..." sequence is not visible immediately, and only shows up after a really long time (just like your MMC activity when you boot from MMC), this points to a fundamental issue with the hardware. In this case a few things to check...

    Regards, Andreas

  • Hi, 

    I checked all of them in AM335x board bringup tips.

    "CCC..." sequence is visible immediately in UART0 first boot modes.

    When the board is connected trough JTAG, the code is stuck in a dead loop. 

    I attached am335x-boot-analysis report in the first question.

  • SY,

    SY Yoon said:
    CCC..." sequence is visible immediately in UART0 first boot modes.

    This looks like that the power/reset sequencing of the SoC should not be at fault if in UART0-first boot mode the 'CCC' gets output immediately without any delay.

    Do you see the same slow-to-start MMC1_CLK output behavior on other boards too? Or do you just have one board with this specific hardware setup?

    Can you post a schematic extract that shows all the connections between the SoC MMC1 peripheral interface and the external eMMC device, including any power and reset connections?

    Regards, Andreas