Anyone here knowledgeable about eMMC memory?
I have a high reliability application where there is concern about
memory corruption. What would happen if I changed the ECC field in the
eMMC's Card Specific Data (CSD) register from the default no ECC to the >optional BCH(542,512) encoding? Would I still be able to write/read new >values to the eMMC normally with the eMMC internally protecting the
contents with BCH ECC at the cost of reduced memory capacity, or would a >special driver on the host be needed to encode/decode ECC reads/writes?
As I read an older version of the JEDEC standard, this field tells the
host whether it needs to implement its own ECC logic in order to make
sense of what's on the card (and how to update the data without
corrupting it).
The eMMC may implement its own internal error-detection or
error-correction codes. If so, these seem to be independent of the host-implemented ECC which is indicated by the CSD register.
It doesn't look to me as if changing this field has any effect on the
card's internal operation.
Thanks Dave. Do you have a pointer to that JEDEC spec? I've been going
off of JESD84-B50.
One thing that puzzles me is if this bit is just an indication to the
host that it has to implement its own ECC logic, why would my JEDEC spec
call out "BCH(542,512)" encoding? The JESD84-B50 also says things like:
"The shortened BCH (542,512) code was chosen for matching the
requirement of having high efficiency at lowest costs."
and
"As the ECC blocks are not necessarily byte-aligned, bit stuffing is
used to align the ECC blocks to byte boundaries. For the BCH (542,512)
code, there are two stuff bits added at the end of the 542-bits block, >leading to a redundancy of 5.9%."
Here's how I understand it. ...
Here's how I understand it.
Basically, this field is just an format announcement - it tells you
(the host) what's on the card, and what the conventions are for
accessing it. Remember that the data may have been put onto the card
by a different host that the one which is attempting to access it (e.g.
think of eMMC modules being pre-formatted with a factory image, and then shipped to a customer and installed on customer-built boards).
Would you have any thoughts on implementing a eMMC BCH host driver?
I believe would first need to write to the CSD register to set the ECC
bit.
On 4/26/2022 11:21 AM, Dave Platt wrote:
Here's how I understand it.
Basically, this field is just an format announcement - it tells you
(the host) what's on the card, and what the conventions are for
accessing it. Remember that the data may have been put onto the card
by a different host that the one which is attempting to access it (e.g.
think of eMMC modules being pre-formatted with a factory image, and then
shipped to a customer and installed on customer-built boards).
On 4/26/2022 2:15 PM, Buzz McCool wrote:
Would you have any thoughts on implementing a eMMC BCH host driver?
I believe would first need to write to the CSD register to set the ECC bit.
Pondering this for a while, if the ECC field is just an format
announcement, and my eMMC device is soldered to my board, there's really
no reason for me to need to set the ECC field as there's only one host accessing the eMMC device. The host should know how it is storing data
on the eMMC device soldered to it.
Note that my research indicated though SD Cards are very similar to
eMMC, SD cards do not have an ECC field.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 231 |
Nodes: | 16 (3 / 13) |
Uptime: | 106:24:23 |
Calls: | 4,951 |
Files: | 11,523 |
Messages: | 3,984,610 |