eXpress Bar Network
Loading
 
Какой форм-фактор коммуникатора для Вас предпочтителен?
Подробнее 
   
  Пятница, 17 ноября 2017
 


    



Что содержится в .VM и .ROM или как изменить границы слотов


Стр. 1 из 3    1, 2, 3  След.
 

Начать новую тему   Ответить на тему   вывод темы на печать    Список форумов Asus Mobile Club Russia -> Раздел Разработчика и Программиста
Предыдущая тема :: Следующая тема  
Автор Сообщение
Yad
Свой в доску!
Свой в доску!


Зарегистрирован: 12.05.2009
Сообщения: 81

Возраст: 41 Дева
Репутация: +14

PDA: RoverPC

СообщениеДобавлено: 22.07.09, 14:45    Заголовок сообщения: Что содержится в .VM и .ROM или как изменить границы слотов
Ответить с цитатой

Уважаемые, Гуру, просветите, плиз, по данному вопросу:
По папкам .VM и .ROM? Я так понял, что в .VM хранятся адреса начала свободных областей в слотах 0,1(для 6.5 еще двух слотов), так же размер RAM, которые должны соответствовать этим же адресам в карте XIP. И на их основе Greloc или WMreloc размещает модули из IMGFS в свободном пространстве слотов, я правильно понимаю? А вот насчет .ROM, для чего она, что за адреса содержит и как ее править, учитывая, што XIP портируется вручную, или ее правит Greloc? Кто-нить может расписать ее структуру в хексе, на примере, и соответствие или относительность с .VM? Понятно, што можно взять из родной прошивки, но бездумно - неинтересно, да и хотелось бы по возможности оптимизировать распределение памяти, границы начала пустот в слотах там перенести и т.п.

Выделил в отдельную тему \\Barin
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 22.07.09, 15:33    Заголовок сообщения:
Ответить с цитатой

Yad
.ROM правится WMReloc'ом или GReloc'ом. Там содержатся границы слотов не только для XIP'а но и для IMGFS. Кроме того там ещё содержится адрес верхней границы для тех модулей, которые должны располагать и код и данные только в слоте 0
Посмотреть профиль Отправить личное сообщение
Yad
Свой в доску!
Свой в доску!


Зарегистрирован: 12.05.2009
Сообщения: 81

Возраст: 41 Дева
Репутация: +14

PDA: RoverPC

СообщениеДобавлено: 22.07.09, 16:20    Заголовок сообщения:
Ответить с цитатой

Barin писал(а):
Yad
.ROM правится WMReloc'ом или GReloc'ом. Там содержатся границы слотов не только для XIP'а но и для IMGFS. Кроме того там ещё содержится адрес верхней границы для тех модулей, которые должны располагать и код и данные только в слоте 0

Если я, например, хексом поправлю границы слотов в .VM, после того как выкину лишние модули из XIP, нужно ли будет эти границы править в .ROM, или Greloc их сам поправит? Уважаемый, Barin, если Вам не сложно, может быть Вы приведете скриншоты .VM, .ROM и кусками map.txt из XIP с конкретными адресами и пояснениями к ним для вашего девайса, очень хотелось бы разобраться не поверхностно...
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 22.07.09, 17:13    Заголовок сообщения:
Всего отзывов: 4 Ответить с цитатой

Yad писал(а):
...может быть Вы приведете скриншоты .VM, .ROM и кусками map.txt из XIP с конкретными адресами и пояснениями к ним для вашего девайса

Давайте попробуем... Для начала карты, .VM и .ROM из официальной прошивки

.VM:
По адресам 0x0 и 0x4 указаны верхние границы слотов 0 и 1, начиная с которых могут располагаться код и данные модулей IMGFS
(от старших адресов к младшим) , а по адресу 0x8 - конец RAM
В моем случае это - слот 0: 01F90000, слот 1: 03DA0000, ulRAMEnd: 8С000000


.ROM:
По адресам 0x0 и 0x4 указаны границы свободных областей для слота 0: 014F0000, и 1: 02160000.
В 0xC находится адрес, начиная с которого будут располагаться
(от старших адресов к младшим) модули, код и данные которых должны располагаться только в слоте 0. В моём случае это 01DF0000
В 0x10 также указана граница слота 0: 01F90000 (как в .VM)
А вот в 0x14 указана ещё одна граница: 01FD0000. В точном её назначения я не совсем уверен. Скорее всего она указывает, что с этого адреса должны располагаться инициализированные данные модулей XIP'а, код и данные которых должны располагаться только в слоте 0. Если кто-то точно знает её назначение, поделитесь! Согласно картам между 01F90000 и 01FD0000 - пустое пространство.


Все значения из .ROM и .VM, которые я привёл можно легко проследить по картам.



Теперь можно попытаться поджать вверх границы слотов.
По карте видно, что хотя граница для слота 1 и указана как 03DA3000, реально у последнего модуля XIP'а (TrueFFS.dll) адрес Vbase = 03DE6000. Эту величину можно использовать как границу слота 1.

Чтобы поджать границу слота 0, можно убрать дыру между 01F90000 и 01FD0000. Для этого придётся поправить RomHeader. В файле ROMHDR.txt XIP'а в dllfirst вместо D=01F901FD указываем величину D=01FD01FD.
На самом деле это не один адрес, а 2, и между этими адресами и находится наша дыра. Просто каждый из этих адресов записан не как DWORD, а как WORD (используются по 2 старших байта реальных адресов) Установив нижний адрес равный вехнему - 01FD мы избавились от пустого места . Соответственно границу слота 0 определяем как 01FD0000. Собираем XIP и вносим изменения в .VM и в .ROM

В .VM границу слота 0 устанавливаем = 01FD0000, а границу слота 1 = 03DE6000


В .ROM по адресу 0x10 записываем 01FD0000
(На скриншоте .ROM уже после работы GReloc. Все остальные данные в .ROM изменены GReloc'ом)

Далее - релок и смотрим карты.



Удачи!
Посмотреть профиль Отправить личное сообщение
Yad
Свой в доску!
Свой в доску!


Зарегистрирован: 12.05.2009
Сообщения: 81

Возраст: 41 Дева
Репутация: +14

PDA: RoverPC

СообщениеДобавлено: 23.07.09, 09:35    Заголовок сообщения:
Ответить с цитатой

Barin писал(а):

Спасибо Большое!!! Очень познавательно!

А известно, что за адреса в .ROM по смещениям 0х8 и 0х16?

И еще пару вопросов:
1. Я так понимаю что 0х80000000 - это начало RAM, а 0х8С000000 - конец? т.е. получается 192 мега, каким образом это соотносится с физической RAM? Например на моем девайсе конец - 0х87CFE000, т.е. приблизительно 125 метров, при этом физической RAM вроде как 128 метров... Это все как-то соотносится, или совсем из разных областей? Что будет, если я вместо 0х87CFE000 пропишу 0х88000000(128)?
2. Что есть ulFSRamPercent: 00000004? Судя по http://msdn.microsoft.com/en-us/library/ms924546.aspx это сколько процентов FS будет отжирать у RAM, на моем девайсе это вообще ulFSRamPercent: 0A0A0A0A...
3. И совсем не понятен ulCopyOffset: P+00180FC4 ? Ну это уже так для общего образования...
Спасибо!
 i  Barin:
Спрятал цитату в спойлер

Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 23.07.09, 15:02    Заголовок сообщения:
Ответить с цитатой

Yad писал(а):
А известно, что за адреса в .ROM по смещениям 0х8 и 0х16?

Может вы имели в виду 0x8 и 0x18?
Про 0x8 ничего сказать не могу. 0x18 - это по всей вероятности dlllast.

Yad писал(а):
Я так понимаю что 0х80000000 - это начало RAM, а 0х8С000000 - конец?

Ну у Вас не знаю, в моих картах начало RAM ulRAMStart: R=88A37000 - это уж как производитель распишет. Можно конечно поэстетствовать и релокнуть nk.exe, чтобы его области в RAM прижать к ulRAMStart, и потом прижать ulRAMFree к областям nk в RAM. Тем самым можно высвободить небольшой кусочек оперативки, но это уж как повезёт icon_smile
Yad писал(а):
Что будет, если я вместо 0х87CFE000 пропишу 0х88000000(128)?

Ну скорее всего либо просто ничего, либо ничего хорошего. Это величина, заданная производителем, поэтому она может ещё храниться где-то в nk и nk может никак не отреагировать на изменение ulRAMEnd. Худшая ситуация будет, если nk всё-таки посчитает, что он увидел больше оперативки и попытается обратиться к несуществующей памяти - скорее всего будет аппаратный сбой.
Yad писал(а):
Что есть ulFSRamPercent

Ответ как раз в ссылке, которую Вы привели
Yad писал(а):
И совсем не понятен ulCopyOffset

Это адрес, который указывает, где находится таблица CopyEntry.
Код:
888a7fc4 - 888a7fd4 L00000010 copyent 887fe970 L00000600 -> 88a37000 L00000954
888a7fd4 - 888a7fe4 L00000010 copyent 887ff208 L00000a00 -> 88a46000 L0004ed88
888a7fe4 - 888a7ff4 L00000010 copyent 888933e0 L00000a00 -> 88a38000 L00003378

Каждый элемент CopyEntry - это директива скопировать что-то в RAM. Например первый элемент - это директива скопировать 0x600 байт начиная с адреса 887fe970 в RAM по адресу 88a37000 в область длиной 0x954 байта. Если данные, которые должны быть скопированы, имеют меньшую длину, чем область, куда должно вестись копирование, то оставшиеся байты этой области будут перезаписаны нулями.
Посмотреть профиль Отправить личное сообщение
Yad
Свой в доску!
Свой в доску!


Зарегистрирован: 12.05.2009
Сообщения: 81

Возраст: 41 Дева
Репутация: +14

PDA: RoverPC

СообщениеДобавлено: 23.07.09, 16:41    Заголовок сообщения:
Ответить с цитатой

Barin писал(а):

Yad писал(а):
Что будет, если я вместо 0х87CFE000 пропишу 0х88000000(128)?

Ну скорее всего либо просто ничего, либо ничего хорошего. Это величина, заданная производителем, поэтому она может ещё храниться где-то в nk и nk может никак не отреагировать на изменение ulRAMEnd. Худшая ситуация будет, если nk всё-таки посчитает, что он увидел больше оперативки и попытается обратиться к несуществующей памяти - скорее всего будет аппаратный сбой.

Девайс просто зависнет или есть вероятность кирпича?

Barin писал(а):

Yad писал(а):
Что есть ulFSRamPercent

Ответ как раз в ссылке, которую Вы привели

Я просто не понимаю назначение этого, зачем отделять оперативку для FS, причем на многих девайсах это очень маленькое значение, а на моем больше половины, на што это влияет, или может это еще с wm2003 осталось? А здесь этот параметр вообще не используется?

Barin писал(а):

Yad писал(а):
И совсем не понятен ulCopyOffset

Это адрес, который указывает, где находится таблица CopyEntry.
Код:
888a7fc4 - 888a7fd4 L00000010 copyent 887fe970 L00000600 -> 88a37000 L00000954
888a7fd4 - 888a7fe4 L00000010 copyent 887ff208 L00000a00 -> 88a46000 L0004ed88
888a7fe4 - 888a7ff4 L00000010 copyent 888933e0 L00000a00 -> 88a38000 L00003378

Каждый элемент CopyEntry - это директива скопировать что-то в RAM. Например первый элемент - это директива скопировать 0x600 байт начиная с адреса 887fe970 в RAM по адресу 88a37000 в область длиной 0x954 байта. Если данные, которые должны быть скопированы, имеют меньшую длину, чем область, куда должно вестись копирование, то оставшиеся байты этой области будут перезаписаны нулями.

Спасибо за разъяснение... ulCopyOffset нужно брать от родного девайса, или все равно, на што повлияет?

Добавлено спустя 26 минут 47 секунд:

Barin, подскажите еще, пожалуйста:
Вот .VM из кухни 6.5 TouchPro, что Da_G выкладывает:

Код:
0000000000: 00 00 F8 01 00 00 D6 03  00 00 00 7A 00 00 00 7C
0000000010: 00 00 40 83 00 00 00 00

Я правильно понимаю, что 0х7A000000 и 0x7C000000 - это адреса еще двух слотов для WM6.5, но вроде как это должны быть слоты 60 и 61, а здесь получается 61 и 62...
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 23.07.09, 21:12    Заголовок сообщения:
Ответить с цитатой

Yad писал(а):
Девайс просто зависнет или есть вероятность кирпича?

Он просто не загрузится, нужно будет перепрошивать
Yad писал(а):
на многих девайсах это очень маленькое значение, а на моем больше половины

Предлагаю оставить это на совести производителя icon_smile
Yad писал(а):
ulCopyOffset нужно брать от родного девайса, или все равно, на што повлияет?

От родного девайса ОБЯЗАТЕЛЬНО нужно брать все пакеты, кроме MSXIPKernel и MSXIPKernelLTK. И конечно же от родного девайса нужно брать и RomHeader.
ulCopyOffset и саму таблицу CopyEntries не трогайте вообще, оставьте все как есть,
если конечно Вы не собираетесь вносить изменения в код ядра .
Посмотреть профиль Отправить личное сообщение
Yad
Свой в доску!
Свой в доску!


Зарегистрирован: 12.05.2009
Сообщения: 81

Возраст: 41 Дева
Репутация: +14

PDA: RoverPC

СообщениеДобавлено: 24.07.09, 11:24    Заголовок сообщения:
Ответить с цитатой

Походу с адресами слотов 60 и 61 все правильно, просто указываются нижние границы(или верхние, если от старших адресов к младшим)

Вот еще пару ссылок по этому вопросу, может кому пригодится:
http://hi.baidu.com/donghaozheng/blog/item/1a0f37db4798196ed1164e56.html
http://forum.ppcgeeks.com/showpost.php?p=1004436&postcount=5543

_________________
RoverPC Pro G7


Последний раз редактировалось: Yad (30.07.09, 08:49), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
ZowecS96
Продвинутый
Продвинутый


Зарегистрирован: 28.09.2007
Сообщения: 191
Откуда: Чита
Возраст: 34 Лев
Репутация: +17

PDA: ASUS P525

СообщениеДобавлено: 27.07.09, 02:09    Заголовок сообщения:
Ответить с цитатой

Хочу спросить, надо ли при портировании нового xip обязательно менять содержимое папки MSXIPKernelLTK ?

_________________
С наилучшими пожеланиями
ASUS P525, модернизированный мной: новый джойстик (менял сам), ОЗУ 128мб (перепаивал сам), датчик крышки батареи отсутствует (отпаян мной). Версия радио 4.7, версия ПО WM6.5 21055 текущая (решил побыть на 6.1).
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 27.07.09, 09:34    Заголовок сообщения:
Всего отзывов: 2 Ответить с цитатой

ZowecS96
Как показывает практика - необязательно. Можно просто для косметики и этетического удовольствия.
В MSXIPKernelLTK\d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm содержится несколько зависимостей с номерами версий - просто чтобы версии выглядели соответствующе icon_smile
Я стараюсь всегда заменять оба пакета - и MSXIPKernel, и MSXIPKernelLTK.
Посмотреть профиль Отправить личное сообщение
Sajmon
Только зашел
Только зашел


Зарегистрирован: 27.04.2008
Сообщения: 3


Репутация: 0

PDA:

СообщениеДобавлено: 02.08.09, 11:51    Заголовок сообщения: Как получить .vm .rom
Ответить с цитатой

Хочу портировать эту прошивку на asus p535. В прикреплённых к теме файлах 23016 SYS/XIP for porting отсутствуют папки .VM и .ROM как их создать? Прошу прощения, если что не так, но я всего лишь обычный пользователь.
Посмотреть профиль Отправить личное сообщение
Alex[DFR]
Автор прошивок
Автор прошивок


Зарегистрирован: 25.03.2007
Сообщения: 225

Возраст: 25 Водолей
Репутация: +91

PDA: ASUS P525, Другой

СообщениеДобавлено: 02.08.09, 12:41    Заголовок сообщения:
Ответить с цитатой

Возьми от родного асусовского рома (можешь сдампить с девайса pdocread -t - узнать размер; pdocread 0x0 0xразмер ROMGalaxy.nb0, потом разбери его как обычно) или из другой кухни
Посмотреть профиль Отправить личное сообщение
Dynamite
Завсегдатай
Завсегдатай


Зарегистрирован: 17.01.2009
Сообщения: 117
Откуда: Лефортовская тюрьма
Возраст: 31 Дева
Репутация: +1

PDA: Android-based, Другой

СообщениеДобавлено: 06.08.09, 13:17    Заголовок сообщения:
Ответить с цитатой

Как правильно сместить вверх границу first physical address, если правильно понял нужно также релокнуть .VM? Будут ли какие последствия при этом?
У меня из-за проклятого giisr.dll в RAM вниз расширяться нет возможности....

_________________
Знания делают мышление консервативным, но добротным. Недостаток знаний и опыта имеет свою прелесть: он восполняется смелостью гипотез и выводов. Правда, их нужно всегда тщательно проверять. (А. Днепров - Голубое Зарево)
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 06.08.09, 13:33    Заголовок сообщения:
Ответить с цитатой

Dynamite
Поправьте ROMHDR в XIP'е, В VM и ROM укажите границы слотов (в том числе исправьте в ROM значение в 0х10), остальное сделает релок.
Посмотреть профиль Отправить личное сообщение
Dynamite
Завсегдатай
Завсегдатай


Зарегистрирован: 17.01.2009
Сообщения: 117
Откуда: Лефортовская тюрьма
Возраст: 31 Дева
Репутация: +1

PDA: Android-based, Другой

СообщениеДобавлено: 06.08.09, 16:09    Заголовок сообщения:
Ответить с цитатой

Barin,
nk.exe при этом релочить нужно?

_________________
Знания делают мышление консервативным, но добротным. Недостаток знаний и опыта имеет свою прелесть: он восполняется смелостью гипотез и выводов. Правда, их нужно всегда тщательно проверять. (А. Днепров - Голубое Зарево)
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 06.08.09, 16:18    Заголовок сообщения:
Ответить с цитатой

Dynamite
А зачем? Только если у вас большая дырка остаётся между ulRamStart и областями nk, да и то Вы высвободите копейки Ram. Не стОит. Попробуйте конечно, если хотите, но тут уж как повезёт
Посмотреть профиль Отправить личное сообщение
Dynamite
Завсегдатай
Завсегдатай


Зарегистрирован: 17.01.2009
Сообщения: 117
Откуда: Лефортовская тюрьма
Возраст: 31 Дева
Репутация: +1

PDA: Android-based, Другой

СообщениеДобавлено: 06.08.09, 17:10    Заголовок сообщения:
Ответить с цитатой

Barin писал(а):
Dynamite
А зачем? Только если у вас большая дырка остаётся между ulRamStart и областями nk, да и то Вы высвободите копейки Ram. Не стОит. Попробуйте конечно, если хотите, но тут уж как повезёт

У него же значение vbaze равно адресу верхней границы слота с физическими данными... вот поэтому и хотел узнать, нужен релок nk или нет....

_________________
Знания делают мышление консервативным, но добротным. Недостаток знаний и опыта имеет свою прелесть: он восполняется смелостью гипотез и выводов. Правда, их нужно всегда тщательно проверять. (А. Днепров - Голубое Зарево)
Посмотреть профиль Отправить личное сообщение
Barin
Взрослый дяденька
Взрослый дяденька


Зарегистрирован: 08.01.2008
Сообщения: 3671
Откуда: Москва
Возраст: 50 Близнецы
Репутация: +948

PDA: ASUS P750, HTC

СообщениеДобавлено: 06.08.09, 17:24    Заголовок сообщения:
Ответить с цитатой

Dynamite
Подождите - подождите, Вы какой утилитой смотрите? MReloc_NK? У nk Vbase равен адресу начала физических адресов (у меня P = 88727000)
Код:
e32_vbase:           P+00000000

и адреса областей в RAM:
Код:
88a27000 - 88a27000 L00000000 Start: start of RAM
88a27000 - 88a30000 L00009000 NUL
88a30000 - 88a36000 L00006000 uninitialized data of region_2 nk.exe
88a36000 - 88a85000 L0004f000 initialized data of region_3 nk.exe
88a85000 - 88a85000 L00000000 ------ start of RAM free space
88a85000 - 8c000000 L0357b000 NUL
8c000000 - 8c000000 L00000000 End: end of RAM

Посмотреть профиль Отправить личное сообщение
Dynamite
Завсегдатай
Завсегдатай


Зарегистрирован: 17.01.2009
Сообщения: 117
Откуда: Лефортовская тюрьма
Возраст: 31 Дева
Репутация: +1

PDA: Android-based, Другой

СообщениеДобавлено: 06.08.09, 18:26    Заголовок сообщения:
Ответить с цитатой

Barin писал(а):
Dynamite
Подождите - подождите, Вы какой утилитой смотрите? MReloc_NK?

да
Barin писал(а):
У него Vbase равен адресу начала физических адресов

У меня first physical address равен 8c200000, мне и хотелось бы сдвинуть наверх по карте, увеличив его таким образом...

_________________
Знания делают мышление консервативным, но добротным. Недостаток знаний и опыта имеет свою прелесть: он восполняется смелостью гипотез и выводов. Правда, их нужно всегда тщательно проверять. (А. Днепров - Голубое Зарево)
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему       Список форумов Asus Mobile Club Russia -> Раздел Разработчика и Программиста Часовой пояс: GMT + 4
Стр. 1 из 3    1, 2, 3  След.
Страница 1 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы не можете скачивать файлы в этом форуме


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Modified by LiquidStorm


Rambler's Top100 Яндекс цитирования Locations of visitors to this page Google PageRank Checker