ErikPshat
16.09.2009, 09:15
http://s54.radikal.ru/i145/0909/ba/844277c3f5bd.jpg
Для начала определимся, что же такое NAND-память консоли PSP?
NAND-память - это по сути чип флеш-памяти. Более подробнее об этом можно ознакомиться в Википедии (http://ru.wikipedia.org/wiki/Flash-память).
На PSP мы уже знаем, что существует 4 области памяти - это Flash0, Flash1, Flash2, Flash3.
И конечно это не 4 чипа памяти, как наверное думают некоторые.
На самом деле это один чип Samsung K5E5658HCM-D060, состоящий из двух областей, можно сказать чипов, сопряжённых в одном корпусе (один чип монтируется поверх другого, и заливается термостойким компаундом (http://ru.wikipedia.org/wiki/Компаунд)):
Первая область ROM - это как раз чип NAND 32MB flash memory. Туда записывается загрузчик IPL вначале, затем ключи IdStorage, ну и сама прошивка.
Вторая область RAM - это внутренняя оперативная кэш-память 32MB 333MHz DDR SDRAM memory (8MB reserved for kernel), куда кэшируются, необходимые в определённый момент, файлы выполняемой игры, программы или плагинов и необходимые для их функционирования и отображения файлы прошивки.
Samsung 437
K5E5658HCM-D060
BPG036P2
Manufacturer: Samsung
Part Number: K5E5658HCM-D060000
Package: FBGA(FL), 137 balls
Size: 10.5 x 13 x 1.4 mm
Desсriрtion: Samsung 1st generation MCP 3.0V/2.5V 32MB 8 bit Uniform Block NAND Flash + 32MB 32 bit 6ns CL3 DDR
SDRAM in a 137 ball FBGA(LF) package.
У чипа нет специальных ножек, для впаивания в плату. С нижней стороны он имеет выпуклые круглые 137 ножек, как у процессоров, и прижимается к таким же круглым контактам на плате. Сиреневым цветом обозначены контакты Nand-памяти, а розовым обозначены контакты DDR-памяти:
http://s46.radikal.ru/i112/0909/16/72bad42d4233.png
http://i036.radikal.ru/0909/40/7b27fb7b7491.jpg
На платах ТА-086 эта микросхема была заменена на Samsung K5E5658ACM-D060.
Вот она в самом конце платы, а модель платы видим внизу:
http://s19.radikal.ru/i192/0909/95/648f9c3a0407.jpgУ Слим и Брайт соответственно объём Оперативки и EEPROM увеличен в два раза и составляет 64/64 MB. Сама память никаких операций выполнять не может, а может только хранить информацию, а вот управление записи/считывания информации берёт на себя контроллёр памяти - это отдельная квадратная микросхема.
NAND разделён на логические разделы, где раздел Flash0 является основным системным и где храниться прошивка PSP. Остальные разделы поделены на логические области. Flash1 хранит настройки системы, куки и историю веб-браузера. Flash2 хранит данные о покупках в PSN-магазине, а Flash3 пока никак не используется.
Но, кроме этих видимых 4-ёх размеченных областей, существует ещё скрытая неразмеченная область.
Эта секретная область находиться в начале флеш-памяти и содержит две наиболее важных вещи:
IPL - загрузчик прошивки PSP
IDStorage - содержит ключи, информацию об оборудовании, регионе, модели и пр.
Причём область IPL и Flash0 являются зашифрованными. Вы привыкли, когда на кастомной прошивке подключаетесь к Flash0, то явно видите файлы PRX и RCO в явном виде, разложенные по папочкам. Но на самом деле, в прошивке файлы лежат в другом, зашифрованном виде. Это когда вы делаете подключение по USB к области Flash0, то специальный драйвер дешифрует на лету область памяти и представляет вам файлы в таком виде, как будто бы они так там и лежат. Кроме того, как вы и сами знаете, сами файлы так же являются зашифрованными. Таким образом, во время работы PSP, происходит двойной процесс расшифровки - сначала самой области Flash0, затем файлов прошивки во временную кэш-память. На этом первое короткое знакомство думаю можно закончить.
Речь у нас пойдёт о более важном. Нас сейчас более интересует структура NAND-памяти.
А изучить её нам помогут несколько полезных утилит.
Вы уже наверняка знаете, как снять Nand-Dump. Это можно сделать множеством всяких программ, например Пандорой или NandTool, который входит в состав "Pandora ELF & PBP Menu (https://www.pspx.ru/forum/showthread.php?t=81243)", так же в комплект программы входит IPL-Dumper и множество подобных сервисных утилит.
Что такое Nand-Dump?
Это точная копия байт-в-байт микросхемы памяти NAND, содержащей всю память PSP. Это загрузочный IPL, ключи IDStorage, Flash1 cо всеми настройками PSP, Flash2 с данными о покупках в PSN, Flash3. В общем всё всё всё.
Впоследствии, с этого Nand-Dump-а можно легко восстановить систему в точности такой, какой она была на момент снятия дампа.
Если кому интересно, то тут я выложил для изучения полный комплект дампов прошивок 3.71-6.00.
Внимание! Дампы сняты с моей PSP-1004 Phat, на другие PSP заливать нельзя!
Только для изучения!
Дампов IPL официальных прошивок.
Дампов IPL кастомных прошивок.
Полных дампов NAND официальных прошивок.
Полных дампов NAND кастомных прошивок.
Скачать (http://narod.ru/disk/13354518000/371-600%20IPL%20%26%20NandDump.7z.html) (осторожно 330 МБ)
NAND-DUMP
IPL
Initial Program Loader
Предисловие и технические данные:
Что такое сектор (страница)?
Один сектор = 512 байт.
Если рассматривать структуру диска Флеш, например через Hex-редактор, то станет понятно, что все данные записываются на диск согласно правилу:
Сектор - это минимальная область пространства, которое не может делиться пополам или ещё как-то и может содержать только одного вида данные, т.е. данные части одного файла. Например, другой файл не может начинаться в секторе, содержащем конец предыдущего файла, даже если остаётся свободное место.
Кроме того, файловая структура PSP и не только, организована так, что минимум на каждый файл отводится 32 сектора. То есть, если даже конец файла заканчивается в первом секторе очередного блока из 32-ух секторов, то остальное свободное пространство на 31 сектор неизменно остаётся пустым и полностью принадлежит только этому файлу. Никакой другой файл не может начинаться с занятого блока.
Что такое избыточный код?
Избыточный код, это код в 16 байт, который добавляется к концу каждого сектора. Этот код содержит технические данные о каждом секторе - позиционирование сектора в нанде и ECC(код коррекции ошибок). Поэтому, при рассмотрении Нанд-дампа следует учитывать это. То есть, после каждых 512 байт всегда следует 16 байт избыточного кода. Эту структуру мы видим в сыром (RAW) Nand-дампе. Но если подключить любую область Nand(flash0/1/2/3) к компьютеру, как логический диск, то "избыточный код" выдаваться не будет и вы его не увидите.
Что такое блок?
Один блок - это 32 сектора * 512 байт + 32 сектора * 16 байт избыточного кода = 16896 байт.
Что такое область IPL в Нанд-дампе?
Секция IPL занимает 0-47 блоки (48 блоков) = 48*(32*512) + 48*(32*16) = 811008 байта от начала Nand, как раз точную сумму всех ниже описанных пунктов.
Что представляет IPL на флеш-диске?
В чистый IPL на флеш-диске, избыточный код не включается и содержит он в чистом виде 114688 байт, что равняется 224 секторам и если прибавить столько же строк по 16 байт (224*16), то получим грязный код в Nand-Dampe = 118272 - это та самая сумма во втором пункте!!!
Ещё раз о правилах!
Ещё прослеживается закономерность, что каждая область обязательно делиться по секторам точно без остатка, то есть на 512, да ещё обязательно кратное 32.
За основу для рассмотрения я взял Нанд-Дампы официальной и кастомной прошивок версии 5.00.
Структура IPL в Нанд-Дампе официальной прошивки
При рассмотрении области IPL, на основе некоторых фактов, я логически разделил её на несколько частей. Почему я это сделал? А потому, что каждая из этих частей разделена пустым пространством, содержащим сплошной код FFFFFFFF превышающий 512 байт. А мы знаем, что каждые 512 байт должен присутствовать избыточный код в 16 байт, разделяющий сектора, содержащего техническую информацию о своём секторе. Это даёт повод судить о том, что где прекращается избыточный код, там заканчивается логическая структура данных/файла.
Первые 67584 байт NAND-памяти PSP не содержит никаких данных и забита сплошным кодом FFFFFFFF.
128 секторов по 512 байт/сектор + 128 * 16 избыточных данных = 67584 байт.
Т.к. после каждого сектора идёт 16 байт дополнительного кода, а секторов 128, то дополнительного кода получается 128 * 16.
Обычно сектора идут один за другим непрерывно, но эти 16 байт, добавляемых нанд-дампером, получается сдвигают каждый последующий сектор, поэтому я этот лишний код называю "Избыточным".
http://i014.radikal.ru/0909/cd/31a92130e423.png В 67584 байте начинается некая размеченная область, забитая нулями, размером в 135168 байт, находящаяся в середине первой пустой области.
От 67584 (0x10800 HEX) по 202752 (0х31800 HEX)
256 секторов * 512 + 256 секторов * 16 байт избыточного кода = 135168 байт.
Эта область содержит какую-то разметку, а данные этой разметки несколько отличаются от данных IPL кастомной прошивки, о чём будет указано в отдельной главе по Нанд-дампу М33.
http://s58.radikal.ru/i161/0909/55/0fa95b425733.png От 202752 (0х31800) по 270336 (0х42000) снова идёт пустое пространство забитое сплошными FFFFFFFF, размером опять 67584 байта, как в первой пустой области.
128 секторов по 512 байт/сектор + 128 * 16 избыточных данных = 67584 байт.
http://s60.radikal.ru/i168/0909/d5/b6e931291b00.png Область официального IPL Sony.
От 270336 (0х42000) по 388608 (0х5EE00) находиться код с данными официального IPL загрузчика прошивки Sony и содержит 118272 байта. Как раз эта область дампиться IPL-дампером, входящим в состав Pandora ELF Menu (https://www.pspx.ru/forum/showthread.php?t=81243) и сохраняется в корне карты памяти под названием enc_ipl.bin.
224 секторов * 512 байт + 224 сектора * 16 байт избыточного кода = 118272 байт.
Очень странно, что остальная область IPL не дампиться в файл с помощью IPL Dumper, хотя в NandTool указывается область блоков 0-47.
Если верить NandTool, то 48 блоков по 32 сектора в блоке, должны иметь 1536 секторов по 512 байт, что даёт 786432 байт, плюс по 16 байт избыточного кода к каждому из 1536-ти секторов.
Итого 811008 байт - полная область IPL от самого начала.
Сюда уже входят 67584 байт пустоты вначале, 135168 байт размеченной пустой области, ещё 67584 байт пустоты и 118272 байта части IPL, которая дампиться через IPL Dumper. Это всего лишь 388608 байт из 811008 байт от всей области IPL.
Куда же делись оставшиеся 422400 байт? Об этом мы узнаем далее...
http://i019.radikal.ru/0909/68/272c2462fecc.png Далее, от 388608 (0х5ЕЕ00) по 422400 (0х67200) идёт следующая область IPL, содержащего 33792 байта.
64 сектора * 512 байт + 64 сектора * 16 байт = 33792 байта.
http://s47.radikal.ru/i116/0909/66/d1b0b16d3623.png Затем в 422400 (0х67200) по 439296 (0х6B400) находиться ещё часть кода 16896 байт. Заметьте, что 32 сектора - это минимальная единица записи данных. Даже если данные помещаются в 1 сектор, то по любому занимается 32 сектора.
32 сектора по 512 байт + 32 сектора * 16 байт = 16896 байт.
http://s55.radikal.ru/i149/0909/5b/574ae2e8a705.png Ну и с 439296 (0х6B400) по 811008 (0хC6000) идёт сплошная пустая область, заполненная FFFFFFFF.
Занимает она 371712 байт = 704 сектора * 512 байт + 704 сектора * 16 байт.
http://i077.radikal.ru/0909/0b/2b4c27facd3b.png
Итак, подытожим.
Сложим все 7 пунктов: 67584 + 135168 + 67584 + 118272 + 33792 + 16896 + 371712 = 811008.
Как видим и как ни странно, у нас всё сошлось до байта! Причём все числа делятся на 32 и на 512 без остатка.
Посмотрим по секторам: 128 + 256 + 128 + 224 + 64 + 32 + 704 = 1536 секторов чистого кода, не считая избыточного.
Вот такая вот математика.
IDStorage
Пока этот раздел не особо интересует, поэтому так, несколько набросков...
В 1651-ом секторе непонятный кусок данных на 6 секторов.
В 1683-ем секторе ещё непонятный кусок данных на 7 секторов.
Далее в 1721 секторе 881232 байта от начала начинается первый ключ IDStorage 0x0004, содержащий первые данные и далее.
FLASH-0,1,2,3
1115120 байт от начала начинается область FLASH-0,1,2,3.
На PSP-100х Phat
Flash 0 size: 24'576 KB х 1024 = 25'165'824 байт
Flash 1 size: 4'096 KB х 1024 = 4'194'304 байт
Flash 2 size: 1'024 KB х 1024 = 1'048'576 байт
Flash 3 size: 960 KB х 1024 = 983'040 байт
Диапазон Flash 0 = 1'115'120 - 26'280'944
Диапазон Flash 1 = 26'280'944 - 30'475'248
Диапазон Flash 2 = 30'475'248 - 31'523'824
Диапазон Flash 3 = 31'523'824 - 32'506'864
На PSP Slim & Brite
Flash 0 size: 41984 KB х 1024 = 42'991'616 байт
Flash 1 size: 5120 KB х 1024 = 5'242'880 байт
Flash 2 size: 4096 KB х 1024 = 4'194'304 байт
Flash 3 size: 9344 KB х 1024 = 9'568'256 байт
Диапазон Flash 0 = 1'115'120 - 44'106'736
Диапазон Flash 1 = 44'106'736 - 49'349'616
Диапазон Flash 2 = 49'349'616 - 53'543'920
Диапазон Flash 3 = 53'543'920 - 63'112'176
Для начала определимся, что же такое NAND-память консоли PSP?
NAND-память - это по сути чип флеш-памяти. Более подробнее об этом можно ознакомиться в Википедии (http://ru.wikipedia.org/wiki/Flash-память).
На PSP мы уже знаем, что существует 4 области памяти - это Flash0, Flash1, Flash2, Flash3.
И конечно это не 4 чипа памяти, как наверное думают некоторые.
На самом деле это один чип Samsung K5E5658HCM-D060, состоящий из двух областей, можно сказать чипов, сопряжённых в одном корпусе (один чип монтируется поверх другого, и заливается термостойким компаундом (http://ru.wikipedia.org/wiki/Компаунд)):
Первая область ROM - это как раз чип NAND 32MB flash memory. Туда записывается загрузчик IPL вначале, затем ключи IdStorage, ну и сама прошивка.
Вторая область RAM - это внутренняя оперативная кэш-память 32MB 333MHz DDR SDRAM memory (8MB reserved for kernel), куда кэшируются, необходимые в определённый момент, файлы выполняемой игры, программы или плагинов и необходимые для их функционирования и отображения файлы прошивки.
Samsung 437
K5E5658HCM-D060
BPG036P2
Manufacturer: Samsung
Part Number: K5E5658HCM-D060000
Package: FBGA(FL), 137 balls
Size: 10.5 x 13 x 1.4 mm
Desсriрtion: Samsung 1st generation MCP 3.0V/2.5V 32MB 8 bit Uniform Block NAND Flash + 32MB 32 bit 6ns CL3 DDR
SDRAM in a 137 ball FBGA(LF) package.
У чипа нет специальных ножек, для впаивания в плату. С нижней стороны он имеет выпуклые круглые 137 ножек, как у процессоров, и прижимается к таким же круглым контактам на плате. Сиреневым цветом обозначены контакты Nand-памяти, а розовым обозначены контакты DDR-памяти:
http://s46.radikal.ru/i112/0909/16/72bad42d4233.png
http://i036.radikal.ru/0909/40/7b27fb7b7491.jpg
На платах ТА-086 эта микросхема была заменена на Samsung K5E5658ACM-D060.
Вот она в самом конце платы, а модель платы видим внизу:
http://s19.radikal.ru/i192/0909/95/648f9c3a0407.jpgУ Слим и Брайт соответственно объём Оперативки и EEPROM увеличен в два раза и составляет 64/64 MB. Сама память никаких операций выполнять не может, а может только хранить информацию, а вот управление записи/считывания информации берёт на себя контроллёр памяти - это отдельная квадратная микросхема.
NAND разделён на логические разделы, где раздел Flash0 является основным системным и где храниться прошивка PSP. Остальные разделы поделены на логические области. Flash1 хранит настройки системы, куки и историю веб-браузера. Flash2 хранит данные о покупках в PSN-магазине, а Flash3 пока никак не используется.
Но, кроме этих видимых 4-ёх размеченных областей, существует ещё скрытая неразмеченная область.
Эта секретная область находиться в начале флеш-памяти и содержит две наиболее важных вещи:
IPL - загрузчик прошивки PSP
IDStorage - содержит ключи, информацию об оборудовании, регионе, модели и пр.
Причём область IPL и Flash0 являются зашифрованными. Вы привыкли, когда на кастомной прошивке подключаетесь к Flash0, то явно видите файлы PRX и RCO в явном виде, разложенные по папочкам. Но на самом деле, в прошивке файлы лежат в другом, зашифрованном виде. Это когда вы делаете подключение по USB к области Flash0, то специальный драйвер дешифрует на лету область памяти и представляет вам файлы в таком виде, как будто бы они так там и лежат. Кроме того, как вы и сами знаете, сами файлы так же являются зашифрованными. Таким образом, во время работы PSP, происходит двойной процесс расшифровки - сначала самой области Flash0, затем файлов прошивки во временную кэш-память. На этом первое короткое знакомство думаю можно закончить.
Речь у нас пойдёт о более важном. Нас сейчас более интересует структура NAND-памяти.
А изучить её нам помогут несколько полезных утилит.
Вы уже наверняка знаете, как снять Nand-Dump. Это можно сделать множеством всяких программ, например Пандорой или NandTool, который входит в состав "Pandora ELF & PBP Menu (https://www.pspx.ru/forum/showthread.php?t=81243)", так же в комплект программы входит IPL-Dumper и множество подобных сервисных утилит.
Что такое Nand-Dump?
Это точная копия байт-в-байт микросхемы памяти NAND, содержащей всю память PSP. Это загрузочный IPL, ключи IDStorage, Flash1 cо всеми настройками PSP, Flash2 с данными о покупках в PSN, Flash3. В общем всё всё всё.
Впоследствии, с этого Nand-Dump-а можно легко восстановить систему в точности такой, какой она была на момент снятия дампа.
Если кому интересно, то тут я выложил для изучения полный комплект дампов прошивок 3.71-6.00.
Внимание! Дампы сняты с моей PSP-1004 Phat, на другие PSP заливать нельзя!
Только для изучения!
Дампов IPL официальных прошивок.
Дампов IPL кастомных прошивок.
Полных дампов NAND официальных прошивок.
Полных дампов NAND кастомных прошивок.
Скачать (http://narod.ru/disk/13354518000/371-600%20IPL%20%26%20NandDump.7z.html) (осторожно 330 МБ)
NAND-DUMP
IPL
Initial Program Loader
Предисловие и технические данные:
Что такое сектор (страница)?
Один сектор = 512 байт.
Если рассматривать структуру диска Флеш, например через Hex-редактор, то станет понятно, что все данные записываются на диск согласно правилу:
Сектор - это минимальная область пространства, которое не может делиться пополам или ещё как-то и может содержать только одного вида данные, т.е. данные части одного файла. Например, другой файл не может начинаться в секторе, содержащем конец предыдущего файла, даже если остаётся свободное место.
Кроме того, файловая структура PSP и не только, организована так, что минимум на каждый файл отводится 32 сектора. То есть, если даже конец файла заканчивается в первом секторе очередного блока из 32-ух секторов, то остальное свободное пространство на 31 сектор неизменно остаётся пустым и полностью принадлежит только этому файлу. Никакой другой файл не может начинаться с занятого блока.
Что такое избыточный код?
Избыточный код, это код в 16 байт, который добавляется к концу каждого сектора. Этот код содержит технические данные о каждом секторе - позиционирование сектора в нанде и ECC(код коррекции ошибок). Поэтому, при рассмотрении Нанд-дампа следует учитывать это. То есть, после каждых 512 байт всегда следует 16 байт избыточного кода. Эту структуру мы видим в сыром (RAW) Nand-дампе. Но если подключить любую область Nand(flash0/1/2/3) к компьютеру, как логический диск, то "избыточный код" выдаваться не будет и вы его не увидите.
Что такое блок?
Один блок - это 32 сектора * 512 байт + 32 сектора * 16 байт избыточного кода = 16896 байт.
Что такое область IPL в Нанд-дампе?
Секция IPL занимает 0-47 блоки (48 блоков) = 48*(32*512) + 48*(32*16) = 811008 байта от начала Nand, как раз точную сумму всех ниже описанных пунктов.
Что представляет IPL на флеш-диске?
В чистый IPL на флеш-диске, избыточный код не включается и содержит он в чистом виде 114688 байт, что равняется 224 секторам и если прибавить столько же строк по 16 байт (224*16), то получим грязный код в Nand-Dampe = 118272 - это та самая сумма во втором пункте!!!
Ещё раз о правилах!
Ещё прослеживается закономерность, что каждая область обязательно делиться по секторам точно без остатка, то есть на 512, да ещё обязательно кратное 32.
За основу для рассмотрения я взял Нанд-Дампы официальной и кастомной прошивок версии 5.00.
Структура IPL в Нанд-Дампе официальной прошивки
При рассмотрении области IPL, на основе некоторых фактов, я логически разделил её на несколько частей. Почему я это сделал? А потому, что каждая из этих частей разделена пустым пространством, содержащим сплошной код FFFFFFFF превышающий 512 байт. А мы знаем, что каждые 512 байт должен присутствовать избыточный код в 16 байт, разделяющий сектора, содержащего техническую информацию о своём секторе. Это даёт повод судить о том, что где прекращается избыточный код, там заканчивается логическая структура данных/файла.
Первые 67584 байт NAND-памяти PSP не содержит никаких данных и забита сплошным кодом FFFFFFFF.
128 секторов по 512 байт/сектор + 128 * 16 избыточных данных = 67584 байт.
Т.к. после каждого сектора идёт 16 байт дополнительного кода, а секторов 128, то дополнительного кода получается 128 * 16.
Обычно сектора идут один за другим непрерывно, но эти 16 байт, добавляемых нанд-дампером, получается сдвигают каждый последующий сектор, поэтому я этот лишний код называю "Избыточным".
http://i014.radikal.ru/0909/cd/31a92130e423.png В 67584 байте начинается некая размеченная область, забитая нулями, размером в 135168 байт, находящаяся в середине первой пустой области.
От 67584 (0x10800 HEX) по 202752 (0х31800 HEX)
256 секторов * 512 + 256 секторов * 16 байт избыточного кода = 135168 байт.
Эта область содержит какую-то разметку, а данные этой разметки несколько отличаются от данных IPL кастомной прошивки, о чём будет указано в отдельной главе по Нанд-дампу М33.
http://s58.radikal.ru/i161/0909/55/0fa95b425733.png От 202752 (0х31800) по 270336 (0х42000) снова идёт пустое пространство забитое сплошными FFFFFFFF, размером опять 67584 байта, как в первой пустой области.
128 секторов по 512 байт/сектор + 128 * 16 избыточных данных = 67584 байт.
http://s60.radikal.ru/i168/0909/d5/b6e931291b00.png Область официального IPL Sony.
От 270336 (0х42000) по 388608 (0х5EE00) находиться код с данными официального IPL загрузчика прошивки Sony и содержит 118272 байта. Как раз эта область дампиться IPL-дампером, входящим в состав Pandora ELF Menu (https://www.pspx.ru/forum/showthread.php?t=81243) и сохраняется в корне карты памяти под названием enc_ipl.bin.
224 секторов * 512 байт + 224 сектора * 16 байт избыточного кода = 118272 байт.
Очень странно, что остальная область IPL не дампиться в файл с помощью IPL Dumper, хотя в NandTool указывается область блоков 0-47.
Если верить NandTool, то 48 блоков по 32 сектора в блоке, должны иметь 1536 секторов по 512 байт, что даёт 786432 байт, плюс по 16 байт избыточного кода к каждому из 1536-ти секторов.
Итого 811008 байт - полная область IPL от самого начала.
Сюда уже входят 67584 байт пустоты вначале, 135168 байт размеченной пустой области, ещё 67584 байт пустоты и 118272 байта части IPL, которая дампиться через IPL Dumper. Это всего лишь 388608 байт из 811008 байт от всей области IPL.
Куда же делись оставшиеся 422400 байт? Об этом мы узнаем далее...
http://i019.radikal.ru/0909/68/272c2462fecc.png Далее, от 388608 (0х5ЕЕ00) по 422400 (0х67200) идёт следующая область IPL, содержащего 33792 байта.
64 сектора * 512 байт + 64 сектора * 16 байт = 33792 байта.
http://s47.radikal.ru/i116/0909/66/d1b0b16d3623.png Затем в 422400 (0х67200) по 439296 (0х6B400) находиться ещё часть кода 16896 байт. Заметьте, что 32 сектора - это минимальная единица записи данных. Даже если данные помещаются в 1 сектор, то по любому занимается 32 сектора.
32 сектора по 512 байт + 32 сектора * 16 байт = 16896 байт.
http://s55.radikal.ru/i149/0909/5b/574ae2e8a705.png Ну и с 439296 (0х6B400) по 811008 (0хC6000) идёт сплошная пустая область, заполненная FFFFFFFF.
Занимает она 371712 байт = 704 сектора * 512 байт + 704 сектора * 16 байт.
http://i077.radikal.ru/0909/0b/2b4c27facd3b.png
Итак, подытожим.
Сложим все 7 пунктов: 67584 + 135168 + 67584 + 118272 + 33792 + 16896 + 371712 = 811008.
Как видим и как ни странно, у нас всё сошлось до байта! Причём все числа делятся на 32 и на 512 без остатка.
Посмотрим по секторам: 128 + 256 + 128 + 224 + 64 + 32 + 704 = 1536 секторов чистого кода, не считая избыточного.
Вот такая вот математика.
IDStorage
Пока этот раздел не особо интересует, поэтому так, несколько набросков...
В 1651-ом секторе непонятный кусок данных на 6 секторов.
В 1683-ем секторе ещё непонятный кусок данных на 7 секторов.
Далее в 1721 секторе 881232 байта от начала начинается первый ключ IDStorage 0x0004, содержащий первые данные и далее.
FLASH-0,1,2,3
1115120 байт от начала начинается область FLASH-0,1,2,3.
На PSP-100х Phat
Flash 0 size: 24'576 KB х 1024 = 25'165'824 байт
Flash 1 size: 4'096 KB х 1024 = 4'194'304 байт
Flash 2 size: 1'024 KB х 1024 = 1'048'576 байт
Flash 3 size: 960 KB х 1024 = 983'040 байт
Диапазон Flash 0 = 1'115'120 - 26'280'944
Диапазон Flash 1 = 26'280'944 - 30'475'248
Диапазон Flash 2 = 30'475'248 - 31'523'824
Диапазон Flash 3 = 31'523'824 - 32'506'864
На PSP Slim & Brite
Flash 0 size: 41984 KB х 1024 = 42'991'616 байт
Flash 1 size: 5120 KB х 1024 = 5'242'880 байт
Flash 2 size: 4096 KB х 1024 = 4'194'304 байт
Flash 3 size: 9344 KB х 1024 = 9'568'256 байт
Диапазон Flash 0 = 1'115'120 - 44'106'736
Диапазон Flash 1 = 44'106'736 - 49'349'616
Диапазон Flash 2 = 49'349'616 - 53'543'920
Диапазон Flash 3 = 53'543'920 - 63'112'176