Hi,
We've been testing the behavior of the Background Operations (BKOPS) feature on our eMMC, specifically focusing on the BKOPS_EN register. Since MANUAL_EN (bit 0) is a One-Time Programmable (OTP) register, we followed a step-by-step approach to testing:
- Enabling only AUTO_EN (bit 1)
- Enabling both AUTO_EN (bit 1) and MANUAL_EN (bit 0)
- Enabling only MANUAL_EN (bit 0)
Here’s an example of the register state when only MANUAL_EN is enabled:
~ # mmc extcsd read /dev/mmcblk2 | grep BKOPS
Background operations support [BKOPS_SUPPORT: 0x01]
Background operations status [BKOPS_STATUS: 0x00]
Enable background operations handshake [BKOPS_EN]: 0x01
We're monitoring the CLK signal, and we noticed that the clock stops when the eMMC is idle. However, we do see activity on the clock when forcing operations, such as writing to memory or reading registers using mmc-utils.
Since BKOPS relies on an active clock, we are concerned that automatic background operations will not execute correctly if the clock is stopped during periods of inactivity. This is particularly critical for data retention at high temperatures, as eMMC devices do not have good data retention and we rely on periodic refresh cycles to maintain data integrity.