PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   Pandora (unbricker/downgrader) для PSP-200X TA-088v3 (https://www.pspx.ru/forum/showthread.php?t=92433)

ErikPshat 26.11.2011 23:49

Цитата:

Сообщение от gregorio (Сообщение 992321)
зануление ECC на кое-каких картах работает. и всё заново подсчитывается

Хмм, интересно.
Я тут понял, что 4-ий байт FF в ECC означает легитимный блок. Если 00 - то это контроллёр помечает, как Bad Block.

Yokel 27.11.2011 07:09

Цитата:

Сообщение от ErikPshat (Сообщение 992332)
Хмм, интересно.
Я тут понял, что 4-ий байт FF в ECC означает легитимный блок. Если 00 - то это контроллёр помечает, как Bad Block.

какой еще 4-ий, откуда считаешь?

ErikPshat 27.11.2011 07:13

Yokel, c левого конца. От нулевого байта в ECC.

Там ведь идёт одна строка - 16 байт избыточного кода.
  • Первые 3 байта - позиция блока.
  • Вот 4-ый байт - указатель на Bad Block.
  • Потом 2 байта идут FFFF - просто зарезервированы, не используются.
  • Потом 10 байт - сама ECC.

Yokel 27.11.2011 07:20

Цитата:

Сообщение от ErikPshat (Сообщение 992383)
Yokel, c левого конца. От нулевого байта в ECC.

Там ведь идёт одна строка - 16 байт избыточного кода.
  • Первые 3 байта - позиция блока.
  • Вот 4-ый байт - указатель на Bad Block.
  • Потом 2 байта идут FFFF - просто зарезервированы, не используются.
  • Потом 10 байт - сама ECC.

Ну он у меня например и FD бывает и F1

ErikPshat 27.11.2011 07:30

Yokel, ты рассматриваешь код в 16-ричном редакторе в 16 столбиков или в 17?

Может у тебя просто контроллёр другой или память.
Я рассматриваю тот, что в шапке с контроллёром UD1F.
Хотя во многих дампах видел тоже самое, но может быть и по другому, смотря какая геометрия.



Кстати, мы с gregorio ночью всё-таки провели эксперимент по заливке данных через USB.
Сейчас только вот получили данные и рассматриваем. Результат потом огласим.

Но сдаётся мне, уже при беглом просмотре, что в ECC не участвуют первые 6 байт.

Yokel 27.11.2011 07:51

Цитата:

Сообщение от ErikPshat (Сообщение 992386)
Yokel, ты рассматриваешь код в 16-ричном редакторе в 16 столбиков или в 17?

Может у тебя просто контроллёр другой или память.
Я рассматриваю тот, что в шапке с контроллёром UD1F.
Хотя во многих дампах видел тоже самое, но может быть и по другому, смотря какая геометрия.



Кстати, мы с gregorio ночью всё-таки провели эксперимент по заливке данных через USB.
Сейчас только вот получили данные и рассматриваем. Результат потом огласим.

Но сдаётся мне, уже при беглом просмотре, что в ECC не участвуют первые 6 байт.

Контроллер у меня такой же как у тебя! Вот тебе служебка:
00 07 00 FD FF FF 62 38 0F 4B 50 04 3B F4 83 5E

ErikPshat 27.11.2011 08:10

Цитата:

Сообщение от Yokel (Сообщение 992387)
Контроллер у меня такой же как у тебя! Вот тебе служебка:
00 07 00 FD FF FF 62 38 0F 4B 50 04 3B F4 83 5E

О_о у меня в дампе такого нет. У меня встречаются или 00 или FF.
Хотя может я напутал, может 5-ый байт отвечает.
Просто вчера рылся по документациям и в нескольких местах встречал раскладку по байтам, как оно должно быть.

У меня в основном в таком виде все сектора помечены:

A0 A0 01 FF FF FF 93 C6 4B 46 99 76 ED 53 41 F1

Yokel 27.11.2011 08:39

Цитата:

Сообщение от Korugo (Сообщение 991874)
Простите, что вмешиваюсь.
Вот еще занятная штука, хотя может уже видели.
http://www.elnec.com/sw/an_elnec_nand_flash.pdf
http://www.elnec.com/sw/samsung_ecc_...m_for_512b.pdf
В последнем документе расписывается структура 16-байтного ECC для 512-байт блоков.
1,2,3 байты - номер блока
4, 5 - зарезервировано
6 - метка бэд-блока
7,8,9 - ECC code for Main area data, алгоритм вычисления тоже описан
10, 11 - ECC code for LSN data (ECC для номера блока) - заметьте, вычисляется отдельно и независимо от основных данных. Здесь уже предлагалось записать на карточку блок с нужными данными и подсмотреть его ECC, не прокатило - но что если здесь так же, то есть надо заменять не весь ECC а часть отвечающую за именно данные в блоке?
12-16 - зарезервировано.
с другой стороны, это только пример, и то от самсунга. Еще там написано что это для 64м-1гб нандов, для 2гб алгоритм может быть другим.

Тут написано, что 6

ErikPshat 27.11.2011 08:48

Цитата:

Сообщение от Yokel (Сообщение 992390)
Тут написано, что 6

Да, я читал это и поэтому полез рыскать. Был на Тошиба, Самсунг и Hynix.

По моему на Самсунге читал про 4-ый байт. Но могу ошибаться, потому что от переваренной информации и этих кодов Рида-Соломона гоова пошла кругом :D

Так что вполне похоже, что действительно 6-ой, тем более, что вроде всё сходится.
Только почему у тебя 4-ый не зарезервированный?

Gregorio 27.11.2011 22:41

но в итоге ECC пересчитался по новому) карта работает, есть косяки из-за ее происхождения(это всё-же китайское Г), надо попробовать на оригинале. буду переделывать проггер под BGA нанды, на днях опробую технологию на оригиналах. и надеюсь во второй раз всё получится

Yokel 28.11.2011 05:58

Цитата:

Сообщение от gregorio (Сообщение 992681)
но в итоге ECC пересчитался по новому) карта работает, есть косяки из-за ее происхождения(это всё-же китайское Г), надо попробовать на оригинале. буду переделывать проггер под BGA нанды, на днях опробую технологию на оригиналах. и надеюсь во второй раз всё получится

В итоге чего? Где предыстория?

ErikPshat 28.11.2011 19:34

Вложений: 2
Цитата:

Сообщение от ErikPshat (Сообщение 992386)
Но сдаётся мне, уже при беглом просмотре, что в ECC не участвуют первые 6 байт.

Нет, всё не так. Видать всю ночь сидели с gregorio и уже галюники пошли.
Сегодня выспался и заново рассмотрел, что мы там нахимичили.

В общем структура данных сервисной области такая:
  • Сначала идёт сектор с самим MSID
  • Следом идут 3 сектора, полностью забитых FFFFFFFF
  • Затем идёт сектор с PID|VID+Размер(4Гб)+Формат_FAT(32)
То есть, структура идёт по формуле 1+3 - один сектор первичный, затем 3 вторичных сектора, потом опять первичный и 3 вторичных. И так вся карта.
Как мы знаем, 4 сектора - это одна страница. Вот и получается постраничная организация.

У Гриши попалась такая хитрая карта на 4 Гб, что в области MSID избыточные данные не имеют нумерации блоков. Там первые 4 байта просто FF FF FF FF, затем 2 байта FF FF и далее идёт 10 байтов ECC.

В общем, процесс происходил в следующем порядке:
  1. Отпаяли микросхему памяти.
  2. Сняли программатором дамп первого Банка(их там 4 Банка по 1 Гб).
  3. Физический размер дампа вышел 1,03 ГБ (1 107 296 256 байт), что оказалось как бы больше размера, заявленного производителем. Но, если взяться за арифметику, то выясняется, что эта разница как раз составляет эти 16 байт избыточного кода, приклеиваемого к каждому сектору. А логический размер, без избыточного кода, вплоть до байтика равен ровно 1 Гб (1 073 741 824 байт).
  4. Сохранили эти 5 служебных секторов с MSID/3хFFFFFFFF/PID|VID... отдельно
  5. Удалили у каждого сектора служебку с ECC - по 16 байт. Правда 3 сектора по FFFFFFFF не имеют контрольной суммы, но избыточный код всё равно присутствует, просто все 16 байт тоже забиты FF-ками, поэтому конечно же тоже избавляемся от него. Собственно нас интересует только один сектор, где предположительно требуется смена MSID, но, для полноты эксперимента, забираем все 4 сектора + 5ый сектор, содержащий PID|VID|Format|Size
  6. В итоге получилось 5 чистых логических секторов ровно по 512 байт.
  7. Затем, имея в виду, что один блок содержит 256 секторов по 512 байт каждый - подсчитываем размер блока = 131072 байт.
  8. Ложим эти 5 секторов в начало блока и забиваем оставшиеся 251 секторов блока символом "X" (58 в хексе) для наглядности. Таким образом у нас получился один цельный логический блок, размером 131072 байт (без ECC конечно)
  9. Теперь копируем и размножаем этот шаблон блока до размера первоначально снятого дампа - 1,03 ГБ (1 107 296 256 байт). С размером умышленно переборьщили, рассчитывая на то, чтобы полностью переписался первый банк и чтобы не мешал оставшийся мусор, учытывая, что контроллёр сам подсчитает к каждому сектору свои 16 байт избыточного кода.
  10. Таким образом, начало каждого блока у нас начинается с этих 5 секторов с MSID и далее забит просто "X-ами". Это делалось специально для того, чтобы проверить, действительно ли ECC меняется в каждом блоке.
  11. Короче, получился вот такой файл Blank.bin(осторожно! после разархивации 1 Гб).
  12. Припаяли микросхему обратно на карту памяти, ничего не меняя в ней.
  13. Подключаем по USB и заливаем этот файл Blank.bin, весом более 1 Гб в корень карты, с надеждой на то, что весь 1-ый Банк заполнится и останется без лишнего мусора.
  14. Потом опять отпаиваем микросхему и снимаем дамп.
  15. Проверяем и видим, что действительно в каждом блоке ECC меняется в виду того, что первые 4 байта имет нумерацию этого блока. С другой стороны, нумерация блока проставляется только в каждом первом секторе, каждой страницы. НО!!! В остальных 3-ёх секторах страницы нумерация в первых 4-ёх байтах отсутствует, но отлична от FF FF FF FF, там выставлено EF FF FF FF (а это печально, потому что мы могли бы подсчитывать ECC к MSID сектору). И таким образом, ECC у младших 3-ёх секторов по всему дампу одинакова, не зависимо от номера блока.
  16. Вот этот заново снятый дамп, после заливки по USB поблочного файла. (Осторожно! после разархивации 1 Гб)
    Можете сами посмотреть структуру и как сменяется ECC в зависимости от нумерации блока.
Итог: первые 4 байта избыточного кода - участвуют в формировании контрольной суммы ECC.

Потом я снял дамп со своей карты памяти с микрухой HY27UY08AG5M и контроллёром 0805-0
Но у меня первые 4 байта в системной области всё-таки пронумерованы.
Зато ECC не содержит нигде! :xDD:


Yokel 29.11.2011 05:32

Выложи фото этой карты и этого контроллера!

Gregorio 29.11.2011 06:15

Yokel, а тебе оно надо? эти карты уже не найдёшь, я об этом позаботился) я-же когда их пытался делать, скупал сотнями.. и не только по Москве, по всей России и Украине собирал) так что практически не вариант..

ну а если вдруг всё-же захочешь, всю инфу дам через асю/скайп

ErikPshat 29.11.2011 17:41

Кстати, контроль ECC как-то можно отключать. Читал на той неделе на сайте Тошибы, там прилагается какой-то файл патча, который отключает генерацию и проверку ECC.
Думаю на картах других производителей имеется свой метод.

P.S. В шапке инструкцию подкорректировал.

Yoti 30.11.2011 22:48

Цитата:

Сообщение от ErikPshat (Сообщение 993095)
файл патча

Прошивки контроллера?

frostegater 30.11.2011 23:22

ErikPshat, дай ссылку на ту инфу. Изучить нужно метод.

ErikPshat 01.12.2011 13:52

Цитата:

Сообщение от Yoti (Сообщение 993378)
Прошивки контроллера?

Нет, именно патч нанда.
Сейчас трудновато сразу найти, но по ссылкам ранее можно туда попасть.

manyaksbs 03.12.2011 18:45

Please translate to english or turkhısh. Please!

Lütfen birisi ingilizceye veya Türkçeye çevirsin şu yazıyı deli olcam lan. :(

frostegater 03.12.2011 18:50

manyaksbs, https://www.pspx.ru/forum/showthread....ewpost&t=92463


Текущее время: 01:20. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.