Newsroom > Blog
Embedded MultiMediaCard (eMMC) provides reliable non-volatile storage for FPGA-based systems, seamlessly overcoming on-chip memory limitations. With its highly integrated design, generous capacity, cost-effectiveness, and ease of use, eMMCs provide a storage experience comparable to HDDs or SSDs—purpose-built for embedded applications.
In FPGA-based systems, eMMCs can perform these functions:
eMMCs are not just a standalone storage chip; they are an integrated solution composed of three key internal components:
Efinix provides users with an eMMC host controller module based on the eMMC 5.1 specification along with a corresponding Linux driver. To facilitate the use of eMMCs in system designs, you can use the GitHub embedded system solution platform for the Ti375 C529 development board as starting point.
Note that, the default platform design does not include a bootloader, so you will need it to boot Linux. Refer to bootloader for directions on how to stich the bootloader into the High-Performance Sapphire SoC. After that you need to compile the project and get the bitstream. The last essential step is to build your embedded Linux components, refer to eMMC on how to build your own eMMC enabled Linux image.
The eMMC host controller module supports the following speed specifications with data rates up to HS400 mode.
| Mode Name | Data Rate | I/O Voltage | Bus Width | Frequency | Theoretical Max Data Transfer (x8 Bus Width) |
|---|---|---|---|---|---|
| HS200 | Single | 1.8 V, 1.2 V | 4, 8 | 0 - 200 MHz | 200 MB/s |
| HS400 | Dual | 1.8 V, 1.2 V | 8 | 0 - 200 MHz | 400 MB/s |
Before writing the Linux system files to eMMC, the following steps are required:
To facilitate these operations, the RISC-V processor must first boot the system from an SD card.
The detailed procedure for writing the Linux system to eMMC is shown in the figure below:


The procedure for loading the Linux system from eMMC is shown in the figure below:

As shown in the following figure, after the Linux system has finished loading and entered the operating system, the lsblk command is executed, showing that the root filesystem is mounted on the second partition of the eMMC.

After successfully loading the Linux system on the FPGA, a fully functional embedded development environment is available, capable of running various applications and leveraging a rich toolchain for development, supporting a wide range of needs from basic development to high-performance computing.
Efinix provides an eMMC-based Linux system boot solution, enhancing the Efinix RISC-V ecosystem and making it easier for users to run Linux on RISC-V. At the same time, eMMC as the boot medium for Linux offers high reliability, ease of use, and strong performance. Its integrated design simplifies storage management, and through a standardized interface that works seamlessly with the RISC-V architecture, it supports the stable operation of the Linux system.