While using
STUart for recovering files I sometimes got bit errors. I thought about using ECC/CRC field for a correct data transmission, but I don't know which algorithm does it use.
Does someone know how this field (8 bytes after every 512 bytes sector) is computed?
If no one knows is someone with working ST F3 driver wiling to generate the testing data?
All I know know is (from recovering my
half dead drive):
- Zeroed sector has these 8 bytes zeroed too
- It seems that last 6 bytes are just copy of data of the last bytes of the sector
- Tried all polynoms and initial data values for CRC16 and for three sectors there was no match
- If there are only 2 bytes valid (and last 6 is copypaste), it seems to be too few for ECC, for example 24 bit golay codes have only 12 bits for data (rest 12 bits are correction information) and can only correct errors of 3 bits
For someone who is willing to help: try to write sectors of single bit = "1" on different positions (ideally all positions in first 32bits of a sector, within last 6 bytes of a sector) and read it back by using F3 terminal commands and check for that ECC/CRC field. With enough samples it should be possible to reconstruct the ECC/CRC algorithm. Sectors can be written from an OS (OS LBA can be converted for F3 terminal commands).