Сообщение от gregorio
labaz, не все контроллеры на китайских стиках поддерживают изменение msid.
...часто контроллер обнаруживает подмену msid и карта умирает
|
Обнаруживает он ее следующим образом:
(1)теория.
Контроллер работает с памятью большими блоками (512, 1024, 2048 и т.д. страниц).
Каждая страница состоит из полезных данных и служебных (512+16, 512+24, 4096+128(K9GAG08U0M) это 512х8+16х8, 4304 = (512+26)*8 или посложнее (512+26)*2/(512+28)*6/4).
В служебных данных каждой страницы содержится всякая служебная информация, включая код ЕСС (код коррекции ошибок). В даташите на конкретный контроллер есть все сведения. качайте, смотрите.
В нем то у вас вся и загвоздка.
ЕСС это что-то вроде контрольной суммы страницы памяти, только с возможностью коррекции битовых ошибок. Емкость такой коррекции (число битовых ошибок которые контроллер может поправить зависит от длинны кода ЕСС и метода коррекции.
http://ru.wikipedia.org/wiki/ECC
http://ru.wikipedia.org/wiki/%D0%9A%...BE%D0%BD%D0%B0
(2) Практика (или где кроется "подводный камень):
- контроллеру подается команда считать блок данных, в котором находится ИЗМЕНЕННАЯ страница;
- контроллер читает весь блок одним махом в буфер;
- далее он уже в буфере проходит по всем страницам считанного блока и смотрит каждую на предмет сходится ли ЕСС страницы. Если все в норме, эта страницы памяти пропускается;
ДАЛЕЕ
ВНИМАНИЕ!!
Если ОБНАРУЖИВАЮТСЯ битовые ошибки, то контроллер ПЫТАЕТСЯ исправить эти ошибки. Так как ВНОСИМЫЕ ВАМИ изменения малы, а алгоритмы коррекции в современных накопителях все мощнее и мощнее, контроллер скорее всего СКОРРЕКТИРУЕТ Ваши изменения в соответствии с прилагаемым к странице ЕСС.
Что делать и как быть???
(1) искать способ править дамп через контроллер (стандартный интерфейс накопителя) без обходного маневра с программатором. Уверен ГЕРОЙ уже появился на свет. Хватит ли ему духу остаться ГЕРОЕМ, изменяющим весь мир, а не БАРЫГОЙ, скрывающим тайну даже от своей второй половинки???;
(2) научиться писать в изменяемую страницу NAND помимо нужных данных еще и корректный код ЕСС. Этот путь очень тернист, т.к. алгоритмы в контроллерах постоянно совершенствуются, размер страницы тоже разнится.
(3) искать старые флешки, в которых контроллер наткнувшись на некорректный сектор, не сможет его на основании ЕСС скорректировать (алгоритм слабоват - слишком много изменений на странице памяти), и после нескольких попыток отдаст некорректный блок в свой интерфейс далее.
Сообщение от gregorio
... ещё большая проблема со считыванием и записью nand.
|
NAND устроена так, что она ВСЕГДА пишется с ошибками. Это связано с самой технологией частоты производства микросхем (фантомные дефекты плавающего затвора). Их еще называют "битовые ошибки" (что-то вроде временных бэд-блоков, только на уровне одного бита данных). Для компенсации этих процессов изобретены алгоритмы коррекции ЕСС (алгоритмы коррекции битовых ошибок).
Скачайте даташит на любую микросхему (скажем на K9GAG08U0M), рассмотрите его. Вы увидите что в служебке страницы NAND заложено место под код ЕСС (у K9GAG08U0M - Page Size : (4K + 128)Byte, 128байт на страницу в 4096).
Сам алгоритм заложен в контроллере. Для примера, скачайте даташит на контроллер AU6980. Контроллер Мемористик блочно мало отличается от этого.
Сообщение от gregorio
... и снова надо делать на новой карте всё заново
|
Причина умирания карт кроется в двух моментах:
(1) карты неработоспособны по причине не правильной пайки NAND микросхемы. Если не считать установку не по ключу первой ноги, то "не пропай". Пайка волной + микроскоп все решают.
(2) карты неработоспособны по причине не осторожной разборки корпуса и выковыривании платы.
(3) вероятно, что у контроллера из-за изменений в памяти сорвет крышу (он не отдаст порченный блок в свой интерфейс) и он перейдет в технологический режим. Его можно вывести из этого режима путем замыкания в момент подачи питания соседних выводов шины данных между собой (D0,D1 или D6,D7). Затем форматнуть как обычно.