|
| Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
|---|---|---|---|---|---|
| 13.10.2009, 7:53 | Новый релок 6.1/6.5 | У меня для Даймонда нативное ядро и там все Ок с релоком и так. Все хочу попробовать в кухнях P320 или 6815, но руки не доходят до них. Как буду собирать порт на один из этих девайсов попробую. Впрочем, для Ervius есть один нюанс из описания: "Для работы утилиты ОБЯЗАТЕЛЬНО нужны файлы *.dsm. ", т.е. нужно смотреть батники Ervius, т.к. для Ext, по-моему, он не использует dsm. P.S. Yad - ОГРОМНОЕ СПАСИБО за труды, обязательно попробую, очень интересно для моих "проблемных" устройств, в которых стандартные релокеры работают не очень хорошо. Тут вот еще рекмод пофиксенный, может пригодится... |
AGC, | ||
| 11.10.2009, 13:07 | Новый релок 6.1/6.5 | Релиз! Читаем описание - удален один параметр командной строки и добавлен другой... |
AGC, izCCCP, | ||
| 1.10.2009, 16:53 | Новый релок 6.1/6.5 | GUG, у тебя что-нить еще получилось? |
GUG, | ||
| 22.9.2009, 13:35 | Новый релок 6.1/6.5 | Добрый день, уважаемые! Выношу на ваш суд новый релок Релиз! здесь Батник для автопортирования XIP от Alex~ Код ################################################################### # # # "EXTReloc" предназначен для последовательного размещения модулей в памяти WM6.1/6.5. # # # ################################################################### 1.Основные особенности и отличия от других программ: 1.1 G'Reloc, не работает с нативным ядром 6.5, также некорректно обрабатывает flag "L" модуля. Такой модуль должен полностью находиться в слоте 0, без выделения RW-секций (я не могу это утверждать с абсолютной уверенностью, но на моей прошивке так было...) 1.2 WMreloc2 работает несколько некорректно с переходами между слотами, особенно между 60м и 61м. Так же не работает с флагом "L". 1.3 Пересоздаются также файлы imageinfo.txt(удобно смотреть) 1.4 Встроенный "Маппер" - можно смотреть карту любой прошивки 1.5 Наглядно показывается и редактируется содержимое папок .VM и .ROM (различные границы) 1.6 Работа с XIP ****************************** ВАЖНО!!! ********************************************** Для работы утилиты ОБЯЗАТЕЛЬНО нужны файлы *.dsm. Я не проверял как она будет работать с одним *.dsm. Потому в кухне вставляйте EXTReloc либо до сборки всех *.dsm в один(предпочтительный вариант), либо вообще до BuildOS(но тогда пакеты удаляйте сами, не используя "options.xml") ******************************************************************************** ****** 2.Основные возможности данной программы: 2.1 EXTReloc позволяет релочить кроме IMGFS-модулей, модули XIP. Причем есть возможность релока NK.EXE,GIISR.DLL и подобных модулей, которые находятся в RAM. Работа с XIP может скрываться - потянуть белый разделитель влево, тогда откроется работа с IMGFS. Чтобы вернуть обратно - щелкните по разделителю... 2.2 Модули IMGFS релочаться в той последовательности, которая есть в packages.cif (проверял на своей офф. прошивке, там все модули располагаются в последовательности указанной в packages.cif), но опция отключаемая(см. "Options") 2.3 Флаг "L" содержится в *.dsm и указывает, что модуль должен находиться полностью в слоте 0, без выделения RW-секций. Но опция так же отключаемая... Существует проверка: Если в *.dsm модуля есть флаг "L", но его e32_Vbase находится не в 0м слоте, то программа выдаст запрос - что делать с таким(такими) модулями - переносить их в 0й слот или нет. Если же и флаг "L" и Vbase в 0м слоте, то такой модуль однозначно попадет полностью в 0й слот !!! (если стоит галка в настройках - "Use flag "L" for IMGFS") Данный запрос можно отключить в опциях, включив "Disable dialog for "L" in IMGFS". 2.4 Править можно и нужно(для оптимального распределения) синие ячейки, зеленые ячейки править можно, но они все равно перерасчитываются :) Серые ячейки править нельзя. 2.5 Программа использует относительные пути в настройках (удобно в составе кухни) 2.6 Можно работать, как с плоским дампом IMGFS(папка "dump" после работы BuildOS...), так и с разбитым на пакеты(папка c OEM,SYS,ROM). Указывается в настройке в поле "IMGFS Path". Если пишете сами путь, то будьте внимательны - первый и последний слеш обязателены! ****** Рекомендации: ***************************************************************** При работе с XIP рекомендуется указывать здесь путь к IMGFS разбитой на пакеты (папки OEM,ROM,SYS), т.к. программа поправит .VM и .ROM, дальше при работе BuildOS папки VM и ROM перенесуться в плоский дамп, и уже при сборке прошивки утилите нужно будет в командной строке указать путь к плоскому дампу. Выполнив эти рекомендации не нужно будет постоянно менять пути в настройках!!! ******************************************************************************** ******* В поле "XIP Path" выбирается папка, которая должна содержать XIPPort.exe и папку OUT. Если пишете сами путь, то будьте внимательны - первый и последний слеш обязателены! Поле "LOGS Path" может быть любым, туда сохраняются MAP.txt и логи с закладки "Debug" 2.7 Настройки сохраняются в "EXTReloc.ini" 2.8 В настройках можно указать границы для каждого слота, выше которых модули релочиться не будут и перейдут в след. слот. Либо, если это уже слот 0, выводится сообщение, о нехватке места - передвиньте границу, либо переведите часть модулей в файлы. Последовательность заполнения слотов для нативного 6.5: 1-61-60-0, для 6.1: 1-0 2.9 Есть отключаемая вкладка "Debug", в нее выводится информация. В верхний список попадают обычные модули, в средний - модули с флагом "L", а так же nk.exe и модули, исполняемые по месту в RAM(флаг "K"). В нижнем окне ведется Log. Лог и списки можно сохранить в текстовые файлы. Для этого - двойной клик на списке... "Set active page "Debug" during reloc" - во время релока переходить на вкладку "Debug"... 2.10 Встроенный маппер может показывать так же модули XIP (нужен ROMHDR.txt,удобно смотреть полное распределение памяти). Данная опция также отключаемая. "Create MAP.txt" в настройках - создавать MAP.txt при релоке. Если поставить галочку в настройках на "View MAP.txt after reloc", то карта будет показываться сразу после релока. "Create MAP.bak" - переименовывать предыдущий MAP.txt в MAP.bak. "Build MAP.txt" - можно посмотреть карту любой прошивки(есть запрос путей). ######################## Теперь немного о работе с XIP'ом. ######################### 1. Запускаем XIPPort("Import XIPPort") 2. Дампим XIP'ы(родной и донора) 3. Меняем папки OEMXIPKERNEL,переписываем ROMHDR.txt родной. Также родные .VM и .ROM, должны быть в папке с IMGFS. 4. Кнопки открытия и сохранения .VM и .ROM не обязательны, если просто хотите открыть - посмотреть(отредактировать) границы. 5. Когда собрали все папки и удалили ненужные модули, жмем "Realloc V(DLL)" - отрелочатся модули в слоте 1 и их RW-секции в 0м слоте. Здесь же происходит релок модулей в области physfirst-phislast. При этом адрес physlast увеличится на 0х100000. Это сделано для того, чтобы XIPPort сумел разместить новые модули в адресном пространстве physfirst-physlast родного ROMHDR. XIPPort не умеет сам отодвигать в большую сторону эту границу, поэтому если пространства не хватает, то он об этом явно скажет - "Not enough space". Если не указана опция "Move dllfirst (Lo)", то между XIP модулями и IMGFS будет пустое пространство размером 256 Кб (по умолчанию в оригиналных прошивках) 6. Жмем в XIPPort "Realloc P". XIPPort поправит dataptr модулей и заполнит physfirst-physlast. Если напишет "Unknown o32 region flags: d0000040", то здесь ничего страшного, просто XIPPort "не понимает" секцию с флагом IMAGE_SCN_MEM_SHARED, и ругается, но никаких проблем не возникает - релок проходит нормально. ************* ВАЖНО - операции обязательны!!! ************************************** 7. Теперь нам нужно поджать границу physlast. !!!Обязательно!!! - Жмем "Write map.txt" в XIPPort. ******************************************************************************** **** 8. Теперь релочим NK.EXE и т.п - кнопка "Realloc NK.EXE..." Сначала утилита вытащит последний реальный адрес в пространсве physfirst-physlast из MAP.txt и подставит в ячейку "physlast", потом запустится релок 9. Последний раз жмем "Realloc P". 10. Смотрим карту "Write map.txt" - "View MAP.txt", если пересечений нет, границы все на месте, то жмем "Build xip_out.bin". Все XIP готов. ##################### Работа с параметрами для XIP ################################## 1. Если программа запускается с параметрами, то автоматически запустится процесс релока и произойдет переход на вкладку "Debug"! 2. Программа поддерживает следующие параметры командной строки: -WM65 - работа с нативным ядром 6.5, если параметр не указан то - WM6.1 -dX[XIP Path] - ОТНОСИТЕЛЬНЫЙ путь к XIP, параметр обязательный! Если сам путь не указан, а только "-dX", будет использован текущий каталог. Путь указывается без пробелов, первый и последний слеш не обязательны. -d[IMGFS Path] - ОТНОСИТЕЛЬНЫЙ путь к OS, параметр обязательный(,VM и .ROM)! Если сам путь не указан, а только "-d", будет использован текущий каталог. Путь указывается без пробелов, первый и последний слеш не обязательны. -l[LOGS Path] - ОТНОСИТЕЛЬНЫЙ путь к EXTReloc.log (кроме информации о релоке здесь также указываются ОШИБКИ !!!). Если сам путь не указан, а только "-l", будет использован текущий каталог. Если данный параметр не указан вообще, то EXTReloc.log создан не будет! Путь указывается без пробелов, первый и последний слеш не обязательны. Перед формированием лога старый лог, если он существует, удаляется. -lbak[LOGS Path] - ОТНОСИТЕЛЬНЫЙ путь к EXTReloc.log (кроме информации о релоке здесь также указываются ОШИБКИ !!!). Если сам путь не указан, а только "-lbak", будет использован текущий каталог. Если данный параметр не указан вообще, то EXTReloc.log создан не будет! Путь указывается без пробелов, первый и последний слеш не обязательны. Перед формированием лога старый лог, если он существует, переименовывается в EXTReloc.bak *********** Примечание **************************************************************** Параметры "-l" и "-lbak" взаимоисключающие, указывается только один из них!!! ******************************************************************************** ******* -relDLL - релок виртуальных адресов XIP(кнопка "Realloc V(DLL)") -relNK - релок модулей в RAM(кнопка "Realloc NK.EXE,GIISR.DLL,etc") -DllLo - поджимать границу "dllfirst (Lo)" -noClose - если указать данный параметр, то программа останется открытой после релока. ########################### Работа с IMGFS ##################################### 1. Открывается, если потянуть разделитель(белая полоса) влево. 2. Кнопки открытия и сохранения .VM и .ROM не обязательны, если просто хотите открыть - посмотреть(отредактировать) границы. 3. Основная кнопка - "Realloc IMGFS..." *** Рекомендации: ******************************************************************* Заполнение слота 0 под завязку скорее всего происходит потому что: 3.1 EXTReloc задает вопрос, если есть несовпадение: например адрес e32_Vbase находится в слоте 0, а флаг "L" у модуля отсутствует или наоборот флаг "L" есть, а адрес e32_Vbase находится в слотах 1,(61,60). 3.2 Если ответить ей "Yes(to ALL)", то она перенесет в 0 слот все эти несоответствия плюс те модули, где соответствие ЕСТЬ!!! Потому скорее всего слот 0 забит! 3.3 Выход из этой ситуации может быть такой (IMHO самый оптимальный) - релок в два прохода: "1й-Проход" - отвечаем "Yes(to ALL)", при этом самое ГЛАВНОЕ - флагу "L" станет соответствовать e32_Vbase. "2й-Проход" - отвечаем "No(to ALL)", тогда все модули которые не имели флага "L" перенесутся по слотам 1(60,61) и в слоте 0 останутся только модули с флагом "L", что нам и нужно!!! Почему сразу я не переношу в 0й слот модули только с флагом "L" ? Потому что, можно это делать не для всех модулей, а на выбор для каждого :))) И во вторых - может быть Вы знаете, что модуль должен быть в слоте 0, а по какой-то причине флаг "L" в *.dsm отсутствует, например "DSM_Editor by Ervius", если нажать "Update dsm in a package", вообще сбрасывает все флаги - остаются только "S" и "H". 3.4 Если поставить опцию "Disable dialog for "L" in IMGFS", то данный запрос будет отключен!!! И программа просто перенесет в слот 0 только модули с флагом "L" в *.dsm. Данную поцию можно использовать, если Вы точно уверены в том, что все *.dsm файлы корректны!!! (заменяет 2 прохода, описанные выше) ******************************************************************************** ******** ########################### Работа с IMGFS в составе кухни. ########################### 1. Если программа запускается с параметрами, то автоматически запустится процесс релока и произойдет переход на вкладку "Debug"! 2. Программа поддерживает следующие параметры командной строки: -WM65 - работа с нативным ядром 6.5, если параметр не указан то - WM6.1 -d[IMGFS Path] - ОТНОСИТЕЛЬНЫЙ путь к OS, параметр обязательный! Если сам путь не указан, а только "-d", будет использован текущий каталог. Путь указывается без пробелов, первый и последний слеш не обязательны. -m[LOGS Path] - ОТНОСИТЕЛЬНЫЙ путь к MAP.txt. Если сам путь не указан, а только "-m", будет использован текущий каталог. Если данный параметр не указан вообще, то MAP.txt создан НЕ БУДЕТ! Путь указывается без пробелов, первый и последний слеш не обязательны. Перед формированием карты старый MAP.txt, если он существует, удаляется. -mbak[LOGS Path] - ОТНОСИТЕЛЬНЫЙ путь к MAP.txt. Если сам путь не указан, а только "-mbak", будет использован текущий каталог. Если данный параметр не указан вообще, то MAP.txt создан НЕ БУДЕТ! Путь указывается без пробелов, первый и последний слеш не обязательны. Перед формированием карты старый MAP.txt, если он существует, будет переименован в MAP.bak *********** Примечание **************************************************************** Параметры "-m" и "-mbak" взаимоисключающие, указывается только один из них!!! ******************************************************************************** ******* -l[LOGS Path] - ОТНОСИТЕЛЬНЫЙ путь к EXTReloc.log (кроме информации о релоке здесь также указываются ОШИБКИ !!!). Если сам путь не указан, а только "-l", будет использован текущий каталог. Если данный параметр не указан вообще, то EXTReloc.log создан не будет! Путь указывается без пробелов, первый и последний слеш не обязательны. Перед формированием лога старый лог, если он существует, удаляется. -lbak[LOGS Path] - ОТНОСИТЕЛЬНЫЙ путь к EXTReloc.log (кроме информации о релоке здесь также указываются ОШИБКИ !!!). Если сам путь не указан, а только "-lbak", будет использован текущий каталог. Если данный параметр не указан вообще, то EXTReloc.log создан не будет! Путь указывается без пробелов, первый и последний слеш не обязательны. Перед формированием лога старый лог, если он существует, переименовывается в EXTReloc.bak *********** Примечание **************************************************************** Параметры "-l" и "-lbak" взаимоисключающие, указывается только один из них!!! ******************************************************************************** ******* ***** Общее замечание ***************************************************************** 1. Если в параметре "-m"("-mbak") уже указан путь, то в параметре "-l"("-lbak") его указывать не обязательно и наоборот! Если путь указан в обоих параметрах, то будет браться первый встретившийся! 2. Если указанный путь для логов не существует, он будет создан!!! ******************************************************************************** ******* -noImL - отключает флаг "L" для IMGFS. Если параметр не указан, флаг "L", будет использован! -noDlgL - отключает запрос программы по переносу модулей в слот 0. Переносятся только модули с флагом "L" в *.dsm!!! (Заменяет релок в 2 прохода) -DelImTXT - удалять imageinfo.txt при релоке(только для IMGFS). -noClose - если указать данный параметр, то программа останется открытой после релока. **** Рекомендации: ************************************************************ - Флаг "L" для IMGFS - есть пережиток прошлого, поэтому для WM6.5(native NK.EXE) его лучше снять! Если прошивка при этом заработает без глюков, то в слоте 0 у Вас будет больше пространства для текущих процессов! Для WM6.1 этот флаг лучше оставить, т.к. слотов мало, а модулей много - и пусть лучше модули с флагом "L" будут в 0м слоте, чем другие! - Для XIP флаг "L" снимать скорее всего нельзя! :)) Как бы нам не хотелось, но собрать прошивку без глюков возможно только при корректных *.dsm файлах, поэтому если Вы их правите - правьте аккуратно, следите за флагами! ******************************************************************************** ** ################################################################################ ######## Удачи Вам !;) Отдельная благодарность: Barin(asusmobile.ru) и Mamaich(исполюзуются части кода RecMod) Yad |
3D_MASTER, AGC, se7en, | ||
| 17.7.2009, 9:21 | "Ковыряем" XIP | Приветствую. Может кто-нибудь сможет помочь, пытаюсь портировать ксип, перенес девайсозависимые модули в донора, сделал релок, в карте пересечений нет, но до тех пор пока в xipport'e не нажму realloc P, после этого снова появляются пересечения, как-будто ничего не исправлялось. Пробовал после всех правок и убедившись что пересечений в карте нет, не нажимая realloc P собрать ксип, засунуть его в рабочую прошивку и прошиться - не запускается, висит на бутскрине. На всякий случай закачал в архиве родной ксип, донор и то что у меня получилось, если кому не в тягость, гляньте пжлста и укажите на ошибки. ссылка на архив http://ifolder.ru/13132457 Донор кривой до ужаса возьми нормального |
e-cat, | ||
| 6.7.2009, 11:41 | "Ковыряем" XIP | Разбираешь свой XIP, в MAP.txt ищешь строку по слову "rom_00" (без кавычек понятно), находишь строку такого вида: Код 9ad80860 - 9ad808b4 L00000054 rom_00 header: dlls=01f901fd-02000000 phys=9ac00000-9aec1620, 22 modules, 10 files, 2 copyentries ext=9ac0278c ram=80580000-84000000 cputype=000001c2 Первое число 9ad80860 и есть нужный нам адрес начала XIPа. Далее идем в папку nk.exe и в s000 ищем этот адрес, записанный инвертно, т.е. ищем 60 08 D8 9A. Найденное смещение в s000 и есть именно то, что нам надо. Единственный нюанс, если таких вхождений поисковой последовательности байтов инвертно записанного адреса более одного (очень редко, но возможно), то пытаемся найти правильное из них Уважаемый, AGC, разрешите Вас немного поправить в этом случае, возможно Вы потом поменяете немного свой FAQ, который на первом этапе мне сильно помог, он один из самых понятных... На самом деле Xiport сам прописывает это адрес в выходной xup_out.bin. Но для этого, вот этот ваш пункт: 3.1. Копируем настройки распределения памяти из родного XIPа из OUT\romhdr.txt из начала файла до строки ulRAMEnd в донорский XIP в такой же файл: dllfirst: D=01F901FD dlllast: 02000000 physfirst: P=9AC00000 physlast: 9AFB5500 nummods: (00000000) ulRAMStart: R=80580000 ulRAMFree: 805E2000 ulRAMEnd: 84000000 Нужно дополнить строкой Код pExtensions: P+00001A28 из РОДНОГО XIPa, именно по этому смещению прописывается адрес, который находится по "rom_00" в карте памяти! Можете проверить сами, если вы возьмете это смещение в новый romhdr.txt и не будете руками править s000, то Xiport сделает как нужно. Более того, именно по причине того что на моем девайсе данное смещение было не таким как у доноров, я очень долго не мог собрать рабочий xip для Rover G7, т.к. я правил руками s000, а Xiport дополнительно прописывал нужный адрес по неправильному смещению и Xip получался нерабочий...И еще пару моментов, насчет релока giisr.dll и nk.exe, mreloc_nk справляется с ними обоими, но на моем девайсе, чтобы поправить giisr.dll пришлось поплясать пару моментов с бубном, причем то приходилось плясать, то нет 1. Если не получается перенести o32[1].o32_realaddr (правим, жмем doit и нифига - адрес остается старым), то нужно одновременно поправить vbase и realaddr и после этого адрес меняется без проблем; 2. o32[1].o32_realaddr у меня никогда не соответствует тому что я хочу поставить, всегда получившийся адрес на 0х1000 болше нужного, т.е. например если мы хотим получить 80262000, то прописывать нужно 80261000 , после этого жмем doit и адрес получаем нужный нам 80262000 (далее, не забываем поправить этот адрес в imageinfo.txt модуля giisr.dll) Теперь по nk.exe, возможно Вы все это знаете, просто я как новичок с этим долго разбирался, и не в одном FAQ этого не нашел... Так вот после Start: start of RAM у меня находятся два региона nk.exe - uninitialized data of region_1 nk.exe и initialized data of region_2 nk.exe, mreloc_nk показывает и дает менять только адрес uninitialized data, я долго парился по этому поводу - смысла не было переносить только uninitialized data, т.к. именно initialized data у меня стояли в конце и соотв. я не мог сдвинуть границу FreeRAM. Но оказывается, на самом деле эти данные связаны между собой и mreloc_nk при правке uninitialized data, одновременно сдвигает оба региона, поэтому после правки в mreloc, в файле imageinfo.txt для nk нужно править сразу два адреса и для первого региона и для второго... Спасибо, надеюсь, что немного помог новичкам вроде меня в этом нелегком, а со временем достаточно простом деле - портирования XIP. |
AGC, Corias, dizz74, e-cat, Xakep, | ||
|
Текстовая версия | Сейчас: 29.4.2026, 22:28 |