Ankieta

Co sądzisz o tym Tutorialu???

Bardzo Dobry
2 (50%)
Dobry
2 (50%)
Przeciętny
0 (0%)
Kiepski
0 (0%)
Bardzo Kiepski
0 (0%)

Głosów w sumie: 4

Portowanie Sekcji XIP

  • 2 Odpowiedzi
  • 6555 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

nokser

Portowanie Sekcji XIP
« dnia: Luty 11, 2009, 11:13:04 »
Portowanie Sekcji XIP na Urządzeniach typu Himalaya



Kompatybilne:
O2 XDA II, T-Mobile MDA II, Qtek 2020, iMate Phone Edition, TSM500, and other PH10 variants



Z reguły  przenoszenie sekcji XIP (kernel – jądra systemu), polega na jednej zasadzie,
którą opiszę poniżej .Zasada portowania ogółem tyczy się Użytkowników Himalay-i




Przygotowanie:
Nie będę tu opisywał w jaki sposób uzyskać taką sekcję, zakładam że każdy z was ma już wydobyty xip.bin.


1) Tworzymy katalog o nazwie np. Old_XIP


-> kopiujemy do niego:
- xip.bin (wydłubany z nk.nba naszego urządzenia)
- XIPPort.exe
- pkgcommon.dll
- Mreloc.exe

Odpalamy XIPPort.exe i wciskamy:

->dump xip.bin
->realloc P
->write maps

Powstał folder o nazwie OUT a w nim 2 foldery MODULES i FILES:
-Usuwamy:

Z Katalogu FILES:

•   778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm
•    778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.dsm
•   723fb954-d931-4348-b672-82a188e587b5.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.rgu
•   723fb954-d931-4348-b672-82a188e587b5.rgu.imageinfo.txt
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm.imageinfo.txt
•   boot_ms.rgu
•   boot_ms.rgu.imageinfo.txt
•   mxip_lang.vol
•   mxip_lang.vol.imageinfo.txt
•   sysroots.p7b
•   sysroots.p7b.imageinfo.txt

Z Katalogu MODULES:

•   busenum.dll + busenum.dll.txt
•   cachefilt.dll + cachefilt.dll.txt
•   certmod.dll + certmod.dll.txt
•   coredll.dll + coredll.dll.txt
•   crypt32.dll + crypt32.dll.txt
•   device.exe + device.exe.txt
•   devmgr.dll + devmgr.dll.txt
•   diskcache.dll + diskcache.dll.txt
•   fatfsd.dll + fatfsd.dll.txt
•   fatutil.dll + fatutil.dll.txt
•   filesys.exe + filesys.exe.txt
•   fsdmgr.dll + fsdmgr.dll.txt
•   fsreplxfilt.dll + fsreplxfilt.dll.txt
•   mencfilt.dll + mencfilt.dll.txt
•   mspart.dll + mspart.dll.txt
•   pm.dll + pm.dll.txt
•   regenum.dll + regenum.dll.txt

Wszystkie moduły i pliki wraz z  odpowiadającymi im .txt, które usunęliśmy, musimy teraz zastąpić tymi z nowej sekcji XIP………….


2) Tworzymy katalog o nazwie np. New_ XIP


-> kopiujemy do niego:
- xip.bin (wydłubany z nk.nba innego urządzenia)
- XIPPort.exe
- pkgcommon.dll

Odpalamy XIPPort.exe i wciskamy:

->dump xip.bin
->make pkgs

Kopiujemy wszystkie Moduły i pliki wraz z odpowiadającymi im .txt, do starej sekcji XIP, czyli powinno wyglądać to tak:

W Katalogu FILES:

           Pliki z Nowej Sekcji XIP:

•   778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm
•    778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.dsm
•   723fb954-d931-4348-b672-82a188e587b5.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.rgu
•   723fb954-d931-4348-b672-82a188e587b5.rgu.imageinfo.txt
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm.imageinfo.txt
•   boot_ms.rgu
•   boot_ms.rgu.imageinfo.txt
•   mxip_lang.vol
•   mxip_lang.vol.imageinfo.txt
•   sysroots.p7b
•   sysroots.p7b.imageinfo.txt

Pliki ze Starej Sekcji XIP:

•   8677e734-fc16-3610-0db1-001405fb4b9a.dsm
•   8677e734-fc16-3610-0db1-001405fb4b9a.dsm.imageinfo.txt
•   boot.hv
•   boot.hv.imageinfo.txt
•   boot.rgu
•   boot.rgu.imageinfo.txt
•   e27f9da5-f2bd-6586-1098-afeef97ab52a.dsm
•   e27f9da5-f2bd-6586-1098-afeef97ab52a.dsm.imageinfo.txt

W Katalogu MODULES:

            Moduły z Nowej Sekcji XIP:

•   busenum.dll + busenum.dll.txt
•   cachefilt.dll + cachefilt.dll.txt
•   certmod.dll + certmod.dll.txt
•   coredll.dll + coredll.dll.txt
•   crypt32.dll + crypt32.dll.txt
•   device.exe + device.exe.txt
•   devmgr.dll + devmgr.dll.txt
•   diskcache.dll + diskcache.dll.txt
•   fatfsd.dll + fatfsd.dll.txt
•   fatutil.dll + fatutil.dll.txt
•   filesys.exe + filesys.exe.txt
•   fsdmgr.dll + fsdmgr.dll.txt
•   fsreplxfilt.dll + fsreplxfilt.dll.txt
•   mencfilt.dll + mencfilt.dll.txt
•   mspart.dll + mspart.dll.txt
•   pm.dll + pm.dll.txt
•   regenum.dll + regenum.dll.txt

Moduły ze Starej Sekcji XIP:

•   msflash.dll + msflash.dll.txt
•   cecompr.dll + cecompr.dll.txt
•   ceddk.dll + ceddk.dll.txt
•   nk.exe + nk.exe.txt
•   relfsd.dll + relfsd.dll.txt
•   imgfs.dll + imgfs.dll.txt
•   initvmmap.exe + initvmmap.exe.txt


W takiej strukturze powinien wyglądać nasz folder Out, musimy pamiętać o tym, że PLIKI i MODUŁY ze Starego i Nowego XIP-a zamieszczamy w Katalogu ze starego jądra systemu, ponieważ ponad folderami FILES i MODULES, mamy 4 pliki .txt ze starego Kernel-a. Musimy pamiętać, że grają one tu pierwsze skrzypce……..

   Dla ułatwienia te pliki to:

1.   PARTHDR.txt
2.   ROMHDR.txt
3.   MAP.physical.txt
4.   MAP.txt*

*Według pliku MAP.txt, będziemy układać cała sekcję opierając się na jego adresach pamięci wirtualnej.

 Z reguły wygląda to tak:

01fa01fe - 01fa01fe L00000000 Start: first DLL address
01fa01fe - 01feb000 L0004ae02 NUL
01feb000 - 01fec000 L00001000 initialized data of region_1 ceddk.dll
01fec000 - 01fed000 L00001000 initialized data of region_1 msflash.dll
01fed000 - 01fee000 L00001000 initialized data of region_1 relfsd.dll
01fee000 - 01fef000 L00001000 initialized data of region_2 cecompr.dll
01fef000 - 01ff0000 L00001000 initialized data of region_1 regenum.dll
01ff0000 - 01ff1000 L00001000 initialized data of region_1 pm.dll
01ff1000 - 01ff2000 L00001000 initialized data of region_1 mspart.dll
01ff2000 - 01ff3000 L00001000 initialized data of region_1 imgfs.dll
01ff3000 - 01ff4000 L00001000 initialized data of region_1 fsreplxfilt.dll
01ff4000 - 01ff5000 L00001000 initialized data of region_1 fsdmgr.dll
01ff5000 - 01ff6000 L00001000 initialized data of region_1 fatutil.dll
01ff6000 - 01ff7000 L00001000 initialized data of region_1 fatfsd.dll
01ff7000 - 01ff8000 L00001000 initialized data of region_1 encfilt.dll
01ff8000 - 01ff9000 L00001000 initialized data of region_1 diskcache.dll
01ff9000 - 01ffa000 L00001000 initialized data of region_1 devmgr.dll
01ffa000 - 01ffc000 L00002000 initialized data of region_1 crypt32.dll
01ffc000 - 01ffd000 L00001000 initialized data of region_1 coredll.dll
01ffd000 - 01ffe000 L00001000 initialized data of region_1 certmod.dll
01ffe000 - 01fff000 L00001000 initialized data of region_1 cachefilt.dll
01fff000 - 02000000 L00001000 initialized data of region_1 busenum.dll
02000000 - 02000000 L00000000 End: last DLL address

02000000 - 03dc0000 L01dc0000 NUL
03dc0000 - 03dc6000 L00006000 Virtual base address of ceddk.dll
03dc6000 - 03dd0000 L0000a000 NUL
03dd0000 - 03dda000 L0000a000 Virtual base address of msflash.dll
03dda000 - 03de0000 L00006000 NUL
03de0000 - 03de7000 L00007000 Virtual base address of relfsd.dll
03de7000 - 03df0000 L00009000 NUL
03df0000 - 03df7000 L00007000 Virtual base address of cecompr.dll
03df7000 - 03e5e000 L00067000 NUL
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
03e83000 - 03e8d000 L0000a000 Virtual base address of fsreplxfilt.dll
03e8d000 - 03ea2000 L00015000 Virtual base address of fsdmgr.dll
03ea2000 - 03eab000 L00009000 Virtual base address of fatutil.dll
03eab000 - 03ebe000 L00013000 Virtual base address of fatfsd.dll
03ebe000 - 03eca000 L0000c000 Virtual base address of encfilt.dll
03eca000 - 03ed0000 L00006000 Virtual base address of diskcache.dll
03ed0000 - 03edc000 L0000c000 Virtual base address of devmgr.dll
03edc000 - 03f4e000 L00072000 Virtual base address of crypt32.dll
03f4e000 - 03fe4000 L00096000 Virtual base address of coredll.dll
03fe4000 - 03ff0000 L0000c000 Virtual base address of certmod.dll
03ff0000 - 03ffa000 L0000a000 Virtual base address of cachefilt.dll
03ffa000 - 04000000 L00006000 Virtual base address of busenum.dll
04000000 - 801c0000 L7c1c0000 NUL


Ważne: musimy pamiętać, aby w mapie końcowej, po całej relokacji, nie znalazł się żaden wykrzyknik……. 
W podmianie Adresów pomoże nam M’reloc, jednak do tego, trzeba w każdym Module w pliku imageinfo.txt , z mienić adres na taki jak zmieniamy w w/w aplikacji, inaczej nasz OS nie wstanie…………



Treść i Ogólna zasada, opisana powyżej oparta na Artykule Baniaczka:
   
Budujemy nowy ROM: Przenoszenie XIP prawie na maksa


i Artykule Utak3ra
Budowa uniwersalnej kuchni - Portowanie ROM'u
« Ostatnia zmiana: Luty 15, 2009, 16:12:51 wysłana przez nokser »

*

Offline Luby

  • **
  • 155
  • Płeć: Mężczyzna
  • Vaillant/Aero Developer
  • Sprzęt: Himalaya, Alpine, Universal
Odp: Portowanie Sekcji XIP
« Odpowiedź #1 dnia: Sierpień 18, 2009, 11:39:48 »
Przeportowalem XIP twoim sposobem, i natknąłem się na problem. Zrelokowałem wszystkie moduły już, wszystko jest tak jak powinno być i gdy klikam Write Maps XIPPORT wywala błąd o treści "Index and length must refer to a location within string. Parameter name: length". Nie mam pojęcia co on może oznaczać i jak go naprawić, szukałem też na google i znalazłem temat w którym piszą aby powiekszyć troche xip ale to nic nie dało.

Co robić?

//edit/ Zrobiłem wszystko od początku i ruszyło! :)
« Ostatnia zmiana: Sierpień 18, 2009, 14:18:52 wysłana przez Luby »
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
~Albert Einstein
Avatar niezgodny z Regulaminem (przekleństwo).

*

nokser

Odp: Portowanie Sekcji XIP
« Odpowiedź #2 dnia: Sierpień 20, 2009, 11:43:55 »
czasem jest brak miejsca, bądź pomylone są adresy  :wink: