Hi! friends,
Could anyone share their experience on the speed of SD access speed on the existing SD card ports on i.MX6 Sabresd? It seems I could only achieve 19MB/s. The output is
========
/dev/mmcblk1: (Local UHSI ultra high speed SD card)
Timing buffered disk reads: 58 MB in 3.00 seconds = 19.31 MB/sec
========
Is there any method I could tune the speed to a more reasonable one? I put a Ultra High Speed SD card (Transcend) with a 85MB/s listed on the package; however, I could only get 19.31 MB/s. If I use a stand SD card,it achieves 14MB/s. Is this normal?
Vincent
Thanks! We shall take a closer look at the SABRE-AI board.
Hi! Leo,
In that case, if we want to achieve UHS-I speed on our i.MX6 design, should we use the SD card circuitry on Sabre-AI instead? Could we maintain the support of XD on the same card slot as well?
Vincent
Hi! Leo,
I checked the circuitry on Sabre-AI and discovered it may requires a special version of i.MX6 with a change of internal FUSE content.
============
CPU Card Identification for Software
MX6 fuses OCOTP_GP1[15:8]
SABRE-AI rev C = 0x14
============
Does that mean we could not use this type of circuit with standard i.MX6 in our design?
Vincent
Vincent, I will post your question internally. I don't have a answer right now.
Hi! Leo, I shall wait for your info. Thanks a lot!
Hello Vincent,
Yes, you will need implement the Auto Board circuit. This works with the I.Mx6 with not auto qualification too.
Hi! Tania,
Could we apply the same circuitry on all four SDIO ports on SABRESD board of i.MX6 EVB? Could this be used with the consumer grade of i.MX6 cpu? I was suspecious about this is because the following comments on the SABRE-AI board schematic
=============
CPU Card Identification for Software
MX6 fuses OCOTP_GP1[15:8]
SABRE-AI rev C = 0x14
=============
catches my attention. If we design such a circuit with the standard i.MX6Q or i.MX6D, then should we apply some FUSE commands on the CPU first? Could you also provide the mechanism of this circuit so we could know how to modify our SD driver code? Thanks!
Vincent
Vincent,
This is the IOMUX pin configuration you will see on the reference manual. The Vselect option is implemented to USDHC-3 and USDHC-4 only. Yes, you will implement this solution on I.Mx6Q/D consumer grade. If you check the consumer datasheet you will found one reference on chapter 4.11.4.4.
Hi! Tania,
Thanks! The info is quite useful! We shall start our design based on SABRE-AI board instead.
Vincent
Only one comment, on the Sabre AI schematics we add a comment on SDa_RST_B(SD3_RST) circuitry. Take on consideration it.
Vincent, only Sabre AUTO boards support this type of cards. These have a circuit which does a voltage drop (from 3.3 to 1.8 V) so SD with behave as UHS-I. Last time I test on a 95MB/s card, I observed write speeds around 50MB/s. I tested on a 3.0.35 kernel version.
Thanks for the clarification Leonardo.
Hi! Eric,
Thanks! I just wonder how we could achieve the maximum I/O throughput when I plug in a UHS-I card into the slot. Is there any hardware change we could apply in order to achieve an even higher speed?
Vincent
Hi Vincent,
I believe there are patches in the more recent kernels (3.10+) to support higher speeds and DDR (transfer on both edges of the clock), but the last time I tested, main-line Linux didn't support this for either UHS cards or eMMC on i.MX6. You might want to check the linux-arm-kernel mailing list for patches to enable it.
Note that the higher clock rates require switching the voltages on the SD card interface, which is only supported on some designs. None of our boards currently support this, but I believe the SABRE-SD does, through the Freescale PMIC.
Hi Vincent,
This is about right because the current clocking of the SD cards is 50MHz.
I'm seeing ~18.5 MiB/s read speeds on a SanDisk USDHC card, and
~46 MiB/s on eMMC (8-bit bus width), and
~100 MiB/s on a SATA SSD (Crucial 32 GB).