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.

DRA724: Unable to read/write SD cards greater then 32GB

Expert 1940 points
Part Number: DRA724

Does DRA72x SD controller support SDXC cards( i.e. SD greater than 32GB)?

Are there any hardware limitations?

-Girish

  • How is the card formatted? When you get a card 64GB or larger, they generally are formatted as ex-FAT out of the box. This is likely a software issue related to file system support.
  • Yes, that is true. But I explicitly formatted the card as FAT32 and I was able to mount the card but when I started writing to the SD card, I started seeing these Linux kernel error messages and the write failed.
    mmcblk3: error -110 sending status command, retrying
    mmcblk3: error -110 sending status command, retrying
    mmcblk3: error -110 sending status command, aborting
    FAT-fs (mmcblk3p1): unable to read inode block for updating (i_pos 957957)

    I am looking into kernel driver as well, but wanted to make sure if there is nothing that limits on the hardware side.
  • There shouldn't be any issue related to 64GB cards. What Linux version are you using? Are reads working ok? Only writes are a problem?
  • Currently I have Linux kernel version 3.14 running.
    No, it looks like both reads and writes are not working consistently. For instance, I was able to both write and read a smaller sized file(like a 1kB .txt file) once and then when I tried to write a larger sized file of around 2.4GB, that is when I started seeing the above kernel error messages all over dmesg.
    I will try using Linux kernel version 4.4 and see if it resolves this behavior.
    But if there is no known limitation with hardware. That is good to know.

    Thanks,
    Girish
  • Also, I found out this question someone posted sometime back and particularly the final suggested answer states that SDXC is not supported on J6 MMC/SD controller?!

    e2e.ti.com/.../1980363

    Could you once again clarify if that is the case here?

    -Girish
  • SDXC requires exFAT support. We don't support exFAT. That's why it was the first thing I asked. We can handle writing to a 64GB card.

    Have you pulled all updates from the ti-linux-3.14.y branch?

    git.ti.com/.../host
  • In addition to Brad replies, I would mention that DRA72x TRM provide the info from HW perspective:

    chapter 25 eMMC/SD/SDIO
    Table 25-1. Standard 4.5 Supported Features
    Feature: Support density
    Support: No hardware limitation for density support
    Limitation: Limitation can come from file system (32 GiB).

    Regards,
    Pavel

  • Yes, I have looked at this table. But this is for features supported in MMC spec v4.5. I was not sure these apply as is for SD spec v3.01 as well. Do they?
  • I don't think I have all the updates from ti-linux-3.14 branch. Are there any related changes that might effect this behavior?
    I could look through the latest commits and see if I can pick any of them.

    -Girish
  • Girish Tummala said:
    Yes, I have looked at this table. But this is for features supported in MMC spec v4.5. I was not sure these apply as is for SD spec v3.01 as well. Do they?

    You are right, the table is for MMC spec v4.5

    Regarding DRA72x SD HW support, it support the below SD card standard:

    - Full compliance with SD command/response sets as defined in the SD Physical Layer specification v3.01
    - Full compliance with SD Host Controller Standard Specification sets as defined in the SD card specification Part A2 v3.00

    v3.01 support Secure Digital eXtended Capacity (SDXC) cards, up to 2 TB (2048 GB), compared to a limit of 32 GB for SDHC cards in the SD 2.0 specification. Thus DRA72x SD HW support up to 2 TB SD cards.

    But here comes the SW driver limitation:

    Regards,
    Pavel

  • Can you try cherry-picking the latest MMC-related commits from the tree I referenced?

    One other set of potentially important commits relates to the dra72x-evm.dts file:

    git.ti.com/.../dra72-evm.dts

    I expect that at some point you forked your own dts and so you were not seeing updates to dra72-evm.dts. There is a bunch of info in there related to the IOdelay settings for the MMC ports. You may want to check that. If it's wrong it could result in a lot of errors with reading and/or writing.

    Also, can you try some writes with something a little smaller than a 2.5GB file? For example, does a 100MB file work? How about a 1 GB file? I think FAT32 is supposed to support file sizes up to 4 GB. However, it seems like 2GB is a pretty common threshold for seeing issues, so it would be good to test something smaller to be sure the error doesn't somehow relate to file size.