|
15.11.2007, 0:02
Сообщение
#1
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace |
В приложении роверовский XIP (любезно выковырянный k0ster'ом) и утилиты для ковыряния.
При распаковке этого XIP сталкиваюсь с проблемой: не могу построить карту (write map). Обращался к k0ster'у - у того карта строится. Попробуйте, строится ли карта у вас? Сообщение отредактировал BigMike - 18.11.2007, 23:48
Прикрепленные файлы
|
|
|
![]() |
3.1.2008, 5:35
Сообщение
#2
|
|
|
PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 4884 Регистрация: 25.11.2007 Из: СПб Пользователь №: 32 Спасибо сказали: 1657 раз(а) Девайс:RW6815/P320/Diamond |
Портирование ядра ОС из XIP WM6 ATOM/ATOM EXEC на аппаратное ядро из XIP WM5 RW6815 и других собратьев
По сути вся технология описана в предыдущих сообщениях, ниже просто постарался изложить как то более системно и детально конкретные действия, да добавил небольшие общие комментарии (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) 1. Берем diskimage_Ver.nb0 от оригинальной WM5 WWE целевого устройства (если берется локализованная прошивка, то в дальнейшем нужно, видимо, будет править boot.rgu перед сборкой XIP на предмет замены локалей для русской 0419 на 0409, если донор WM6 WWE). 2. Вырезаем из нее XIP в виде блока 180000-53FFFF и сохраняем как xip.bin в папку для разборки. 3. Разбираем XIP с помощью XIPPort ("dump xip.bin" и затем "write maps"). 4. Аналогичным образом берем diskimage_Ver.nb0 от прошивки-донора ОС WM6 ATOM/ATOM EXEC, вырезаем из нее XIP и разбираем в другую папку. 5. Из подпапки Out/Modules разобранного XIP WM5 сразу удаляем отладочные hd.dll и osaxst0.dll (удаляем папки и соответствующие текстовые файлы). Они не нужны. 6. В XIPPort WM6 генерируем пакеты ("make pkgs"). 7. Из XIP WM6 из подпапок MSXIPKernel и MSXIPKernelLTK папки Out/Files переносим с заменой все файлы ОС WM6 в подпапку Out/Files WM5 (все файлы и папки). 8. Из XIP WM6 из подпапок MSXIPKernel и MSXIPKernelLTK папки Out/Modules переносим с заменой все файлы ОС WM6 в подпапку Out/Modules WM5 (все файлы и папки). Для RW6815 MSXIPKernelLTK была пустая. 9. Открываем сгенерированные ранее map.txt от WM5 и WM6. Смотрим секцию "Start: first DLL address - End: last DLL address" и следующую сразу за ней до "Start: start of RAM". Они должны быть просто полностью идентичны приведенным ниже. CODE RW6815 WM5 WWE ~~~~~~~~~~~~~~ 00000000 - 01f901fd L01f901fd NUL 01f901fd - 01f901fd L00000000 Start: first DLL address 01f901fd - 01fd3000 L00042e03 NUL 01fd3000 - 01fd4000 L00001000 initialized data of region_1 ceddk.dll 01fd4000 - 01fe3000 L0000f000 initialized data of region_1 TrueFFS.dll 01fe3000 - 01fe4000 L00001000 initialized data of region_2 cecompr.dll 01fe4000 - 01ff1000 L0000d000 initialized data of region_1 stratad_intel_l.dll 01ff1000 - 01ff2000 L00001000 initialized data of region_1 devmgr.dll 01ff2000 - 01ff3000 L00001000 initialized data of region_1 busenum.dll 01ff3000 - 01ff4000 L00001000 initialized data of region_1 mspart.dll 01ff4000 - 01ff5000 L00001000 initialized data of region_1 regenum.dll 01ff5000 - 01ff6000 L00001000 initialized data of region_1 imgfs.dll 01ff6000 - 01ff7000 L00001000 initialized data of region_1 fatfsd.dll 01ff7000 - 01ff9000 L00002000 initialized data of region_1 crypt32.dll 01ff9000 - 01ffa000 L00001000 initialized data of region_1 pm.dll 01ffa000 - 01ffb000 L00001000 initialized data of region_1 fatutil.dll 01ffb000 - 01ffc000 L00001000 initialized data of region_1 fsreplxfilt.dll 01ffc000 - 01ffd000 L00001000 initialized data of region_1 diskcache.dll 01ffd000 - 01ffe000 L00001000 initialized data of region_1 fsdmgr.dll 01ffe000 - 01fff000 L00001000 initialized data of region_1 certmod.dll 01fff000 - 02000000 L00001000 initialized data of region_1 coredll.dll 02000000 - 02000000 L00000000 End: last DLL address 02000000 - 03d70000 L01d70000 NUL 03d70000 - 03d76000 L00006000 Virtual base address of ceddk.dll 03d76000 - 03d80000 L0000a000 NUL 03d80000 - 03dcc000 L0004c000 Virtual base address of TrueFFS.dll 03dcc000 - 03dd0000 L00004000 NUL 03dd0000 - 03dd7000 L00007000 Virtual base address of cecompr.dll 03dd7000 - 03de0000 L00009000 NUL 03de0000 - 03df6000 L00016000 Virtual base address of stratad_intel_l.dll 03df6000 - 03e00000 L0000a000 NUL 03e00000 - 03e0c000 L0000c000 Virtual base address of devmgr.dll 03e0c000 - 03e10000 L00004000 NUL 03e10000 - 03e16000 L00006000 Virtual base address of busenum.dll 03e16000 - 03e20000 L0000a000 NUL 03e20000 - 03e28000 L00008000 Virtual base address of mspart.dll 03e28000 - 03e30000 L00008000 NUL 03e30000 - 03e34000 L00004000 Virtual base address of regenum.dll 03e34000 - 03e40000 L0000c000 NUL 03e40000 - 03e4a000 L0000a000 Virtual base address of imgfs.dll 03e4a000 - 03e50000 L00006000 NUL 03e50000 - 03e63000 L00013000 Virtual base address of fatfsd.dll 03e63000 - 03e70000 L0000d000 NUL 03e70000 - 03ee2000 L00072000 Virtual base address of crypt32.dll 03ee2000 - 03ef0000 L0000e000 NUL 03ef0000 - 03efd000 L0000d000 Virtual base address of pm.dll 03efd000 - 03f00000 L00003000 NUL 03f00000 - 03f09000 L00009000 Virtual base address of fatutil.dll 03f09000 - 03f10000 L00007000 NUL 03f10000 - 03f19000 L00009000 Virtual base address of fsreplxfilt.dll 03f19000 - 03f20000 L00007000 NUL 03f20000 - 03f25000 L00005000 Virtual base address of diskcache.dll 03f25000 - 03f30000 L0000b000 NUL 03f30000 - 03f45000 L00015000 Virtual base address of fsdmgr.dll 03f45000 - 03f50000 L0000b000 NUL 03f50000 - 03f5b000 L0000b000 Virtual base address of certmod.dll 03f5b000 - 03f60000 L00005000 NUL 03f60000 - 03ff5000 L00095000 Virtual base address of coredll.dll 03ff5000 - 80580000 L7c58b000 NUL ... CODE ATOM EXEC TRED RC3 ~~~~~~~~~~~~~~~~~~ 00000000 - 01f901fd L01f901fd NUL 01f901fd - 01f901fd L00000000 Start: first DLL address 01f901fd - 01fd1000 L00040e03 NUL 01fd1000 - 01fd2000 L00001000 initialized data of region_1 ceddk.dll 01fd2000 - 01fe1000 L0000f000 initialized data of region_1 TrueFFS.dll 01fe1000 - 01fe2000 L00001000 initialized data of region_2 cecompr.dll 01fe2000 - 01fef000 L0000d000 initialized data of region_1 stratad_intel_l.dll 01fef000 - 01ff0000 L00001000 initialized data of region_1 regenum.dll 01ff0000 - 01ff1000 L00001000 initialized data of region_1 pm.dll 01ff1000 - 01ff2000 L00001000 initialized data of region_1 mspart.dll 01ff2000 - 01ff3000 L00001000 initialized data of region_1 imgfs.dll 01ff3000 - 01ff4000 L00001000 initialized data of region_1 fsreplxfilt.dll 01ff4000 - 01ff5000 L00001000 initialized data of region_1 fsdmgr.dll 01ff5000 - 01ff6000 L00001000 initialized data of region_1 fatutil.dll 01ff6000 - 01ff7000 L00001000 initialized data of region_1 fatfsd.dll 01ff7000 - 01ff8000 L00001000 initialized data of region_1 encfilt.dll 01ff8000 - 01ff9000 L00001000 initialized data of region_1 diskcache.dll 01ff9000 - 01ffa000 L00001000 initialized data of region_1 devmgr.dll 01ffa000 - 01ffc000 L00002000 initialized data of region_1 crypt32.dll 01ffc000 - 01ffd000 L00001000 initialized data of region_1 coredll.dll 01ffd000 - 01ffe000 L00001000 initialized data of region_1 certmod.dll 01ffe000 - 01fff000 L00001000 initialized data of region_1 cachefilt.dll 01fff000 - 02000000 L00001000 initialized data of region_1 busenum.dll 02000000 - 02000000 L00000000 End: last DLL address 02000000 - 03def000 L01def000 NUL 03def000 - 03df5000 L00006000 Virtual base address of ceddk.dll 03df5000 - 03e41000 L0004c000 Virtual base address of TrueFFS.dll 03e41000 - 03e48000 L00007000 Virtual base address of cecompr.dll 03e48000 - 03e5e000 L00016000 Virtual base address of stratad_intel_l.dll 03e5e000 - 03e62000 L00004000 Virtual base address of regenum.dll 03e62000 - 03e71000 L0000f000 Virtual base address of pm.dll 03e71000 - 03e79000 L00008000 Virtual base address of mspart.dll 03e79000 - 03e83000 L0000a000 Virtual base address of imgfs.dll 03e83000 - 03e8d000 L0000a000 Virtual base address of fsreplxfilt.dll 03e8d000 - 03ea2000 L00015000 Virtual base address of fsdmgr.dll 03ea2000 - 03eab000 L00009000 Virtual base address of fatutil.dll 03eab000 - 03ebe000 L00013000 Virtual base address of fatfsd.dll 03ebe000 - 03eca000 L0000c000 Virtual base address of encfilt.dll 03eca000 - 03ed0000 L00006000 Virtual base address of diskcache.dll 03ed0000 - 03edc000 L0000c000 Virtual base address of devmgr.dll 03edc000 - 03f4e000 L00072000 Virtual base address of crypt32.dll 03f4e000 - 03fe4000 L00096000 Virtual base address of coredll.dll 03fe4000 - 03ff0000 L0000c000 Virtual base address of certmod.dll 03ff0000 - 03ffa000 L0000a000 Virtual base address of cachefilt.dll 03ffa000 - 04000000 L00006000 Virtual base address of busenum.dll 04000000 - 80180000 L7c180000 NUL ... 10. Далее берем из XIP WM5 библиотеки аппаратного ядра ceddk.dll, cecompr.dll, stratad_intel_l.dll и trueffs.dll и перемещаем их по vbase и realaddress XIP WM6 с помощью M'Reloc_nk. Они конфликтуют с pm.dll и regenum.dll от XIP WM6. Для этого запускаем M'Reloc_nk и последовательно открываем в нем папки этих библиотек из XIP WM5.Единственная хитрость, нужно добиться от M'Reloc_nk, чтобы после DoIT realaddress был правильный, для этого из нужного адреса вычитаем длину блока. В общем, для указанных выше таблиц просто привожу значения для M'Reloc_nk: ceddk.dll e32_vbase: 03DEF000 e32_realaddr: 01FD0000 (после DoIT будет 01FD0000+1000=01FD1000) trueffs.dll e32_vbase: 03DF5000 e32_realaddr: 1FC3000 (после DoIT будет 1FC3000+F000=01FD2000) cecompr.dll e32_vbase: 03E41000 e32_realaddr: 01FE0000 (после DoIT будет 01FE0000+1000=01FE1000) stratad_intel_l.dll e32_vbase: 03E48000 e32_realaddr: 1FD5000 (после DoIT будет 1FD5000+D000=01FE2000) 11. У этих четырех библиотек редактируем imageinfo.txt, заменяя значения e32_vbase и o32[x].o32_realaddr на правильные (e32_vbase берем указанные выше для M'Reloc_nk, o32[x].o32_realaddr берем оттуда же, но скалькулированный в скобочках или их map.txt WM6, x- номер региона в map.txt [там не ошибиться, будут старые значения из map.txt WM5 типа D=01FE3000]) 12. Увеличиваем в WM5 в ROMHDR.TXT physlast (ставим значение как в XIP WM6 = 9AFE2990). Впрочем, можно и точнее подогнать (я по аналогии с ATOM просто прибавил 100000...). 13. Ищем в map.txt WM5 строку старого смещения рома (можно по "rom_00") CODE 9ad20b2c - 9ad20b80 L00000054 rom_00 header: dlls=01f901fd-02000000 phys=9ac00000-9aea931c, 24 modules, 7 files, 4 copyentries ext=9ac0278c ram=80580000-84000000 cputype=000001c2 Запоминаем из нее старый адрес смещения. Пример из указанной строки: 9ad20b2c (скорее всего, будет другой, берете свой) 14. Запускаем XIPPort WM5, делаем Realoc_P и write_maps. 15. Смотрим на всякий случай новый map.txt на предмет отсутствия восклицательных знаков (конфликты). 16. Ищем в новом map.txt строку (можно по rom_00) CODE 9adb19d4 - 9adb1a28 L00000054 rom_00 header: dlls=01f901fd-02000000 phys=9ac00000-9afe2990, 24 modules, 8 files, 2 copyentries ext=9ac0271c ram=80180000-84000000 cputype=000001c2 Берем из нее новый адрес смещения. Пример из указанной строки: 9adb19d4 (скорее всего, будет другой, берете свой) 17. Ищем в S000 nk.exe старый адрес смещения рома (байты идут инвертно), меняем на новый. 18. Пробуем искать в S000 nk.exe: 05 00 52 E3 0E 00 00 8A Если нашли, далее по смещению +0x10 должно быть: 01 00 53 E3 Там и правим 01 на 02... Если не нашли, то плохо (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Будем думать... 19. Собираем новый XIP ("build xip_out.bin"). 20. Закидываем в папку WM5 diskimage_Ver.nb0 от целевой WM6. 21. Шьем XIP назад (в полях вводим значения: 00180000 и diskimage_Ver.nb0, жмем "write xip_out.bin to") Вроде ничего не забыл (IMG:http://forum.pda2u.ru/style_emoticons/default/biggrin.gif) P.S. По boot.rgu. Если берется WM5 русская, я бы попробовал поменять 419 на 409. К сожалению, на этой фазе у меня еще прошивка не заводилась, когда я пытался портировать с русской WM5, поэтому сказать, что будет без замены не могу. P.P.S. В WM5 RW6815 в Files был mxip_initdb.vol, причем относился как бы к OEM. В WM6 ATOM это же лежало в IMGFS. Я дополнительно менял этот файл в XIP с коррекцией размера в текстовом файле описания. Но реально пробовал, это не оказывает какого-то влияния (по крайней мере, не заметил). P.P.P.S. Извиняюсь за столь подробное изложение, наверняка ряд вещей очевиден. Но со временем все забывается, чтобы самому потом мучительно не вспоминать. Да и писал сразу и для новичков с других устройств, чтобы не осталось неясностей и можно было при необходимости действовать по аналогии (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Потом, если будут силы, попробую дописать уточненную общую инструкцию, которая приведена соседней ветке форума на английском, т.к. вещи по релоку модулей и правке nk.exe при портировании с WM6 на WM5 там как то не затронуты (да и вообще в явном и собранном виде этого нигде не нашел). |
|
|
BigMike Разбираем XIP 15.11.2007, 0:02
Winterice нет не строится вылетает ошибка, полное описание и... 15.11.2007, 9:41
BigMike Цитатавылетает ошибка, полное описание из дебугера... 15.11.2007, 13:06
BigMike Дело сдвинулось с мертвой точки. Возможно, потому ... 17.11.2007, 10:50
alex_beda Цитата(BigMike @ 17.11.2007, 12:50) Дело ... 17.11.2007, 11:43
BigMike Новости с полей ковыряния XIP.
Как выясняется, ста... 17.11.2007, 17:38
alex_beda Цитата(BigMike @ 17.11.2007, 19:38) Новос... 18.11.2007, 9:30
BigMike Дык то, что он меньше - это как раз нормально
Кон... 18.11.2007, 23:42
Winterice Короче данный хиппорт нормально извлекает и строит... 19.11.2007, 11:47
BigMike Цитатазапускаю хиппорт извлекается только nk.exe н... 19.11.2007, 23:30
AGC Что то здесь давно не было сообщений Никто не под... 24.12.2007, 8:53
AGC Удалось достигнуть некоторых результатов с RW6815 ... 26.12.2007, 13:32
AGC 2. В результате изучения XIP удалось поднять проши... 26.12.2007, 13:51
AGC 3. Удалось пересобрать XIP чистого ATOM так, что т... 26.12.2007, 14:16
AGC Как заключение. Портировать ядро оси с ATOM (и ATO... 26.12.2007, 14:23
ArHon Цитата(AGC @ 26.12.2007, 14:23) Как заклю... 26.12.2007, 18:55
AGC Цитата(ArHon @ 26.12.2007, 18:55) Молодец... 26.12.2007, 19:23
BigMike Респект! 26.12.2007, 15:44
alex_beda Ну что могу сказать лично от себя,
я хип'ом за... 26.12.2007, 15:53
AGC Цитата(alex_beda @ 26.12.2007, 15:53) Ест... 26.12.2007, 16:57
AGC 2 alex_beda: Или речь идет совсем не о ddi.dll, а ... 26.12.2007, 17:08
AGC Да, забыл еще написать. Я бы не стал слепо доверят... 26.12.2007, 21:01
AGC Нашел, может не очень полезную с практической точк... 28.12.2007, 3:43
AGC В общем, с портированием WM6 на аппаратное ядро RW... 30.12.2007, 21:28
AGC Всех с наступившим Новым Годом! Успехов и счас... 1.1.2008, 16:24
AGC Вот и все! Я нашел самое ключевое изменение... 1.1.2008, 18:31
AGC Уу...у! Ну ладно, раз никто не пишет, пойду т... 1.1.2008, 22:08
ArHon AGC, молодец! Как просохнешь, собирай всю инфу... 2.1.2008, 0:57
AGC Цитата(ArHon @ 2.1.2008, 0:57) AGC, молод... 2.1.2008, 7:17
ArHon AGC, есть положительный результат! По твоей те... 2.1.2008, 20:41
AGC Цитата(ArHon @ 2.1.2008, 20:41) AGC, есть... 3.1.2008, 2:07
ArHon Огромное спасибо AGC за его труд, но я все-таки ду... 3.1.2008, 13:28
alex_beda Цитата(ArHon @ 3.1.2008, 15:28) P.S. Ману... 3.1.2008, 19:24
AGC Цитата(alex_beda @ 3.1.2008, 19:24) Прило... 4.1.2008, 17:09
AGC Зашился с ядром Ровера на базе ОС 5.2.1948. Все Ок... 4.1.2008, 18:25
ArHon AGC, а хард ресет на роверовской прошивке попробов... 4.1.2008, 18:39
AGC Цитата(ArHon @ 4.1.2008, 18:39) AGC, а ха... 4.1.2008, 18:49
AGC 2 Arhon: Кстати, с Роверовским ядром уже реально п... 4.1.2008, 19:35
ArHon AGC, я так подозреваю, что все дело в nk.exe, а во... 5.1.2008, 1:54
AGC Цитата(ArHon @ 5.1.2008, 1:54) AGC, я так... 5.1.2008, 2:36
ArHon ВСЕ! Решение с хард ресетом найдено!
P.S... 5.1.2008, 12:42
AGC Цитата(ArHon @ 5.1.2008, 12:42) ВСЕ! ... 5.1.2008, 16:43
BigMike Господа, утилитку M'reloc_nk выложите, плиз?
... 5.1.2008, 17:00
AGC Цитата(BigMike @ 5.1.2008, 17:00) Господа... 5.1.2008, 17:15
ArHon AGC, я описал технологию в скрытом разделе 5.1.2008, 17:26
AGC Цитата(ArHon @ 5.1.2008, 17:26) AGC, я оп... 5.1.2008, 17:54
BigMike И по повду дизассемблирования тоже не мешало бы ... 7.1.2008, 21:38
ArHon BigMike, сам файл nk.exe я вытащил sDuper'ом и... 8.1.2008, 1:09
BigMike Цитата(AGC @ 9.1.2008, 7:57) Вот, по пово... 9.1.2008, 9:41
AGC Цитата(BigMike @ 9.1.2008, 9:41) Может, д... 9.1.2008, 22:25
AGC Вот. На xda-developers появилась инструкция по пор... 12.1.2008, 23:56
BigMike Цитатаинструкция по портированию новой версии ОС
Э... 6.2.2008, 15:03
AGC Цитата(BigMike @ 6.2.2008, 15:03) Этот ре... 9.2.2008, 8:22
BigMike ЦитатаА так... Ну другой язык - это отдельный разг... 9.2.2008, 11:11
AGC Цитата(BigMike @ 9.2.2008, 11:11) Ой ли? ... 10.2.2008, 15:59
BigMike Мы с ним говорили не про перевод через MUI, а про ... 11.2.2008, 9:56
AGC Цитата(BigMike @ 11.2.2008, 9:56) Мы с ни... 11.2.2008, 14:45
BigMike ЦитатаЕсли будешь тащить с пропета SYS в IMGFS, та... 11.2.2008, 14:47
k0ster BigMike
ЦитатаМы с ним говорили не про перевод чер... 26.2.2008, 11:59
BigMike Т.е. кроме реестра, сами системные модули "ун... 26.2.2008, 12:04
k0ster Абсолютно верно.
Переводить нужно только файлы с р... 26.2.2008, 15:06
BigMike Я правильно понимаю, что процедура настолько прост... 26.2.2008, 15:14
ArHon Цитата(BigMike @ 26.2.2008, 15:14) Я прав... 26.2.2008, 15:34
AGC Цитата(BigMike @ 26.2.2008, 15:14) Я прав... 26.2.2008, 19:07
salman DZ Помогите разобраться как ХИП обратно в ром вставит... 2.3.2008, 12:27
AGC Цитата(salman DZ @ 2.3.2008, 12:27) Помог... 2.3.2008, 14:37
BigMike XIPPort отлично вставляет все, куда надо.
Кидаешь ... 2.3.2008, 21:06
AGC Для релока модулей XIPа можно использовать M'R... 1.10.2008, 8:36![]() ![]() |
|
Текстовая версия | Сейчас: 7.5.2026, 3:54 |