![]() |
|
![]() |
![]()
Сообщение
#1
|
|
Новичок ![]() Группа: Members Сообщений: 2 Регистрация: 10.4.2008 Пользователь №: 1071 Спасибо сказали: 0 раз(а) Девайс:eten m600+ ![]() |
Здравствуйте, открываю тему в надежде на помощь в портировании!
______________________________________________________________ Значит имеем рабочую 6 и донора 6.5 5.2.23001 aku 5060 Что я делаю: Прошивка в формате temp.dat, разбираю ее утилитой KVA, прошивка распаковывается, нас интересуют части XIP и IMGFS которые находятся в папке ..\KVA\ROM\OS\FAT _______________________________________________________________ ..Портирую XIP с помощью утилит : XIPPort и EXTReloc этим способом: Код ######################## Теперь немного о работе с XIP'ом. ######################### 1. Запускаем XIPPort("Import XIPPort") 2. Дампим XIP'ы(родной и донора) 3. Меняем папки OEMXIPKERNEL,переписываем ROMHDR.txt родной. Также родные .VM и .ROM, должны быть в папке с IMGFS. 4. Кнопки открытия и сохранения .VM и .ROM не обязательны, если просто хотите открыть - посмотреть(отредактировать) границы. 5. Когда собрали все папки и удалили ненужные модули, жмем "Realloc V(DLL)" - отрелочатся модули в слоте 1 и их RW-секции в 0м слоте. При этом адрес physlast увеличится на 0х100000. Это сделано для того, чтобы XIPPort сумел разместить новые модули в адресном пространстве physfirst-physlast родного ROMHDR. XIPPort не умеет сам отодвигать в большую сторону эту границу, поэтому если пространства не хватает, то он об этом явно скажет - "Not enough space". 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. После того, как записали новую карту, двойной клик на ячейке "physlast" - утилита вытащит последний реальный адрес в пространсве physfirst-physlast из MAP.txt и подставит в ячейку "physlast" ******************************************************************************** **** 9. Теперь релочим NK.EXE и т.п - кнопка "Realloc NK.EXE..." 10. Последний раз жмем "Realloc P". 11. Смотрим карту "Write map.txt" - "View MAP.txt", если пересечений нет, границы все на месте, то жмем "Build xip_out.bin". Все XIP готов. Также перед тем как собрать XIP я добавляю правки в boot.rgu и boot.hv Код В случае 6.1 - надо обязательно надо добавить В boot.hv, boot.rgu строки: [HKEY_LOCAL_MACHINE\init] "Launch19"="initvmmap.exe" [HKEY_LOCAL_MACHINE\System\Loader] "EnableUpperModules"=dword:1 [HKEY_LOCAL_MACHINE\SYSTEM\Loader\DeviceStacks] "LoadHigh"=dword:1 И initvmmap.exe должен существовать Вопрос в случае с 6.5 достаточно только этих правок? Собираю XIP перемещаю его в папку с KVA ________________________________________________________________________________ ________________ Работа с IMGFS Разбираю imgfs от wm6 спомощью imgfstools, далее разбиваю по пакетам(OEM и SYS) из SYS...удаляю все кроме папок .VM и .ROM и реестра user.hv и default.hv, папку OEM оставляю не тронутой... Беру SYS WM 6.5 , перемещаю вcе кроме папок .VM и .ROM, делаю G'Reloc, собираю пакеты в dump, кидаю в dump наш реестр ( user.hv и default.hv) и файл packages.sof, собираю imgfs также с помощью imgfstools, кидаю imgfs.bin в папку с KVA...собираю прошивку, на выходе получаю файл temp.dat прошиваю девайс, шьется нормально, при загрузке висит на bootlogo, реагирует на ХР...но висит. Что делаю не так? |
![]() |
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 11.4.2025, 9:09 |