eMMC 5.1 Middleware

Hello,

I connected an eMMC 5.1 memory of type KLMAG1JETD-B041 to a XMC4700 Relax-Kit evaluation board. Wehn I call fformat() or fmount() from the file system API, the functions return fsMediaError. I am using an SD-Card adapter to connect it. The memory ist working when connected to a PC. I tried a FAT32 formatted memory and a blank memory. Does the Middleware (v7.16)  file system support eMMC devices?

Best Regards,

Stephan

  • Talking to our specialist, I received the confirmation that the FileSystem library (valid for any MW version) uses eMMC features that are defined in the eMMC JEDEC Standard 4.41 and below.

    These Standards are backwards compatible; hence, any device that supports eMMC 5.1 should work, but - by now - new features will not yet be supported.

    Currently, the most notable limitation is that the FileSystem does not yet support switching to 1.8V signalling, hence it supports a maximum transfer clock of 50MHz.

    BTW, we assume that you're trying to use eMMC via SD card socket. That is ok and should work.


    Any closer comment on your local settings requires opening a Support Ticket (registration required):
       https://www.arm.com/support/contact-support 

  • Thank you for the support,

    I have to do some hardware testing to find the cause. I will give feedback then. Good to know, it's not related to the middleware driver. Maybe I have to try middleware v8 too.

    Best Regards,

    Stephan

  • Hello,

    today I upgraded to middleware v8 and did some testing. The initialization of the eMMC card still fails. In the driver function mc_native_init() I did some modifications. After switching to pre-boot and commenting of sending the CMD41 and CMD55, the initialization continues until the ECSD register is read. The driver receives the 512 bytes of data, but the content is corrupted.

    I tested the same card on a beagleboneblack and the eMMC card is working properly.

    Is there any eMMC compatibility list available? Which eMMC types are tested successfully?

    Best Regards,

    Stephan

  • I would first check driver configuration and eMMC reset conditions. You say that you're trying to use eMMC via SD card socket? Did you also try SD card? Does it works? Because if it does, eMMC should also work out of the box.

  • Hello Vladimir,

    thank you for the advice. The SD-Card is working out of the box. The eMMC does not work, but it does work on other devices, not using this Middleware. So far it looks like the driver is not compatible to the JEDEC specification. It is sending application commands to the eMMC card, which does not respond anymore. After commenting theses lines, the eMMC responds to the CSD command but ESCD command fails, because of data corruption.

    Best Regards,

    Stephan

  • Hello,

    mounting of the Samsung KLMAG1JETD-B041 eMMC card is working now. I can read and write files.
    It's quite possible, that this behaviour is specific for this card.

    I made changes in the function mc_native_init() in fs_mc_mci.c:
    - Do not send command CMD0
    - Do not send command CMD8
    - Do not send Command CMD41
    - Send command 0xFFFFFFFA (pre-boot state)
    - Send CMD0 command
    - Before sending CMD8 (ECSD), increase the bus speed to 25MHz

    Best Regards,
    Stephan

  • Thank you for coming back with the solution to the problem. I'm unsure why this workaround is required, would need to dig deeply into SD/eMMC specifications as usually eMMC should just work. The device identification procedure in mc_native_init should not cause issues even though it first tries to identify SD card and is therefore sending commands that eMMC does not understand. Especially because device datasheet claims full backward compatibility. Will investigate.

    Thanks again.