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

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

Форумы PDA2U.RU _ Шаманства для посвященных _ Создание WM6 для RoverPC S5 (4МП)

Автор: ray 20.3.2008, 14:47

BigMike
Образ родной прошивки есть, желание _большое_, руки..руки вроде бы прямые rolleyes.gif ящик пива уже под столом дожидается своего часа rolleyes.gif
Прежде всего, с чего мне следует начать? ..в данный момент читаю FAQ по сборке прошивок к различным девайсам и запасаюсь хирургическими инструментами для препарирования прошивки..

Автор: BigMike 20.3.2008, 18:19

ray,

Цитата
Прежде всего, с чего мне следует начать?

Прежде всего нужно взять образ оси - который *.nb0 и весом 30-60МБ. Называется скорее всего как-то типа Diskimage.nb0.
Разделить его на XIP и IMGFS. Для этого нужен WinHEX, XIPPort и кухня для редактирования прошивок.
Скачать кухню для редактирования прошивок можно, например, http://forum.pda2u.ru/forum/index.php?showtopic=29. XIPPort качай http://forum.pda2u.ru/forum/index.php?s=&showtopic=36&view=findpost&p=294.
Чтобы выделить XIP нужно сделать следующее.
Ищешь в WinHEX hex-поиском байты FF FF FF FF F8 AC 2C 9D.
Байт F8 должен приходиться на круглый адрес - с него как раз начинается IMGFS секция.
Удаляешь все, начиная с этого адреса и до конца файла.
В оставшемся куске ищешь байты FE 03 00 EA
Скорее всего, они будут два раза. Каждый такой кусок - начало секции XIP. Секция может быть одна или две. Во втором случае - нам нужна последняя. Т.е. вырезаем кусок, начиная с FE 03 00 EA и до конца уже обрезанного файла и сохраняем его под именем xip.bin
Теперь идем http://forum.pda2u.ru/forum/index.php?showtopic=36 и учимся портировать ядро XIP.
Для начала сделай все это, потом продолжим.

Автор: ray 21.3.2008, 11:44

BigMike В общем, не стал ждать до завтра.. rolleyes.gif и выделил XIP из родной wm5 и из wm6 так как ты описал. Вроде все нормально. Читаю про портирование ядра XIP, половина текста не понятно, ну это ерунда, разберусь..

Автор: BigMike 21.3.2008, 12:25

Цитата
половина текста не понятно, ну это ерунда, разберусь

Будут конкретные вопросы - задавай, не стесняйся wink.gif
Вообще там ничего сложного, и инструкция достаточно подробная.

Автор: ray 21.3.2008, 17:21

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

кажется, что что-то делаю неправильно, а вот что? А может и правильно rolleyes.gif
Вроде бы все правильно здесь делаю?

Автор: BigMike 21.3.2008, 17:48

Если vsize у модуля не меняется по сравнению с прошивкой-донором, в которую он портируется - то адрес начала модуля я бы тоже не менял.
Лучше сделай 803A0000, потом построй карту. Если пересечений не будет - то оставь такой адрес.

PS прошивка-донор официальная или самодельная?

Автор: ray 21.3.2008, 18:29

Цитата
потом построй карту. Если пересечений не будет - то оставь такой адрес.

Немного недогнал..Ставлю 803A0000, и продолжаю дальше по пунктам делать XIP? Или строю карту? А как/чем строить, и как проверить на пересечения?

Образ родной ОСи - самопальный дамп с Rover S5 4mp
Образ wm6 для Rover S5 2mp - вроде бы официальный.

Автор: BigMike 21.3.2008, 19:15

Ставишь 803A0000, копируешь XIPPort.exe с dll-кой в папку XIP_NEW и запускаешь, нажимаешь кнопку build map.
Теперь в папке XIP_NEW/OUT есть два файла с описанием структуры памяти. Phisical map и еще один. Вот нам нужен как раз этот второй.
Находишь в нем тот модуль, который ты релочил и проверяешь, что он корректно стоит на том месте, которое ты указал, и ни с чем не пересекается.
Если не ошибаюсь, пересечения модулей XIPPort должен обозначать восклицательными знаками.

ЗЫ Чтобы построить карту памяти, XIP в этой папке не должен быть разобран на пакеты OEM/SYS.

Автор: ray 21.3.2008, 20:04

Запустил 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?showtopic=36&view=findpost&p=249

Автор: ray 22.3.2008, 4:25

В общем, поставил на ноут девственно чистую Windows Vista ..и XIPPort стал работать нормально smile.gif Все проверил, пересечений нигде нет. На выходе получил xip_out, похудевший где-то килобайтов на 500 (в конце нового фала нет FF-ну это, как я понял, нормальное явление)

Автор: BigMike 22.3.2008, 10:13

Цитата
Пробовал нажимать realloc P

А вот это ты делал очень зря.
Теперь сравни map нового XIP с оригинальным от WM6. Все модули, по идее, должны быть на тех же местах.
Цитата
XIPPort выплевывает:

Если не ошибаюсь, эта ошибка связана со старой версией .NET

Автор: BigMike 22.3.2008, 10:22

http://forum.pda2u.ru/forum/index.php?s=&showtopic=36&view=findpost&p=699

Автор: ray 22.3.2008, 13:31

Цитата
Теперь сравни map нового XIP с оригинальным от WM6.

Вроде бы все там нормально...

Для верности решил повторить все заново (портирование ядра) и уже на пунктике
Цитата
7.2 Теперь запускаем Xipport и делаем для XIP_NEW Realoc P, Write maps.

xipport опять выпал с той же самой ошибкой sad.gif значит установка чистой винды на ПК не помогла
Странно конечно, карты XIP'a из родной прошивки и карты XIP'a из wm6 нормально строятся хм,буду думать..

ЗЫ была установлена последняя версия dotNet.

Автор: ray 23.3.2008, 7:20

Вроде бы нашел из-за чего возникает ошибка,но вот как ее устранить - не знаю. Если при портировании 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"

Автор: ArHon 23.3.2008, 9:09

а ты его с помощью M'Relock_nk отрелочил?

Автор: ray 23.3.2008, 9:55

ArHon Да, отрелочил его M'Relock_nk'ом.

Автор: BigMike 23.3.2008, 11:27

Цитата
Если при портировании XIP вообще не трогать модуль TrueFFS.dll, то все нормально работает

Давай сделаем ход конем...
Пройдись по OEM части XIPа исходной прошивки и прошивки донора.
В тотал командере есть функция сравнения по содержимому. Открываешь папку TrueFFS.dll в обоих XIP и сравниваешь между собой по содержимому (функцией ТС) файлы S00* Если отличий нет - то папку можно оставить.
На всякий случай пройдись по всем ОЕМ модулям - не исключаю, что они все (разве что кроме nk.exe) идентичны.

Автор: ray 23.3.2008, 12:01

Все OEM модули различны, я тоже до этого додумался smile.gif и проверил. В общем буду думать как этот модуль туда прикрутить..
А если я все-таки поставлю модуль и соберу нормально XIP, что дальше? Вставлять его в wm6 прошивку? А потом что делать?

Автор: BigMike 23.3.2008, 12:32

Цитата
Все OEM модули различны, я тоже до этого додумался и проверил.

Хреново... значит действительно отличия систем серьезные, как я и предполагал 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 прошивку? А потом что делать?

Что значит "если"? Куда ты денешься с подводной лодки? smile.gif По-любому соберем рано или поздно.
Дальше тебе нужно будет разобрать IMGFS обоих прошивок, разложить на пакеты OEM/SYS, после чего заменить пакет OEM прошивки-донора на аналогичный от оригинальной WM5, проверить адресацию и собрать все в готовый образ.

Автор: ray 23.3.2008, 15:36

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

ЗЫ Извиняюсь за орфографию и оформление, пишу с коммуникатора.

Автор: ArHon 24.3.2008, 11:18

выложи куда-нибудь оба разобранных хипа - поковыряться надо

Автор: ray 24.3.2008, 14:17

Выкладываю:

XIP'ы, выдранные, но не разобранные _http://ifolder.ru/5860133
XIP'ы выдранные и разобранные _http://ifolder.ru/5860339

Не знаю, может быть все портируется и просто я где-нибудь туплю из-за постоянных недосыпаний sad.gif

Автор: ArHon 25.3.2008, 16:53

сегодня посмотрю, но беглый взгяд сразу - почему хипы из wm5 и wm6 отличаются по размеру?

Автор: ray 25.3.2008, 19:56

Цитата
почему хипы из wm5 и wm6 отличаются по размеру?

Если немного перефразировать вопрос: почему xip.bin wm5 меньше xip.bin wm6? А разве они должны быть одного размера?
Ну выдраны они правильно - это факт. И образы ОСей тоже вроде нормальные. Хм..в самом деле.. :/

Ради интереса и чтобы на время отвлечься от XIP'а (и попробовать собрать образ, не портируя XIP. Только что-то у меня сильное предчувствие, что это не прокатитsad.gif и без портирования не обойтись), разобрал IMGFS на OEM/SYS. После чего заменил OEM wm6 на OEM от wm5. Вопрос: как теперь проверить адресацию? И еще, заметил такую фигню: например, btd.dll (по-моему, драйвер блютуса) теперь есть и в SYS и в OEM, т.е. в образе wm5 он располагался в OEM, а в образе wm6 - в SYS. Теперь, при замене OEM wm6, получается, что он дублируется и в SYS и в OEM. Думаю, дубликат надо будет удалить ..или из SYS, или из OEM..

Автор: ArHon 26.3.2008, 15:56

Так, вобщем результат ковыряния таков: хипы отличаются довольно сильно, там есть некоторый гемморой... суть в том, что xipport вываливается с ошибкой не из-за trueffs, а из-за cecompr.dll - обрати внимание на разницу в размерах этих файлов.

Да, в случае релока nk.exe в M'Relock_nk надо вводить реальный адрес в o32_realaddr, т.е. идея такая, чтобы после DoIt! адрес стал правильным, т.е. попробовал - если адрес не совпадает, вводим другой (в данном случае без вычета vsize) и снова DoIt! пока не получим нужный результат

Суть ошибки Relock P состояит в том, что новый хип получается слишком большим. Обрати внимание - в хипе от wm6 есть секция WinCENLS_WWE - первый раз ее вижу в хипе. По идее в других прошивках эта секция идет в составе SYS прошивки. Можно попробовать убрать ее из хипа в прошивку, тогда и Relock P сделать будет можно и хип соберется. Надо пробовать, другого способа пока не вижу

Автор: ArHon 26.3.2008, 16:31

Цитата(ray @ 25.3.2008, 19:56) *
Ради интереса и чтобы на время отвлечься от XIP'а (и попробовать собрать образ, не портируя XIP. Только что-то у меня сильное предчувствие, что это не прокатитsad.gif и без портирования не обойтись)

не обойтись хотя бы потому, что в хип заныкана секция WinCENLS_WWE, которая необходима

Цитата(ray @ 25.3.2008, 19:56) *
разобрал IMGFS на OEM/SYS. После чего заменил OEM wm6 на OEM от wm5. Вопрос: как теперь проверить адресацию? И еще, заметил такую фигню: например, btd.dll (по-моему, драйвер блютуса) теперь есть и в SYS и в OEM, т.е. в образе wm5 он располагался в OEM, а в образе wm6 - в SYS. Теперь, при замене OEM wm6, получается, что он дублируется и в SYS и в OEM. Думаю, дубликат надо будет удалить ..или из SYS, или из OEM..

удалять будет нужно обязательно, в случае с блютусом (ты прав, это блютус smile.gif) удалять можно будет в OEM, в случае с другими драйверами дубликаты скорее всего нужно будет удалять из SYS, но это неоднозначно, надо будет смотреть и изучать smile.gif

Вот прикладываю пересобраный хип с учетом того, что секция WinCENLS_WWE переехала в прошивку smile.gif

 xip_out.rar ( 914.03 килобайт ) : 5
 

Автор: ray 26.3.2008, 18:37

Разобрал IMGFS, OEM заменил, WinCENLS_WWE закинул в SYS,

Цитата
в случае с другими драйверами дубликаты скорее всего нужно будет удалять из SYS, но это неоднозначно, надо будет смотреть и изучать

Код
Avrcp_MPplugin.dll // кажется что-то от блютуса, удаляем из OEM
bta2dp.dll // фича блютуса a2dp, удаляем из OEM
btd.dll // блютус, удаляем из OEM
bthasplugin.dll // блютус, удаляем из OEM
bthhid.dll // блютус, удаляем из OEM
bthidsvc.dll // блютус, удаляем из OEM
bthuniv.dll // блютус, удаляем из OEM
conshid.dll // кажется тоже что-то от блютуса, удаляем из OEM

//а тут я вообще не знаю
SYS\GPSID\d13b7447-0248-462a-bba4-d868f31642ed.rgu //есть в SYS, нет в OEM
SYS\GPSID\d13b7447-0248-462a-bba4-d868f31642ed.dsm //есть в SYS, нет в OEM
SYS\GPSID\gpsid.dll //есть в SYS, и в OEM
OEM\1ae37763-ae7a-4240-b25d-bfe317ade2f5\gpsid.dll

OEM\..\gwes.exe.0409.mui // mui для qwes, удаляем из OEM
SYS\base_lang_0419\gwes.exe.0419.mui // mui для qwes, оставляем в SYS
hidparse.dll // что то от блютуса, удаляем из OEM
kbdhid.dll //  блютус, удаляем из OEM
sbc.dll // блютус, удаляем из OEM
simtkit.dll //собственно говоря simtoolkit, но не знаю откуда удалить
sms_providers.dll //тоже фиг знает откуда удалить


После удаления дубликатов перед сборкой надо проверить/исправить адресацию в OEM и SYS. С SYS вроде бы все понятно: натравливаем на него G'Reloc и жмем Doit! А вот, что делать с OEM?

Автор: BigMike 26.3.2008, 19:03

Кстати, учитывая, что при прошивке этой WM6 на 4МП были проблемы как раз с блютусом - я бы блютусовые дрова взял из дампа WM5 для 4МП и положил их в ОЕМ (чтобы при будущих правках оси не забыть про них).

Автор: ArHon 26.3.2008, 21:46

simtkit.dll и sms_providers.dll можно удалить из OEM

G'Relock обрабатывает не только SYS, его вполне достаточно для работоспособной прошивки

gpsid удали из OEM

не забывай в случае удаления/добавления файлов из пакетов натравливать на пакеты BuildDSM.exe

Автор: ray 27.3.2008, 6:35

В общем, попробовал собрать и прошить. Видимо, собралась криво, т.к. при прошивке коммуникатор упал в down.. Не люблю делать неприлично большие посты, поэтому порядок своих действий (и последствия действий) при сборке вынес в прикрепленный файл. Может я что-то не так делаю sad.gif

 stepbystepwm6.rar ( 1.35 килобайт ) : 16
 

Автор: ArHon 27.3.2008, 11:11

Попробуй действовать поэтапно - раз сплеш скрин появляется при прошивке wm6 без правки хип, попробуй пока хип не трогать. Но в разобранной прошивке вовсе не надо ВЕСЬ OEM заменять. Для начала найди пакет, который называется OEMDrivers (и кстати, не факт, что он окажется в OEM), попробуй заменить его. Дальше на очереди идут OEM_Apps, там обычно специфичные для устройства приложения стоят.

Сначала попробуй OEMDrivers заменить на wm5 и прошиться

Автор: ray 27.3.2008, 14:37

Ну а так, в целом, если смотреть прикрепленный файл stepbystepwm6, правильно я действую?

Сплеш скрин появляется при прошивке wm6 без правки хип И без каких-либо _вообще_ изменений, т.е. я просто разбираю образ и сразу же собираю. В принципе, если прошить эту, так сказать "пересобранную" прошивку, все должно работать, а оно висит на сплеш скрине. Закрадываются смутные подозрения, что кухня из-за чего-то собирает образ ОСи некорректно..

Автор: ArHon 27.3.2008, 16:19

Цитата(ray @ 27.3.2008, 14:37) *
Ну а так, в целом, если смотреть прикрепленный файл stepbystepwm6, правильно я действую?

как я уже сказал - заменять полностью весь OEM не стоит, тем более редко встретишь прошивку, где корректно разнесены модули по SYS и OEM, вполне может оказаться, что SYS-пакет окажется в OEM, и наоборот

Цитата(ray @ 27.3.2008, 14:37) *
Сплеш скрин появляется при прошивке wm6 без правки хип И без каких-либо _вообще_ изменений, т.е. я просто разбираю образ и сразу же собираю. В принципе, если прошить эту, так сказать "пересобранную" прошивку, все должно работать, а оно висит на сплеш скрине. Закрадываются смутные подозрения, что кухня из-за чего-то собирает образ ОСи некорректно..

это вполне возможно, ведь неизвестно, является ли девайс клоном атома, возможно нужна другая кухня

Автор: BigMike 27.3.2008, 18:22

Цитата
кухня из-за чего-то собирает образ ОСи некорректно..

В папке /ROM/XIP есть несколько файлов dsm и один rgu
Ты догадался их заменить на аналогичные из своего XIP?

Автор: BigMike 27.3.2008, 18:23

Цитата
ведь неизвестно, является ли девайс клоном атома, возможно нужна другая кухня

Известно - не является.
Только нафига другая кухня? Утилиты-то одни и те же для всех девайсов. В кухнях только батники отличаются.

Автор: ray 27.3.2008, 18:44

Цитата
Ты догадался их заменить на аналогичные из своего XIP?

Конечно же заменил smile.gif

Добавлено позже..
Нашел кухню от RoverPC N6, которая нормально разбирает и собирает образ rolleyes.gif буду заменять xip и OEM драйвера..

Автор: ray 28.3.2008, 18:40

Цитата
Только нафига другая кухня? Утилиты-то одни и те же для всех девайсов. В кухнях только батники отличаются.

BigMike Респект! biggrin.gif
Еще немного подправил батники кухни для атома, и кухня начала корректно собирать образ, а то кухня для RoverPC N6 мне показалась не очень-то удобной.

Заменил OEMDrivers и папку с камерой в OEM, драйвера блютуса оставил от wm6. Итог: при загрузке винда не предложила настроить калибровку, выбрать часовой пояс и т.д., вместо этого она предложила настроить частоту развертки экрана, затем появились 11 кнопок: Blacklight Test, SD card Test, Network Set, LED Test, Vibration Test, Key Test, Battery Test, LCD Test, Record Test, Camera test, Ring test. Нажимаю поочередно все эти кнопки, все тесты проходят успешно.. Главный итог: работает блютус(!) blink.gif , работает usb, работает фотокамера, но не работает автофокусировка, не сохраняются снимки, не работают кнопки на самом коммуникаторе, кроме кнопки power. Все остальное работает smile.gif
Пробовал вставлять xip_old в прошивку - не появляется сплеш скрин..

Буду экспериментировать дальше...

Добавлено позже...
Охренеть, после XP, wm6 мило показала экран приветствия, попросила произвести калибровку и т.д. Заработали кнопки на коммуникаторе, но не заработала автофокусировка, не сохраняются снимки, колесико прокрутки не работает вниз..но я думаю это временно wink.gif

Автор: BigMike 28.3.2008, 22:33

Это тебе респект smile.gif
Вон какую работу проделал. Если винда уже запускается - то дальше уже точно до ума доведешь wink.gif

Автор: ray 29.3.2008, 10:51

Цитата
Это тебе респект. Вон какую работу проделал.

Спасибо конечно, но пока еще рано..
Складывается впечатление, что камера не сохраняет фото потому что она не видит устройства хранения...
После софт-ресета (стилусом в ...) сбивается системное время, и все кнопки на коммуникаторе опять перестают работать, пока не сделаешь хард-ресет. А вот если делать софт-ресет программно - то все нормально.
Думаю надо менять хип, но многочисленные попытки его пересаживания в образ wm6 (XIPPort'ом, руками с помощью WinHEX'а) не увенчались успехом - загрузка даже не доходит до сплеш скрина. Тупо, ради удовлетворения своих садистских наклонностей, взял исходную прошивку wm6, выдрал хип и вставил его обратно XIPPort'ом. После прошивки аппарат дошел до сплеш скрина и повис. Блин, ну тут-то нету никаких специфических батников, своих под каждый аппарат (как в случае с кухнями), XIPPort же универсален..

Добавлено позже...
Разобрался с сохранением снимков smile.gif  Камера банально ищет папки My Pictures и Storage Card и не находя их (ведь на самом деле в wm6 они называются Мои фото(графии) и Карта памяти) тихо обламывается. Промежуточное решение - создал папку My Pictures  cool.gif

Автор: ray 31.3.2008, 4:05

Вопрос назрел...
Как, хотя бы примерно, выглядит драйвер кнопок, расположенных на коммуникаторе (примерное, название dll'ки)?
Какие dll'ки или файлы отвечают за софт-ресет/хард-ресет? И чем отличается софт-ресет "стилусом в ... коммуникатору" и программный софт-ресет (меня больше интересует принцип действия этих ресетов)?
Даже несколько вопросов получилось...

Автор: BigMike 31.3.2008, 7:44

Драйвер клавиш на атомах: pxa27x_keypad_Us.dll

Цитата
Какие dll'ки или файлы отвечают за софт-ресет/хард-ресет?

Насколько я понимаю, клавиша СР просто обрубает питание - поэтому ей никакой драйвер не нужен.
Клавиши ХР живут либо в буте, либо в XIP.
Про отличия аапаратного и софтового СР ничего сказать не могу.

Автор: ray 31.3.2008, 14:03

Цитата
pxa27x_keypad_Us.dll
В принципе, этот драйвер проживал в OEMDrivers и был заменен. Теперь все мои подозрения падают только на хип. Но как его заменить.. Я правильно понял, в XIPPort'е надо указывать адрес с которого был выдран хип из wm6 (наприм, в образе wm6 от roverpc s5 -это был адрес 390000)?

Автор: BigMike 31.3.2008, 14:27

Да. Указывается адрес начала XIP.

Автор: ArHon 31.3.2008, 17:42

Цитата(ray @ 31.3.2008, 5:05) *
Какие dll'ки или файлы отвечают за софт-ресет/хард-ресет? И чем отличается софт-ресет "стилусом в ... коммуникатору" и программный софт-ресет (меня больше интересует принцип действия этих ресетов)?

софт ресет - функция ядра (не помню какая уже), за хард ресет отвечает nk.exe (он обрабатывает нажатие ресета), в нем идет опрос нажатых клавиш и в случае определения комбинации для хард ресета, он выполняется. Есть еще один момент - хард ресет также выполняется после перепрошивки, при этом устанавливается специальный флаг - CleanBoot вроде. Если установить этот флаг и вызвать софт ресет программно, то произойдет хард ресет.

По поводу кнопки ресета, имхо тут есть 2 варианта - программный запуск софт ресета и "хардварный ресет". Имея небольшой опыт работы с микропроцессорами, посмею предположить, что нажатие кнопки ресета устанавливает регистры процессора, а также регистр команд в определенное состояние, так что процессор начинает выполнять нужные команды, приводящие к сбросу и запуску программы "теплого" старта.

Автор: BigMike 2.4.2008, 15:24

Как успехи-то?

Автор: ray 2.4.2008, 15:43

Цитата
Как успехи-то?

Да так себе sad.gif  Как я только не извращался над образом ОСи, что только не заменял и в OEM и в SYS части, результата _пока_ не добился.. Основные баги: нет автофокуса у фотокамеры (в режиме фотосъемки, при легком нажатии на кнопку фото должна происходить автофокусировка), колесико прокрутки не работает вниз, после нажатия кнопки софт-ресета на коммуникаторе, сбрасывается системное дата/время на 1 января 2006 0:00 ..не портируется хип, после того как я его вставляю в образ и прошиваю, девайс не загружается.

Автор: BigMike 2.4.2008, 15:47

Там есть одна фишка - перед сборкой XIP на основе официальных прошивок нужно удалять из него пару служебных модулей.
hd.dll и osaxstxxxxx.dll

Автор: ray 4.4.2008, 16:14

ArHon

Цитата(ArHon @ 26.3.2008, 22:31) *
Вот прикладываю пересобраный хип с учетом того, что секция WinCENLS_WWE переехала в прошивку smile.gif

Т.е. необходимо взять оригинальный хип от wm6, сделать XIPPort'ом dump xip.bin и make pkgs, из папки OUT\Files\ скопировать папку WinCENLS_WWE (с файликами: 3346da5d-3675-4a67-925e-75f623184bda.dsm, 3346da5d-3675-4a67-925e-75f623184bda.dsm.imageinfo, wince.nls, wince.nls.imageinfo) в папку SYS, ..ну и, конечно же, не забыть потом вставить "новый" пересобранный хип в образ?

Автор: ray 12.4.2008, 7:02

Возможно я нашел проблему хипа, ..а возможно просто курнул неправильные шишки.
Сделал следующее:
1. Чтобы в дальнейшем не заморачиваться, подправил оригинальный образ wm6 (WinCENLS_WWE переехала из XIP'а в SYS часть образа, из XIP'а выкинул hd.dll и osaxst0.dll).
2. Портировал XIP, используя XIP из подправленного "оригинального" образа wm6 и XIP из wm5.
2.1 На заключительном этапе портирования (7й пункт, инструкции ArHon'а из темы "Разбираем XIP"), построил XIPPort'ом карту (Write maps). Решил ее посмотреть и проверить, и вот что я увидел:

Код
02000000 - 03e09000 L01e09000 NUL
03e09000 - 03e54000 L0004b000 Virtual base address of trueffs.dll
03e54000 - 03e5a000 L00006000 Virtual base address of ceddk.dll
03e5a000 - 03e61000 L00007000 Virtual base address of cecompr.dll
03e5e000 - 03e61000 L00003000 !!!!!!!!!!!!!!!!!!
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


Распаковал хип, который выкладывал мне ArHon. И там такая же фигня.. Это же пересечение и от него надо избавляться, да? Если "да", то как? Попробовал переместить по e32_vbase на -3000 cecompr.dll, ceddk.dll, trueffs.dll M'Reloc_nk'ом, пересечений теперь нет, но и винда с таким хипом не стартует..понял, что это не выход..

Автор: ArHon 14.4.2008, 20:42

ray, попробуй переместить regenum.dll на свободный адрес (0x04000000)

Автор: ray 15.4.2008, 13:55

Цитата(ArHon @ 15.4.2008, 2:42) *
ray, попробуй переместить regenum.dll на свободный адрес (0x04000000)

Переместил. Не прокатило sad.gif Значит трабл с хипом не только из-за этого..
PS и еще, мне тут интересно стало, что это за файлик psconfig.txt (проживает в OEMDrivers)?

 psconfig.rar ( 427 байт ) : 7
 

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