Modern embedded systems often need both fast working memory and non-volatile storage.
A typical design may use a separate LPDDR memory device and an eMMC storage device. An eMCP (embedded Multi-Chip Package) combines these memory technologies into a single package, reducing board area and simplifying system integration.
For this project, I am exploring the Samsung KMFN60012B-B214, an eMCP device that combines 8GB eMMC 5.1 storage with 8Gb LPDDR3 DRAM. Available component references identify the device as a 221-FBGA package, with LPDDR3 operating at up to 1866 Mbps.
The interesting part is not simply reading the datasheet.
The real engineering challenge is understanding how this type of memory is integrated into an embedded system.
Why eMCP?An eMCP can save PCB space because multiple memory components are integrated into one package.
For compact embedded devices, this can be useful when PCB area is limited.
The KMFN60012B-B214 combines:
- 8GB eMMC 5.1
- 8Gb LPDDR3 DRAM
- 1866 Mbps LPDDR3 speed
- 221-FBGA package
The combination makes this device interesting for embedded-system engineers working on compact computing platforms.
Project GoalThe goal of this project is to create a practical development and test platform around the KMFN60012B-B214.
The project focuses on four areas:
- Hardware integration
- eMMC interface validation
- Linux storage detection
- Storage performance measurement
The LPDDR3 side is treated as part of the application processor's memory subsystem and requires a compatible memory controller and validated routing.
This is important because an eMCP is not simply a larger eMMC chip.
Hardware ArchitectureThe simplified system architecture is:
+---------------------------+
| Application SoC |
| |
| LPDDR3 Memory Controller |
| eMMC / MMC Controller |
+-------------+-------------+
|
+-------------+-------------+
| |
LPDDR3 Interface eMMC Bus
| |
| |
v v
+-----------------------------------------+
| Samsung KMFN60012B-B214 |
| |
| +-----------------------------+ |
| | 8Gb LPDDR3 DRAM | |
| +-----------------------------+ |
| |
| +-----------------------------+ |
| | 8GB eMMC 5.1 | |
| +-----------------------------+ |
| |
| 221-FBGA Package |
+-----------------------------------------+
+---------------------------+
| Application SoC |
| |
| LPDDR3 Memory Controller |
| eMMC / MMC Controller |
+-------------+-------------+
|
+-------------+-------------+
| |
LPDDR3 Interface eMMC Bus
| |
| |
v v
+-----------------------------------------+
| Samsung KMFN60012B-B214 |
| |
| +-----------------------------+ |
| | 8Gb LPDDR3 DRAM | |
| +-----------------------------+ |
| |
| +-----------------------------+ |
| | 8GB eMMC 5.1 | |
| +-----------------------------+ |
| |
| 221-FBGA Package |
+-----------------------------------------+The key point is that the LPDDR3 and eMMC are different interfaces, even though they are contained in the same physical package.
Schematics and Circuit DiagramsThe following diagram is a functional architecture diagram rather than a complete ball-level schematic. The exact KMFN60012B-B214 ball map, power domains, timing parameters, and PCB escape routing must be taken from the manufacturer documentation available to the design team.
The following diagram is a functional architecture diagram rather than a complete ball-level schematic. The exact KMFN60012B-B214 ball map, power domains, timing parameters, and PCB escape routing must be taken from the manufacturer documentation available to the design team.
Functional eMMC schematic
APPLICATION PROCESSOR
+----------------------+
| |
| eMMC Host |
| |
| CMD -----------------+--------+
| CLK -----------------+--------+------+
| DAT0 ----------------+--------+ |
| DAT1 ----------------+--------+ |
| DAT2 ----------------+--------+ |
| DAT3 ----------------+--------+ |
| DAT4 ----------------+--------+ |
| DAT5 ----------------+--------+ |
| DAT6 ----------------+--------+ |
| DAT7 ----------------+--------+ |
| | |
+----------------------+ |
|
v
+------------------------+
| Samsung KMFN60012B-B214|
| |
| eMMC 5.1 |
| |
+------------------------+PCB Design Considerations1. BGA escape routingThe 221-FBGA package requires careful escape routing.
The PCB should be designed according to the actual package drawing and manufacturer's recommended land pattern.
2. eMMC signal integrityKeep the eMMC clock and data routing controlled and consistent.
Pay particular attention to:
- CLK routing
- DAT[0:7] routing
- CMD routing
- return paths
- via count
- impedance
- trace length matching
Do not treat the memory supply as an afterthought.
Use appropriate local decoupling capacitors close to the device and verify the actual power requirements from the manufacturer's documentation.
4. LPDDR3 routingLPDDR3 is considerably more demanding than a low-speed peripheral interface.
The LPDDR3 interface requires:
- controlled impedance
- appropriate length matching
- clean reference planes
- careful via selection
- appropriate power distribution
- SoC-specific timing constraints
Therefore, the exact LPDDR3 routing rules should come from the SoC vendor's hardware design guide and the Samsung memory documentation.
Software TestingAfter assembling the board, the first step is to confirm that Linux can detect the eMMC device.
Run:
lsblkYou should see an MMC block device if the host controller and eMMC interface are configured correctly.
For example:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 7.3G 0 disk
├─mmcblk0p1
│ 179:1 0 512M 0 part /boot
└─mmcblk0p2
179:2 0 6.8G 0 part /Do not copy this output as measured project data. It is an example of the expected Linux representation; actual usable capacity and partition layout depend on the system configuration.
Check eMMC InformationInstall mmc-utils:
sudo apt update
sudo apt install mmc-utilsThen:
sudo mmc extcsd read /dev/mmcblk0This allows you to inspect the eMMC's EXT_CSD information.
You can save the result:
sudo mmc extcsd read /dev/mmcblk0 > kmfn60012b_extcsd.txtThis is particularly useful because you can compare the actual device configuration with the nominal product specifications.
Storage BenchmarkUse fio for repeatable storage testing.
Install it:
sudo apt install fioExample read test:
sudo fio \
--name=seqread \
--filename=/tmp/eMMC-test \
--size=512M \
--rw=read \
--bs=1M \
--direct=1 \
--iodepth=16 \
--runtime=30 \
--time_basedExample sequential write test:
sudo fio \
--name=seqwrite \
--filename=/tmp/eMMC-test \
--size=512M \
--rw=write \
--bs=1M \
--direct=1 \
--iodepth=16 \
--runtime=30 \
--time_basedRemove the test file afterward:
rm -f /tmp/eMMC-testImportant: run these tests on a dedicated test partition or disposable filesystem. Do not benchmark a mounted production/root filesystem with destructive write patterns.
A More Useful Benchmark ScriptYou will probably find a reusable script more useful than several individual commands.
emmc_benchmark.sh#!/bin/bash
set -e
DEVICE="/dev/mmcblk0"
TESTFILE="/tmp/emmc-testfile"
echo "======================================"
echo " Samsung KMFN60012B-B214 eMMC Test"
echo "======================================"
echo
echo "[1] MMC devices"
lsblk
echo
echo "[2] MMC controller information"
cat /sys/class/mmc_host/mmc0/mmc0:*/name 2>/dev/null || true
echo
echo "[3] EXT_CSD information"
if command -v mmc >/dev/null 2>&1; then
sudo mmc extcsd read "$DEVICE"
else
echo "mmc-utils is not installed."
fi
echo
echo "[4] Sequential read benchmark"
fio \
--name=seqread \
--filename="$TESTFILE" \
--size=512M \
--rw=read \
--bs=1M \
--direct=1 \
--iodepth=16 \
--runtime=30 \
--time_based
echo
echo "[5] Sequential write benchmark"
fio \
--name=seqwrite \
--filename="$TESTFILE" \
--size=512M \
--rw=write \
--bs=1M \
--direct=1 \
--iodepth=16 \
--runtime=30 \
--time_based
rm -f "$TESTFILE"
echo
echo "Benchmark completed."Run:
chmod +x emmc_benchmark.sh
sudo ./emmc_benchmark.shWhat I LearnedThe most interesting lesson from this project is that an eMCP is more than just an eMMC device in a smaller package.
The KMFN60012B-B214 combines two memory technologies in one package:
KMFN60012B-B214
|
+------------+------------+
| |
v v
8GB eMMC 5.1 8Gb LPDDR3
| |
v v
Non-volatile Working memory
storage for the SoCThe eMMC side can be explored using Linux MMC tools and storage benchmarks.
The LPDDR3 side, however, is much more tightly coupled to the application processor and PCB implementation.
This makes eMCP particularly interesting for engineers designing compact embedded systems.
Why This Matters for Embedded DesignersFor a prototype, using a ready-made development board is usually much easier.
But when moving toward a production design, board area, component count, power consumption, memory bandwidth, and BOM cost all become important.
An eMCP can be attractive when a product needs:
- Compact PCB dimensions
- Integrated DRAM and storage
- Embedded Linux
- Local non-volatile storage
- Reduced component count
- High-density memory integration
The trade-off is that BGA assembly and high-speed memory routing become significantly more demanding.
Possible ApplicationsThe project can be positioned around applications such as:
Embedded Linux systemseMMC can be used as boot and mass storage for embedded Linux systems.
IoT gatewaysA compact memory subsystem can help reduce PCB area in gateway designs.
Industrial controllersEmbedded storage can be used for operating systems, configuration files and data logging.
Smart displaysThe combination of DRAM and eMMC is relevant to compact multimedia and HMI platforms.
Consumer electronicseMCP technology has historically been used in space-constrained embedded products such as smartphones and tablets.



_4YUDWziWQ8.png?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)

_Ujn5WoVOOu.png?auto=compress%2Cformat&w=40&h=40&fit=fillmax&bg=fff&dpr=2)

Comments