IPB

Здравствуйте, гость ( Вход | Регистрация )

Форум перемещен на новый домен: forum.pda2u.ru - исправьте, пожалуйста, свои ссылки
 
 
Ответить в данную темуНачать новую тему
> Полное портирование прошивок с устройства на устройство, Методики, инструменты и т.д.
AGC
сообщение 14.2.2008, 18:04
Сообщение #1


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Решил открыть интересную тему полного портирования прошивок с устройства на устройство. Пока видимо в закрытом разделе... Если есть другие мнения, можно обсудить?
---
Собственно, предпосылкой для темы является достигнутый результат - портированная целиком WM6 с Rover G6 на HP RW6815, а также отсутствие полной и подробной информации по данному вопросу (портирования прошивок между разными устройствами). Ситуация аналогична портированию XIP, по которому у нас на сайте, пожалуй, самая подробная информация (и отнюдь не только в Рунете). Хоть пока и не сведенная в единую методику для общего случая...

В общем, не претендуя на особую оригинальность и обобщенность, изложу сейчас несколькими сообщениями, как портировать WM6 с ровера G6 на HP 6815. Принципы и методика собственно общие и для других устройств (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 14.2.2008, 18:27
Сообщение #2


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Общие принципы и технология

Описываю исходя из использования атомовской кухни, которую публиковал в соседней ветке, и терминологии "наших" устройств, чтоб было проще понимать.

1. Разбираем прошивку с устройства-донора. Нам нужны IMGFS, XIP, ну и ExtRom, если он есть..
2. Разбираем XIP прошивки-донора, портируем туда свое ядро (или портируем XIP на свое ядро, по вкусу (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) ). Релочим M'Reloc_nk и XIPPort-ом при портировании все на "правильные" адреса целевого устройства при необходимости (!включая релок coredll.dll на "правильные" адреса с помощью M'Reloc!).
3. Разбираем IMGFS прошивки-донора на dump и далее на SYS и OEM.
4. Релочим разобранный IMGFS прошивки-донора на "правильные" адреса целевого устройства с помощью G'Reloc.
5. Заменяем OEMDrivers в разобранной IMGFS прошивки-донора на целевую (в описании исхожу из "правильной" прошивки, где OEM значит именно OEM, а не самосборных порнографий, где OEMDrivers засунуты в SYS... иначе апроксимируем все на реальный случай...), правим RGU-реестра по необходимости. Ребилдим DSM от OEMDrivers. (...можно раскидать на несколько пакетов оригинальный OEMDrivers, чтобы не парится... исходим из пакета целевого устройства при разбиении на пакеты...)
6. Закидываем в ROM свой diskimage_Ver.nb0, файлики XIP, которые там требуются (boot.rgu и т.д.)
7. Зашиваем в diskimage_Ver.nb0 новый собранный XIP.
7. Собираем прошивку, шьемся, ловим "неожиданности" (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)

В целом, вроде примерно так. (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)


Спасибо сказали:
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 14.2.2008, 19:02
Сообщение #3


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Пример портирования Ровера G6 на HP RW6815

Конкретику описывать гораздо проще (IMG:http://forum.pda2u.ru/style_emoticons/default/biggrin.gif) Общая технология была понятна, но вот нюансы... В общем, делал так (опускаю эксперименты, пишу сразу по результату):

1. С помощью кухни Atom Life разобрал прошивку Rover G6 из доступных мне источников (см. ветку про прошивку Ровер G6 в разделе "Прошивка"). Вытащил XIP и IMGFS, распаковал XIP в общий формат и разобрал IMGFS в виде dump. ExtRom пока не найден (IMG:http://forum.pda2u.ru/style_emoticons/default/sad.gif)
2. Пересобрал XIP, там все просто и абсолютно аналогично портированию XIP с атомов (см. ветку про разборку XIP в разделе "Шаманства..."). Даже никаких модулей не пришлось двигать дополнительно от своего ядра, все заимствовал от варианта под атом. Coredll.dll тоже двигать не пришлось...
3. Закинул dump от ровера в кухню, написал батник DumpToPackages (в опубликованном варианте в соседней ветке прилагается), запустил его и получил OEM и SYS.
4. В ROM закинул все от 6815 (diskimage_Ver.nb0 и т.д.), в кухне есть и для 6815 и для роверов/орсио...
5. Запустил G'Reloc из кухни, ввел "правильные" адреса для наших устройств:
- slot 0: 01 F9 00 00
- slot 1: 03 D3 00 00
- size: 9E 90 00 00
- unknown: 00 00 00 00
6. После релока сделал ход конем (как нужно делать правильно, читать выше, я делал, чтобы запустить (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) ) . ТУПО перегнал весь OEMDrivers из своей прошивки из SYS в OEMDrivers из OEM в целевой. Удалил из целевой ее DSM и RGU, перебилдил DSM. (... правильно, все аккуратненько, ручками, с пересбором... (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) ).
7. Заменил XIP в ROM на пересобранный.
8. Собрал прошивку и "Ура!!! Заработало!!!" (IMG:http://forum.pda2u.ru/style_emoticons/default/biggrin.gif)


P.S. Сейчас закину в качестве опорного вариант для 6815 и опубликую ссылку. Можно разобрать на пакеты и модифицировать кухней (для роверов и орсио там также все есть), если нужна прошивка G6.

P.P.S. Оговорюсь, я преследовал две цели - академический интерес и заимствование модулей для нашей с ArHon-ом сборки. То есть создание полностью рабочей прошивки на базе G6 не входило в мои интересы. Для полностью рабочей нужно внимательно просмотреть RGU-шку от OEMDrivers от G6 и отпатчить ее ручками (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Правда я обещал народу в ветке про прототип русской WM6 для ровера, что будет альтернативный вариант, но может кто-нибудь из ровероводов соберет его? Мне сложно без самого девайса... (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Думаю, все были бы очень благодарны... Прошивка то реально живая с кучей "наворотов"!

P.P.P.S. Меня же сейчас очень интересует ExtRom от G6...
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 14.2.2008, 19:23
Сообщение #4


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Вот, вроде пока и все. (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
Общанная ссылка: HP_RW_6815_Rover_G6_WM6_RUS.zip
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Old Kind MadMike
сообщение 14.2.2008, 20:40
Сообщение #5


PDA2U.RU Team
****

Группа: Admin
Сообщений: 1806
Регистрация: 20.10.2007
Из: Moscow
Пользователь №: 11
Спасибо сказали: 172 раз(а)

Девайс:Samsung Galaxy Ace


Просто мегареспект!
Цитата(AGC @ 14.2.2008, 18:27) *
4. Релочим разобранный IMGFS прошивки-донора на "правильные" адреса целевого устройства с помощью G'Reloc.
5. ... правим RGU-реестра по необходимости. Ребилдим DSM от OEMDrivers.

Вот эти моменты поясни, плиз (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)

PS портировать для Ровера могу попробовать я - тем более как раз сбирался портировать прошивку с профета...
Только когда это будет? (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Времени нету нифига (IMG:http://forum.pda2u.ru/style_emoticons/default/sad.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 15.2.2008, 14:40
Сообщение #6


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Цитата(Old Kind MadMike @ 14.2.2008, 20:40) *
Цитата

4. Релочим разобранный IMGFS прошивки-донора на "правильные" адреса целевого устройства с помощью G'Reloc.
5. ... правим RGU-реестра по необходимости. Ребилдим DSM от OEMDrivers.

Вот эти моменты поясни, плиз (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)

4. Релочим разобранный IMGFS прошивки-донора на "правильные" адреса целевого устройства с помощью G'Reloc.
Практика... Запускаем G'Reloc из кухни, вводим в окошко "правильные" адреса для наших устройств:
- slot 0: 01F90000
- slot 1: 03D30000
- size: 9E900000
- unknown: 00000000

(...изначально "правильные" адреса можно посмотреть, запустив G'Reloc над своей целевой прошивкой или посмотреть, по-моему, в imageinfo.txt в подпапке .VM папки SYS своей же целевой прошивки...)

Дополнительные общие заметки по тому, что и как релочится G'Reloc:
1. Slot 00 and 01 layout structure (i may be wrong):

slot 00:
[0x01xxxxxx - 0x01xxxxxx] modules virtual bases aligned to 0x10000
[0x01xxxxxx - 0x01xxxxxx] actuals of modules in slot 01, aligned to 0x1000
ending of this interval is "Slot 00 VA End" (not including XIP actuals).
[0x01xxxxxx - 0x02000000] actuals of XIP modules wich landed in slot 01.

slot 01:
[0x02000000 - 0x02020000] - reserved space. (IMHO)
[0x02xxxxxx - 0x02xxxxxx] - virtual bases of slot 01 modules, aligned to 0x1000, ending of this interval is "Slot 01 VA End"
[0x02xxxxxx - 0x04000000] - virtual bases of XIP modules.


2. The dll files which are not in module form (S*, imageinfo.* ) are loaded in slot 01 and do not require relocation.


Чуточка дополнительной теории, не совсем по поводу G'Reloc... Информация для размышления, пока сам до конца не разобрался... Вообще, принцип XIP предполагает исполнение по месту расположения, т.е. без обычного для большого Windows механизма загрузки в память и пересчета адресов операционной системой при запуске модуля. Что делает G'Reloc понятно, не совсем пока понятно, разбирается ли он со связями (т.е. импорт функций по адресам и вызовы опять же по прямым адресам). Скорее всего, нет, тогда возникает ситуация, когда некоторые библиотеки, обладающие указанными в скобках особенностями, нужно бы ручками выставлять на свои изначальные места, если они тем или иным способом связаны с другими напрямую по адресам... Но с этим нужно более глубоко разбираться...


5. ... правим RGU-реестра по необходимости. Ребилдим DSM от OEMDrivers.
Тут основная проблема в несовпадении по структуре и составу пакетов OEMDrivers донора и цели. В OEMDrivers часто вставлены не только драйвера, но и куча ценных програм и прочих библиотек OEM (кодеки и т.п.). Как я описывал в примере портирования, делать вообще-то нельзя. Т.к. я просто выкинул всю реестровую часть от дополнительных модулей OEM. Оно, конечно, и без этого в целом работает. Но все же, на мой взгляд, стоило бы делать примерно так:

5.1. Анализируем структуру и состав OEMDrivers и там и там, включая в первую очередь анализ RGU на предмет драйверов.
5.2. Копируем весь пакет OEMDrivers целевой прошивки кроме RGU и DSM.
5.3. Редактируем RGU в источнике на предмет всего, что имелось в целевой прошивке, заменяя пересекающиеся, удаляя лишние, добавляя отсутствующиеся части относящиеся и смежные с драйверами. Одновременно удаляем лишние уже не нужные модули, которые в нашей прошивке другие (были заменены функционально другими библиотеками, если прошивки совсем разные).
5.4. С помощью BuildDSM.exe из кухни ребилдим DSM от нового собранного OEMDrivers.

Как вариант, вместо 5.2-5.3 можно разбить пакет OEMDrivers источника на парочку. Вместо первого просто засунуть полностью свой целевой OEMDrivers, во втором просто вычистить все, что есть в первом (лишние файлы и модули + чистка RGU).


Вроде так (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Только сами шаги нужно делать в той последовательности, которую я описал. То есть сначала релочим модули, а потом меняем OEMDrivers на свой.


Цитата(Old Kind MadMike @ 14.2.2008, 20:40) *
PS портировать для Ровера могу попробовать я - тем более как раз сбирался портировать прошивку с профета...
Только когда это будет? (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Времени нету нифига (IMG:http://forum.pda2u.ru/style_emoticons/default/sad.gif)

Ясно (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Могу предложить в качестве помощи собрать прототип с ядром и драйверами ровера, а дальше уже его можно будет дорабатывать. Сегодня вечером закину (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Old Kind MadMike
сообщение 15.2.2008, 15:25
Сообщение #7


PDA2U.RU Team
****

Группа: Admin
Сообщений: 1806
Регистрация: 20.10.2007
Из: Moscow
Пользователь №: 11
Спасибо сказали: 172 раз(а)

Девайс:Samsung Galaxy Ace


Цитата
Могу предложить в качестве помощи собрать прототип с ядром и драйверами ровера

Так неинтересно - я сам хочу (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 15.2.2008, 15:44
Сообщение #8


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Цитата(Old Kind MadMike @ 15.2.2008, 15:25) *
Так неинтересно - я сам хочу (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)

Ок. Тогда не буду (IMG:http://forum.pda2u.ru/style_emoticons/default/biggrin.gif) Займусь тогда экспериментом с HTC Wizard, хочу с него адаптировать прошивку...
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Old Kind MadMike
сообщение 15.2.2008, 16:08
Сообщение #9


PDA2U.RU Team
****

Группа: Admin
Сообщений: 1806
Регистрация: 20.10.2007
Из: Moscow
Пользователь №: 11
Спасибо сказали: 172 раз(а)

Девайс:Samsung Galaxy Ace


Цитата
Займусь тогда экспериментом с HTC Wizard, хочу с него адаптировать прошивку...

Может, для флейма сделаешь прототип? (IMG:http://forum.pda2u.ru/style_emoticons/default/wink.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 18.2.2008, 11:46
Сообщение #10


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Цитата(Old Kind MadMike @ 15.2.2008, 16:08) *
Может, для флейма сделаешь прототип? (IMG:http://forum.pda2u.ru/style_emoticons/default/wink.gif)

Можно, но только несколько позже (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Я пока 6.1 изучаю на глюки своей же русификации (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 24.2.2008, 12:34
Сообщение #11


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Забыл написать, для портирования самосборных прошивок с других устройств нужно еще разбираться с сертификатами (делать их микс)... А то будет веселая картинка, когда устройство пойдет в загрузку, да на этом и будет висеть...

Хотя, тут как повезет, на G6 проблемы не было, а вот HTC Wizard с прошивкой от 3ppc вызвал проблему (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 12.7.2008, 23:33
Сообщение #12


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond



 ! 

Перенес тему из Закрытого раздела в Шаманства в связи с возникновением вопросов на данную тему в разделе Прошивка :)
 


Спасибо сказали:
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 29.3.2020, 18:26

Rambler's Top100 Яндекс.Метрика