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.

关于am335x的GPMC和eMMC管脚复用的问题



各位工程师们:

你们好!

我现在开发的产品上,既要使用GPMC,又要使用eMMC加载启动

问题一:要想使用eMMC加载启动,eMMC是不是只能接在U7-T9的这组MMC1接口上, 或者接到MMC0上使用4bit模式?

问题二:eMMC接在U10-U13这组MMC1接口上能否加载启动?

问题三:我的系统上GPMC的数据线只需要用到8位,我能否只使用GPMC_AD[15:8]这高8位,低8位留作MMC1接口用?

或者有没有两全其美的方案,求指导。

  • 1. 对于eMMC的启动方式支持,如果是小于4GB容量的eMMC话,使用MMC0启动,如果是大于等于4GB,需要使用MMC1模式。对于MMC0和MMC1的解法,你可以参考TRM的26.1。7.5.8 Pins Used:

    2. 不可以,这组不在emmc1启动支持列表中。可以的参考上面。

    3. 不可以,nand和nor相关的8bit配置如下图所示,这个是我们支持的方式。

    我能想到的有下面两个可能的方案:

    1. 使用小于4G容量的emmc,接在mmc0上面,就能规避你说的这个问题。

    2. 如果你的eMMC卡只是想做为启动booting image存储设备,后续就不需要使用了。是可以在启动时,这些pin脚工作在mmc模式。这之后在系统读完启动image后,再通过pinmux将相关pin脚设置成为了gpmc模式,就可以使用gpmc上的设备了。

  • 看来只能接到mmc0上使用了,非常感谢!

  • 第三种方式可能是可以的,没测试过

    1、首先把GPMC接口配置成16bit方式

    2、把gpmc数据线的低8位定义成mmc模式

    3、传输数据的时候从gpmc的高8位输出,需要把要传输的数据移动8位

  •  

        刘工:你好!你说使用MMC0启动时,eMMC要小于4GB。

    问题一:是基于什么原因呢?是大于4G的MMC0接口根本不能识别还是只能操作4GB以内的空间?

    问题二:因为目前市场上的eMMC基本都是4GB以上的,小于4GB的也很难买到,我能不能先用UART和TFTP启动加载linux,然后把大于4GB的emmc格式化为小于4GB(比如3GB),我能否使用这3GB空间做启动用呢?这个方案可行吗?

    问题三:另外,我用8G的TF卡也测试过,是可以启动的,不知TF卡和emmc有啥区别?

  • 这个问题,是一个在启动过程中的限制。而且你所提到的这个问题,在AM335x的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.
    Note:
    • The ROM Code does not handle the card detection feature on card cage.
    • If MMC1 is used the GPMC interface is not usable, due to pin muxing options.
    • MMC1 supports sector mode without querying the card.

  • 用pinmux工具配置一下就一目了然了:

  • 你好:

           请问用pinmux配置了之后,具体到内核代码要到哪里去配置呢?

  • 您好!对于您说的为了能够使用gpmc就只能使用小容量的emmc作为启动介质。我想请教您一下:如果我事先将8G的emmc分区为2G的fat32作为启动镜像(满足了小于4G的要求),而把emmc剩余多余容量另分一个区作为数据存储用。能否避免这个问题?