Сообщение от ErikPshat
Немного стоит уточнить понятия страниц, секторов и блоков.
...[*]1 блок = 8 страниц или 32 сектора, конечно же вместе с техническими данными. 16384 +512 = 16896 байт или 16,5 килобайт. Это минимальное значение, с которым должен уметь работать контроллёр (чтение/запись), используемый в данной области применения.
|
Немного поправлю, чтобы не сложились ложные представления:
микросхема -
HY27UH08AG5M
ссылка на datasheet -
http://www.alldatasheet.com/datashee...7UH08AG5M.html
BLOCK SIZE
- x8 device: (128K + 4K spare) Bytes
|
Высчитаем размер блока, как минимальной единицы манипулирования данными:
Block size= 128*1024+4*1024= 135 168 байт
т.е. пишем и читаем полезными кусками данных по 128 Кбайт.
Т.о. именно для этой микросхемы размер блока 64 страницы памяти.
Сообщение от ErikPshat
Но самая главная проблема - именно в этих коррекционных 16-ти байтах, которые записаны в конце каждого сектора и подтверждают его целостность. А так как мы заменяем ID номер (фактически 4 уникальных байта) в определённом секторе, не пересчитывая заново контрольную сумму изменившихся данных, отсюда и происходит большой процент брака, т.к. контроллёр отбраковывает данный сектор или даже весь блок (?)
|
Согласен с Вами. Алгоритм коррекции ЕСС есть самое громадное препятствие.
Возьмите один из них -
Код Рида — Соломона (самый распространенный).
Почитать вот тут -
http://ru.wikipedia.org/wiki/%D0%9A%...BE%D0%BD%D0%B0
Провел эксперимент комплекс PC-3000 Flash SSD Edition + дамп 4Гб от MS Pro (вроде бы оригинал)
Микросхема K9HBG08U1M, страница 528 байт (512 +16)
Избыточность кода позволяет корректировать
5 байт любых изменений на странице.
Т.е. я беру и хаотично меняю байты на странице. Затем делаю проверку и коррекцию ЕСС. И моих изменений как не бывало.
Поэкспериментировал далее. Только утвердился в своих выводах: будет ли сделана коррекция ЕСС зависит от того что и на что я меняю. Вот он может поправить и 8 изменений, а то и 3 байта уже не исправляет. Интересно что будет если я микросхему так и впаяю обратно в карту (контроллер то тоже не сможет скорректировать эту страницу).
Сообщение от ErikPshat
Другой вариант - считать логический блок, сменить ID и обратно записать этот блок с помощью программы, но опять же, нужно знать номер блока и команду записи. Это самый верный вариант, но пока затруднительный. Команды вроде даже есть у нас и мы об этом варианте задумывались, вон Yoti чешет репу, читает каждый день мануалы и коды по MSID Dumper-у, чтобы поменять название программы на Writer
|
Можно мне, на условиях нераспространения, получить исходник/наработки по MSID Dumper?
На чем он написан?