Автор: relax 3.11.2009, 13:10
Здравствуйте, открываю тему в надежде на помощь в портировании!
______________________________________________________________
Значит имеем рабочую 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, реагирует на ХР...но висит.
Что делаю не так?
Автор: relax 8.11.2009, 21:02
никто не может подсказать...?