![]() |
|
![]() |
![]()
Сообщение
#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) |
![]() |
|
![]() |
![]()
Сообщение
#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) |
![]() |
|
![]()
Сообщение
#3
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Просто мегареспект!
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) |
![]() |
|
![]()
Сообщение
#4
|
|
PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 4884 Регистрация: 25.11.2007 Из: СПб Пользователь №: 32 Спасибо сказали: 1657 раз(а) Девайс:RW6815/P320/Diamond ![]() |
Цитата 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 на свой. 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) |
![]() |
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 8.4.2025, 9:45 |