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.

eMMC boot on AM335x

All information published  by TI (AM335x RefMan, datasheet, and Wiki eMMC boot, TI EVM Guide) only make references about booting from eMMC memory using the MMC0 or MMC1 interfaces.

There is no mention of booting from MMC2.

Are the eMMC boot configurations for MMC0 and MMC1 only based on TI's specific EVM design implementation and the associated Linux kernal configurations and NOT related to some internal TI AM335x deign limitation.

Based upon all docs that I've read, it appears that the only limitation to utilizing the MMC2 port for eMMC memory booting, is an update to the kernal boot code is needed to add support for MMC2 booting.  Please confirm if this is the case.

Regards,

-Jaden

  • The ROM code of the AM335x can boot from the interfaces detailed in the AM335x Technical Reference Manual (SPRUH73) in Chapter 26, Table 26-7. 

    MMC2 is not a supported interface to boot from initially.  This doesn't mean you can not connect a eMMC memory on it, but that particular interface will not be booted from.  Another non-volatile storage device on a supported interface will be required for the initial code which the ROM code in the AM335x can access.

    Below is a caption from the TRM section mentioned above.

  • Brandon,

    Thanks for quickly responding to Jaden on this. 

    I am in agreement.  The AM335x only offers MMC0 or MMC1 per the TRM and the hardware design wiki:

     

    Available Bootmodes on AM35x and AM335x
    AM35x AM335x Feature Description
    Y Y NOR This mode allows booting from XIP booting devices, such as NOR flash memories.

    For AM35x, NOR Flash (up to 1 Gb, or 128M bytes) should be connected to the GPMC peripheral on GPMC_nCS0. GPMC_nCS0 is mapped to address 0x0800_0000. A data bus width of x16 is supported.  The GPMC is clocked at 48MHz.

    For AM355x, NOR Flash (up to 1 Gb, or 128M bytes) should be connected to the GPMC peripheral on GPMC_CSn0. GPMC_CSn0 is mapped to address 0x8000_0000. A data bus width of x8 or x16 is supported.  The GPMC is clocked at 50MHz.

    Y Y NAND This mode starts downloading code from an NAND memory.

    For AM35x, NAND flash (from 64Mbit, or 8Mbyte) from should be connected to the GPMC peripheral on GPMC_nCS0. GPMC_nCS0 is mapped to address 0x0800_0000. A data bus width of x8 or x16 is supported.  The GPMC is clocked at 48MHz. 

    For AM335x, NAND flash (from 512Mbit, or 64Mbytes)should be connected to the GPMC peripheral on GPMC_CSn0. GPMC_CSn0 is mapped to address 0x8000_0000. A data bus width of x8 or x16 is supported.  The GPMC is clocked at 50MHz. 

    N Y SPI This mode starts downloading code from an SPI EEPROM or SPI Flash.

    For AM335x, the external SPI device should be connected to the SPI0 chip select 0 signal (SPI0_CS0).

    Y Y UART In this mode, the UART sends a BOOTME request to the UART peripheral and waits for a response along with code from a host processor.

    Both AM35x and AM335x must be booted using a baud rate of 115200. AM35x can only boot from UART3. AM335x can only boot from UART0.

    Y Y MMCSD This mode starts booting code from an MMC/SD Controller.

    For AM35x, the MMC/SD cards should connected to either MMC1 or MMC2. 1.8V or 3.3V I/O voltage is supported on MMC1 and MMC2.  (External transceiver mode on MMC2 is not supported.) The supported clock frequencies are up to 400 kHz (identification mode) and 20 MHz (data transfer mode).

    For AM335x, the MMC/SD cards should connected to either MMC0 or MMC1. 1.8V or 3.3V I/O voltage is supported on MMC0, and only 1.8V I/O voltage is supported on MMC1. The supported clock frequencies are up to 400 kHz (identification mode) and 10 MHz (data transfer mode).

    N Y EMAC This mode starts booting code from the EMAC port.

    For AM335x, EMAC boot uses the CPGMAC port 1 of the device.

    Y N DiskOnChip In this mode, the DiskOnChip is connected just like a regular NOR device.
    Y N HS USB In this mode, the ROM code boots from a USB interface.
  • What about the phrase in the Technical Reference Manual (SPRUH73I):

    26.1.7.5.4 Initialization and Detection
    The ROM Code initializes the memory device or card connected on MMC interface using the standard
    High-Voltage range (3.3 V).

    In the table shown in the answer above booting an AM335x using MMC0-1 is supported for both 1.8V and 3.3V.

    Which is right?

  • Thomas, that statement in the TRM is misleading and will be changed.  You can boot eMMC from either MMC0 or MMC1, considering the limitations outlined in the TRM:

    26.1.7.5.2 System Interconnection
    Each interface has booting restrictions on which type of memory it supports: -
    • MMC0 supports booting from the MMC/SD card cage and also supports booting from
    eMMC/eSD/managed NAND memory devices with less than 4GB capacity.
    • MMC1 supports booting from eMMC/eSD/managed NAND memory device with 4GB capacity or
    greater.
    The restriction is a result of many eMMC devices not being compliant with the eMMC v4.41 specification.
    If you have the need to boot from two different card cages, many MMC/SD cards will boot from MMC1, but
    for maximum compatibility only MMC0 should be used to boot from the card cage. Similarly for maximum
    compatibility, booting from eMMC/eSD/managed NAND should only be performed on MMC1.
    Note that the above restrictions only apply to booting from each port. Drivers can be written for either port
    to support any desired interface.

    Regards,

    James

  • Thank you James for the answer. It covers my question fully, and I'm now satisfied that my design is fine as it is.

    Thomas

  • Hi Walter,
    I am now design a board with AM335X. And now I find a serious concern in the MMC1 I/O voltage support for AM335X, could you please help me to solve this problem? in your apply that implies 1.8V should used as follows,

    For AM335x, the MMC/SD cards should connected to either MMC0 or MMC1. 1.8V or 3.3V I/O voltage is supported on MMC0, and only 1.8V I/O voltage is supported on MMC1.

    In the table shown in the answer above booting an AM335x using MMC0-1 is supported for both 1.8V and 3.3V.

    Which one is correct? thank you very much,

    Best regards,
    Paul