Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форумы PDA2U.RU _ Шаманства для посвященных _ Структура информации в IMGFS секциях

Автор: BigMike 29.2.2008, 14:21

Цитата
PS чтобы суметь применить к нашим девайсам - надо определить sector size и extra data size
Например, для Hermes sector size 0x200, extra data size 0x08. Для Kaiser 0x800 и 0x08

Вот, кажется, нашел тут инфу, которая может помочь нам в освоении tadzio tools
Цитата
помимо "нормальных" данных присутствуют, "дополнительные".
Эти дополнительные данные наполняются по определенному алгоритму.
...
Эти дополнительные данные есть трех видов
1) После партиции XIP и IMGFS идет по 0x80000 байт, состоящих из двух блоков по 0x40000, в конце каждого из которых в свою очередь наш патерн.
2) Блоки длинной 0x1000, на каждый блок размером 0x40000 (0x1000 входит в 0x40000), в начале которых идут счетчики (пока не понял чего), а в конце наш патерн такие встречаются в IMGFS в области ненулевых (забитых отличными от 0xFF данными). Патерн:
062155C1D5299CDFB8EAB8BAF3F9D382478A433BE62AD9A9316739095367BF12
3) Те же блоки длинной 0x1000, но без счетчиков, так же в IMGFS, но только там где данных нет (весь блок забит 0xFF)...

0х1000 - это и есть размер сектора
Теперь, что есть 0х08...
Цитата
и так что из себя представляет блок экстраданных размещающийся в конце каждого куска 0x40000.
Заполнение происходит по такой схеме (8 байт на каждый 0x1000 блок данных внутри 0x3f000 блока):
1) нумерация с каждым блоком 0x1000 увеличивается на 1
2) нумерация начинается с номера сектора указанного для IMGFS как стартовый в MBR структуре.
3) блок с экстраданными не считается за простой блок(сектор), и его номер и идентификатор всегда приравнивается к 0xFFFFFFFF
4) блок данных в котором нет никакой информации (является пустым) считается по порядку, но маркируется так-же как и блок экстраданных.

http://4pda.ru/forum/index.php?showtopic=58179&view=findpost&p=1461167 все описано подробно.

Респект за это описание freepk и -Qwerty- с 4pda.ru

PS Просмотрел наш образ - у нас тоже sector size 0x1000, extra data size 0x08

PPS Тем не менее, так и не удалось заставить ее работать sad.gif

Автор: -QwertY- 10.3.2008, 15:27

Сама партиция IMGFS в MBR структуре имеет идентификатор 0x23, и, обычно, идёт второй или третье по счёту партицией.
Сама партиция представляет из себя сжатые данные. Сжатие может быть XPR или LZX.
Так же партиция IMGFS может содержать экстраданные, в некоторых случаях просто поставленные производителем, в других необходимые самой FLASH устройства.

Как пример могу привести FLASH память аппаратов ETEN. У них размер блока данных равен 520 байт (512 обычных данных и 8 байт экстраданных сектора).

Для начала рассмотрим строение прошивки от ETEN, а так-же способ формирования экстраданных.
Из-за самого строения FLASH (как уже было сказано) экстраданные в прошивке должны идти каждые 512 байт, и составлять 8 байт (в сумме 520 байт).
В данном случае экстраданные формируются из 2-х DWORD (4 байта в LE записи, байты справа на лево идут).
Первым DWORD идёт номер сектора в MBR части прошивки.
Вторым DWORD идёт идентификатор партиции.
Идентификаторы партиции определяются типом партиции и имеют значения:
1) MBR и MSFLSH50 сектора - 0xFFFBFFFD
2) 0x20 - boot партиция - 0xFFFBFFFD
3) 0x23 - XIP партиция - 0xFFFBFFFD
4) 0x25 - IMGFS партиция - 0xFFFBFFFF
5) ExtROM - 0xFFFFFFFF (номера секторов так-же нумеруются как 0xFFFFFFFF в не зависимости от очерёдности)
6) Свободное место в партиции или вне партиций - 0xFFFFFFFF (номера секторов так-же нумеруются как 0xFFFFFFFF в не зависимости от очерёдности)

Первый номер сектора для партиции берётся из таблици партиций находящейся в MBR.

© http://4pda.ru/forum/

Автор: -QwertY- 10.3.2008, 15:42

Сама прошивка O2 XDA Flame имеет немного другую структуру.
В прошивке Flame части MBR, MSFLSH50, boot и XIP партиции не помечаются экстраданными. Экстраданные содержатся только в IMGFS партиции.
Формирование экстраданным происходит по отличному от eten алгоритму.

И так экстраданные для каждого сектора (сектор в O2 XDA Flame равен 0x1000 байт) формируются по аналогичному алгоритму, но пишутся в сам файл прошивки по другому.

Для O2 XDA Flame блок экстраданных равен блоку данных и имеет в конце свою сигнатуру

Код
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

033FFFE0   06 21 55 C1 D5 29 9C DF  B8 EA B8 BA F3 F9 D3 82    !UБХ)њЯёкёєущУ‚
033FFFF0   47 8A 43 3B E6 2A D9 A9  31 67 39 09 53 67 BF 12   GЉC;ж*Щ©1g9 Sgї


Сам блок изначально заполнен 0xFF данными и должен в себе содержать всего 63 блока данных о предшествующих блоку 63 секторах.

Запись информации о предшествующих блоках начинается с начала блока экстраданных, 1 запись равно 8 байт.
Заполнение информации о блоках происходит аналогично прошивкам ETEN (тоесть пустое место имеет идентификатор 0xFFFFFFFF и номер 0xFFFFFFFF).
Сам размер IMGFS части болжен быть кратен 0x40000.

© http://4pda.ru/forum/

Автор: BigMike 10.3.2008, 19:01

Цитата
Для O2 XDA Flame блок экстраданных равен блоку данных и имеет в конце свою сигнатуру

В прошивке О2 XDA Atom Exec и клонов (Rover G5 и Orsio n725) используется точно та же структура. Сектор имеет аналогичный размер (0х1000), IMGFS разбита на блоки по 0х40000 и экстраданные собираются в последнем секторе блока.
Насколько я понимаю, структуру прошивки Flame вы начали копать на 4pda, чтобы увеличить размер IMGFS секции и вынести в нее дрова из XIP. Так почему бы просто не сипользовать для этой цели imgfs от Atom Exec? Просто при сборке подменить исходный diskimage.nb0 на аналогичный файл от Atom Exec.
Я так думаю, что если вынести из XIP все OEM драйвера - он будет не больше атомовского. Соответственно, измененная таким образом прошивка флэйма должна вполне поместиться в атомовский образ.

Автор: BigMike 10.3.2008, 23:29

Шарился по гуглю - наткнулся на рекламу конференции 4pda о структуре прошивок WM5/6, которую проводил как раз -QwertY-.
Лог конференции можно взять http://4pda.ru/forum/index.php?showtopic=65709
Много интересной информации о структуре IMGFS вообще и образов *.nb0 можно там найти.
Имхо, маст хэв.
Если -QwertY- разрешит - попробую попозже сделать и выложить выжимку.

Автор: -QwertY- 12.3.2008, 22:50

BigMike, Ну выжимку попробуй сделать и выложить оное я в принципе разрешаю, только копирайт сайта и меня не забудь smile.gif

PS А я уж думал когда заметят тему по той конференции smile.gif

Автор: salman DZ 7.7.2008, 19:55

Цитата(-QwertY- @ 12.3.2008, 23:50) *
BigMike, Ну выжимку попробуй сделать и выложить оное я в принципе разрешаю, только копирайт сайта и меня не забудь smile.gif

PS А я уж думал когда заметят тему по той конференции smile.gif


Тыб нам тут помог собрать пару пилотных ромов, ато скромно так засветился,
меня лично интересует полноценная имуляция екст рома и чтоб всю память в устройстве можно было использовать

Русская версия Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)