2015-03-05 3 views
0

В настоящее время я адаптирую устройство Win CE6 к новой микросхеме nand flash. Новый nand имеет более высокие требования ecc (4 бит/512 байт) и поддерживает вычисления микросхемы ecc.Использование nandflash с оборудованием ecc в Win CE6

Файловая система Microsoft Flash записывает в сектора без их стирания. Это происходит при записи информации о состоянии в SectorInfo-> wReserved2. Здесь только одно биты перевернуты до нуля.

Проблема заключается в том, что встроенная микросхема вычисляет ecc также, когда файловая система записывает на wReserved2. Но он не может правильно записать этот ECC на устройство, поскольку для этого потребуется, чтобы сектор был удален, что файловая система не делает.

В запасной части страницы также есть ecc-незащищенные области, 15 байт на страницу. Я решил сохранить жизненно важные 6 байтов SectorInfo дважды (т. Е. WReserved2 для статуса сектора и dwReserved1, который является номером логического сектора).

Но когда в одной из этих двух копий встречается biterrors, я все еще не могу понять, какой из них правильный.

Итак, мои вопросы:

  • любые идеи о том, как решить эту проблему, используя незащищенные 15 байт?

  • может флэш-файловая система будет настроена на поддержку «стереть до появления информации о состоянии записи»

  • любой другой подход к этому вопросу?

Заранее благодарим за любую помощь.

С уважением, Тим.

ответ

0

Решено. Хранится dwReserved1 дважды (каждый с битом четности, поскольку он записывается только один раз при инициализации сектора). Хранится wReserved2 три раза (поскольку бит четности здесь нельзя применить - флэш-файловая система записывает в wReserved2 три раза без стирания сектора, т. Е. Переворачивает отдельные биты). Если 2 копии идентичны, они считаются правильными.