![]() |
|
|
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
BigMike
Образ родной прошивки есть, желание _большое_, руки..руки вроде бы прямые (IMG:http://forum.pda2u.ru/style_emoticons/default/rolleyes.gif) ящик пива уже под столом дожидается своего часа (IMG:http://forum.pda2u.ru/style_emoticons/default/rolleyes.gif) Прежде всего, с чего мне следует начать? ..в данный момент читаю FAQ по сборке прошивок к различным девайсам и запасаюсь хирургическими инструментами для препарирования прошивки.. |
![]() |
|
![]()
Сообщение
#2
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
ray,
Цитата Прежде всего, с чего мне следует начать? Прежде всего нужно взять образ оси - который *.nb0 и весом 30-60МБ. Называется скорее всего как-то типа Diskimage.nb0. Разделить его на XIP и IMGFS. Для этого нужен WinHEX, XIPPort и кухня для редактирования прошивок. Скачать кухню для редактирования прошивок можно, например, здесь. XIPPort качай здесь. Чтобы выделить XIP нужно сделать следующее. Ищешь в WinHEX hex-поиском байты FF FF FF FF F8 AC 2C 9D. Байт F8 должен приходиться на круглый адрес - с него как раз начинается IMGFS секция. Удаляешь все, начиная с этого адреса и до конца файла. В оставшемся куске ищешь байты FE 03 00 EA Скорее всего, они будут два раза. Каждый такой кусок - начало секции XIP. Секция может быть одна или две. Во втором случае - нам нужна последняя. Т.е. вырезаем кусок, начиная с FE 03 00 EA и до конца уже обрезанного файла и сохраняем его под именем xip.bin Теперь идем сюда и учимся портировать ядро XIP. Для начала сделай все это, потом продолжим. |
![]() |
|
![]()
Сообщение
#3
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
BigMike В общем, не стал ждать до завтра.. (IMG:http://forum.pda2u.ru/style_emoticons/default/rolleyes.gif) и выделил XIP из родной wm5 и из wm6 так как ты описал. Вроде все нормально. Читаю про портирование ядра XIP, половина текста не понятно, ну это ерунда, разберусь..
|
![]() |
|
![]()
Сообщение
#4
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Цитата половина текста не понятно, ну это ерунда, разберусь Будут конкретные вопросы - задавай, не стесняйся (IMG:http://forum.pda2u.ru/style_emoticons/default/wink.gif) Вообще там ничего сложного, и инструкция достаточно подробная. |
![]() |
|
![]()
Сообщение
#5
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
BigMike Пока завис на 6 пункте..
6.1.Натравил M'Reloc_nk на модуль XIP_NEW\Out\Modules\nk.exe e32_vbase 80100000 e32_vsive 000A2000 o32_vsize 00051000 o32_realaddr 803A0000 6.2 Сравнил XIP_NEW\Out\Modules\nk.exe\imageinfo.txt и XIP_NEW_COPY\Out\Modules\OemXipKernel\nk.exe\imageinfo.txt e32_vbase P+00000000 P+00000000 ... e32_vsize 000A2000 000A2000 ... o32[2].o32_vsize 00006000 00006000 ... o32[2].32_realaddr R=803A0000 R=803F0000 ... o32[3].o32_vsize 0004AD30 0004ADB0 ... o32[3].32_realaddr R=803A6000 R=803F6000 6.3P=80100000 6.4 e32_vbase для XIP_NEW_COPY 80100000 заносим его в M'Relock_nk 032_realaddr = 803F0000-00051000=8039F000 заносим в M'Relock_nk Doit! e32_vbase 80100000 e32_vsive 000A2000 o32_vsize 00051000 o32_realaddr 8039F000 Правим XIP_NEW\Out\Modules\nk.exe\imageinfo.txt o32_realaddr R=8039F000 кажется, что что-то делаю неправильно, а вот что? А может и правильно (IMG:http://forum.pda2u.ru/style_emoticons/default/rolleyes.gif) Вроде бы все правильно здесь делаю? |
![]() |
|
![]()
Сообщение
#6
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Если vsize у модуля не меняется по сравнению с прошивкой-донором, в которую он портируется - то адрес начала модуля я бы тоже не менял.
Лучше сделай 803A0000, потом построй карту. Если пересечений не будет - то оставь такой адрес. PS прошивка-донор официальная или самодельная? |
![]() |
|
![]()
Сообщение
#7
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
Цитата потом построй карту. Если пересечений не будет - то оставь такой адрес. Немного недогнал..Ставлю 803A0000, и продолжаю дальше по пунктам делать XIP? Или строю карту? А как/чем строить, и как проверить на пересечения? Образ родной ОСи - самопальный дамп с Rover S5 4mp Образ wm6 для Rover S5 2mp - вроде бы официальный. |
![]() |
|
![]()
Сообщение
#8
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Ставишь 803A0000, копируешь XIPPort.exe с dll-кой в папку XIP_NEW и запускаешь, нажимаешь кнопку build map.
Теперь в папке XIP_NEW/OUT есть два файла с описанием структуры памяти. Phisical map и еще один. Вот нам нужен как раз этот второй. Находишь в нем тот модуль, который ты релочил и проверяешь, что он корректно стоит на том месте, которое ты указал, и ни с чем не пересекается. Если не ошибаюсь, пересечения модулей XIPPort должен обозначать восклицательными знаками. ЗЫ Чтобы построить карту памяти, XIP в этой папке не должен быть разобран на пакеты OEM/SYS. |
![]() |
|
![]()
Сообщение
#9
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
Запустил XIPPort, кнопки build map там нет. Есть write maps и realloc P.
Пробовал нажимать realloc P затем write maps, пробовал просто нажимать write maps. Результат один: XIPPort выплевывает: Код See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ************** Exception Text ************** System.ArgumentException: An entry with the same key already exists. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.TreeSet`1.Add(T item) at System.Collections.Generic.SortedDictionary`2.Add(TKey key, TValue value) at XIPPort.Form1.CreateMap() at XIPPort.Form1.button2_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e)... Весь лог приведен еще Winterice'ом http://forum.pda2u.ru/forum/index.php?showto...dpost&p=249 |
![]() |
|
![]()
Сообщение
#10
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
В общем, поставил на ноут девственно чистую Windows Vista ..и XIPPort стал работать нормально (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Все проверил, пересечений нигде нет. На выходе получил xip_out, похудевший где-то килобайтов на 500 (в конце нового фала нет FF-ну это, как я понял, нормальное явление)
|
![]() |
|
![]()
Сообщение
#11
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Цитата Пробовал нажимать realloc P А вот это ты делал очень зря. Теперь сравни map нового XIP с оригинальным от WM6. Все модули, по идее, должны быть на тех же местах. Цитата XIPPort выплевывает: Если не ошибаюсь, эта ошибка связана со старой версией .NET |
![]() |
|
![]()
Сообщение
#12
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
|
![]() |
|
![]()
Сообщение
#13
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
Цитата Теперь сравни map нового XIP с оригинальным от WM6. Вроде бы все там нормально... Для верности решил повторить все заново (портирование ядра) и уже на пунктике Цитата 7.2 Теперь запускаем Xipport и делаем для XIP_NEW Realoc P, Write maps. xipport опять выпал с той же самой ошибкой (IMG:http://forum.pda2u.ru/style_emoticons/default/sad.gif) значит установка чистой винды на ПК не помогла Странно конечно, карты XIP'a из родной прошивки и карты XIP'a из wm6 нормально строятся хм,буду думать.. ЗЫ была установлена последняя версия dotNet. |
![]() |
|
![]()
Сообщение
#14
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
Вроде бы нашел из-за чего возникает ошибка,но вот как ее устранить - не знаю. Если при портировании XIP вообще не трогать модуль TrueFFS.dll, то все нормально работает: XIPPort строит карту, делает Realloc P. Как только я из папки XIP_OLD\OUT\MODULES копирую с заменой trueffs.dll\ и trueffs.dll.txt в XIP_NEW\OUT\MODULES, XIPPort на Write maps матерится: "An entry with the same key already exists", а на Realloc P: "Not enough space"
|
![]() |
|
![]()
Сообщение
#15
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Друзья PDA-Hack Сообщений: 396 Регистрация: 24.11.2007 Из: Р.Татарстан, г.Набережные Челны Пользователь №: 28 Спасибо сказали: 129 раз(а) Девайс:HP iPAQ rw6815 ![]() |
а ты его с помощью M'Relock_nk отрелочил?
|
![]() |
|
![]()
Сообщение
#16
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
ArHon Да, отрелочил его M'Relock_nk'ом.
|
![]() |
|
![]()
Сообщение
#17
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Цитата Если при портировании XIP вообще не трогать модуль TrueFFS.dll, то все нормально работает Давай сделаем ход конем... Пройдись по OEM части XIPа исходной прошивки и прошивки донора. В тотал командере есть функция сравнения по содержимому. Открываешь папку TrueFFS.dll в обоих XIP и сравниваешь между собой по содержимому (функцией ТС) файлы S00* Если отличий нет - то папку можно оставить. На всякий случай пройдись по всем ОЕМ модулям - не исключаю, что они все (разве что кроме nk.exe) идентичны. |
![]() |
|
![]()
Сообщение
#18
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
Все OEM модули различны, я тоже до этого додумался (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) и проверил. В общем буду думать как этот модуль туда прикрутить..
А если я все-таки поставлю модуль и соберу нормально XIP, что дальше? Вставлять его в wm6 прошивку? А потом что делать? |
![]() |
|
![]()
Сообщение
#19
|
|
![]() PDA2U.RU Team ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 1806 Регистрация: 20.10.2007 Из: Moscow Пользователь №: 11 Спасибо сказали: 172 раз(а) Девайс:Samsung Galaxy Ace ![]() |
Цитата Все OEM модули различны, я тоже до этого додумался и проверил. Хреново... значит действительно отличия систем серьезные, как я и предполагал (IMG:http://forum.pda2u.ru/style_emoticons/default/sad.gif) XIPPort вылетает до или после M'Reloc? Похоже, какая-то проблема в imageinfo.txt этого модуля. Попробуй сравни по содержимому эти файлы - где отличия? Вот эта строчка (данные из XIP Orsio n725 - просто для примера): Код Module name: TrueFFS.dll e32_objcnt: 00000005 e32_imageflags: 0000212E e32_entryrva: 00038D9C [b]e32_vbase: V=03D80000[/b] совпадает после M'Reloc? Можно, конечно, попробовать использовать XIP от 2МП, но фигзнает, чем это закончится... Цитата А если я все-таки поставлю модуль и соберу нормально XIP, что дальше? Вставлять его в wm6 прошивку? А потом что делать? Что значит "если"? Куда ты денешься с подводной лодки? (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) По-любому соберем рано или поздно. Дальше тебе нужно будет разобрать IMGFS обоих прошивок, разложить на пакеты OEM/SYS, после чего заменить пакет OEM прошивки-донора на аналогичный от оригинальной WM5, проверить адресацию и собрать все в готовый образ. |
![]() |
|
![]()
Сообщение
#20
|
|
Участник ![]() ![]() Группа: Разработчики Сообщений: 32 Регистрация: 20.3.2008 Пользователь №: 863 Спасибо сказали: 8 раз(а) Девайс:RoverPC S5 ![]() |
XIPPort вылетает и до и после M'Reloc_nk, разницы нет.
Цитата Все проверил, пересечений нигде нет. На выходе получил xip_out В тот раз все прошло нормально и XIP собрал потому что оставил без изменений папку TrueFFS.dll(вообще не копировал эту папку из XIP_OLD\.. в XIP_NEW\.. и не релочил этот модуль), а не из-за установки чистой Vista'ы. Строка e32_vbase в XIP_NEW..\FrueFFS.dll\imageinfo.txt совпадает после M'Reloc, но ее же надо изменить, как и строку o32[1].o32_realaddr Цитата 5.7. Теперь в самом файле XIP_NEW\Out\Modules\FrueFFS.dll\imageinfo.txt исправляем эти значения на значения из XIP_NEW_COPY\Out\Modules\OemXipKernel\FrueFFS.dll\imageinfo.txt (рис.5,6) Что я и делаю. Слева релоченный imageinfo.txt из XIP_NEW\..\trueffs.dll справа XIP_NEW_COPY\..\trueffs.dll (только строчки с различиями): Код e32_entryrva: 00038E34 00039268 e32_subsysminor: 00000001 00000002 e32_unit[0].rva: 00039A10 00039E50 e32_unit[1].rva: 00039924 00039D5C o32[0].o32_vsize: 00038B13 00038F53 o32[0].o32_psize: 00038B14 00038F54 o32[0].o32_dataptr: P+0020E000 P+00229000 o32[1].o32_dataptr: P+00124300 P+0017C1B0 o32[2].o32_dataptr: P+00247000 P+00262000 o32[3].o32_dataptr: P+0011CB5C P+00176A9C Из этих же 2х файлов: e32_vsize: 0004B000 e32_vbase: V=03E09000 o32[1].o32_vsize: 0000E5B4 o32[1].o32_realaddr: D=01FDE000 ЗЫ Извиняюсь за орфографию и оформление, пишу с коммуникатора. |
![]() |
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 5.4.2025, 4:30 |