AM625: Over- and undershoot on eMMC signals

Part Number: AM625
Other Parts Discussed in Thread: CSD

Hi

We have made a new product serie with the AM6254 microprocessor. As flash memory we have chosen an eMMC from Macronix, attached to the MMC0 channel on the AM6254.

During read from the eMMC we are seeing some over- and under-shoot on the data signals, where the values are just on or above the limits (Figure 7-1 in the AM625 datasheet) for the MMC0 pins.

The attached oscilloscope picture shows eMMC.Data3 measured as close to the AM6254 as possible.

 eMMC_DATA3 read from eMMC - Voltage levels, over-under shoot.png

 

The over shoot voltage level is measured up to 2.25 V, and under shoot level down to -0.34 V. The over and under shoot time is measued to totally 2.6 ns out of 10 ns period time.

So levels are just on / above limits. (High level: 1.8 V + 20% = 2.16 V; Low level: -0.36 V, Time 20% of 10 ns = 2 ns)  

How concerned should we be regarding the levels of the over- and under-shoot??

 

We have tried to lower the driver strength of the Macronix eMMC, but haven't succeded.

According to Macronix MX52LM08A11 datasheet the eMMC should support different driver strengths:

 

 
We are running HS-200 mode, so we would like to test the 0x2 (66 ohm) settings, instead of the default 0x0 (50 ohm).
 
As far as we read the JEDEC specification the driver strength should be set in the HS_TIMING [185] of the Extended CSD registers:


 
We have tried to change the settings of this register, but we haven’t succeeded.

We are using u-boot and in the device tree for the board in u-boot, we have changed the driver strength for the eMMC controller, just like U-Boot examples shows for the AM62xx processor.

We have used the mmc command in u-boot, but as far as I can see in u-boot 2026.01 version source code, there is no command to set the driver strength via the mmc command only read the status of it.

Do you have any example of how we can set the driver strength in the eMMC via u-boot?

 

Best regards

Niels Ole Jørgensen

DEIF A/S

  • Hello Niels Ole Jørgensen,

    Thank you for the query.

    Let me review the inputs and check internally.

    Regards,

    Sreenivasa

  • Hello Niels Ole Jørgensen,

    As i review the inputs, can you confirm the below 

    Could you share the schematic implementation for a quick check

    Can you confirm the probe point - near to the memory of the SOC 

    Can you also confirm the ringing is not influenced by probing  or ground connections (confirm you are using a short probe)

    Can you measure a similar waveform for any other peripheral and compare the waveform.

    Regards,

    Sreenivasa

  • Hello Niels Ole Jørgensen,

    Can you please answer the below additional query:

    What is the line impedance on their board? If it is 60ohms

    Regards,

    Sreenivasa

  • Hello Sreenivasa

    I will try to answer your questions

    Schematic snip of eMMC connections.

    Connection to the eMMC

    Connection to the AM6254:

    The signal is measured as close to the AM6254 as possible on the backside of the PCB at a via. The distance to the ball of the AM6254 is less than 2.5 mm.

    The signal is measured with an active probe, so the ringing is not caused by a long GND loop.

    Regarding a similar measurement the below signal is the same signal and measured at the same via, but with another manufacturer of the eMMC. (Unfortunately this manufacturer couldn't deliver the eMMC, due to the allocation situation on the memory marked.)

    The eMMC signals are routed with 50 ohm line impedance.

    Best regards

    Niels Ole

  • Hello Niels,

    Please expect that some delay in the response by Sreenivasa is possible.

    Thank you for your patience!

    Best Regards,

    Borislav Lazarkov

  • Hello Niels Ole Jørgensen,

    Thank you for the inputs and good to not that the results with an alternate memory.

    Let me check with the software experts if they have experience supporting of the eMMC configuration.

    I would assume you are also working with the memory supplier on the issue.

    Regards,

    Sreenivasa

  • Hi Niels,

    Do you have any example of how we can set the driver strength in the eMMC via u-boot?

    Reading through this thread, I am not sure I understand the request. Can you please clarify if you want to program the driver strength of the eMMC controller or the device? or to program something else?

  • Hi Bin Liu

    Sorry for the confusion.

    We want to program the driving strength of the eMMC chip.

    This should be done in the set in the HS_TIMING [185] register of the Extended CSD registers, but we haven't manage to program it.

    Best regards

    Niels Ole

  • HI Niels,

    I found the following instruction on internet.

    2. Direct Register Access (Advanced)
    If your U-Boot build includes the CMD_MMC_REG configuration, you can use the mmc reg suite for more direct access:
    • Read Registers:
      bash
      # Read all 512 bytes of the Extended CSD
      mmc reg read extcsd all
      
      # Read a specific byte at an offset
      mmc reg read extcsd <offset>
      
      Use code with caution.
    • Write Registers:
      The mmc swrite or generic mmc reg write (depending on your U-Boot version/patch level) can sometimes be used for specific fields, but most permanent changes (like partitioning GPPs) are one-time programmable and should be handled with extreme care.
    3. Verification
    After making changes, always verify the current state of the registers:
    • Detailed Card Info: Run mmc info to see current capacity, bus width, and boot partition status.
    • Raw View: Use mmc reg read extcsd all to inspect the full 512-byte array if your version supports it.