Avis
3rd July 2007, 01:05 PM
One man has successfully integrated WM6 modules into XIP of hx4700. The result: working WM5 with WM6 modules from "msxipkernel" package (taken from Universal)
Maybe his method can help us to port WM6 on Himalaya?
(Original thread: http://4pda.ru/forum/index.php?showtopic=44886)
Here is what he did (translate from russian):
1. Take "xipport". Modified one is attached.
2. dump xip & build maps for hx4700. Save "map.txt"
3. dump xip & build maps from wm6 xip (HTC Universal or any other device)
4. Just copy all modules and those ".txt" files from msxipkernel (wm6) except "cachefilt", "encfilt", "filesys".
5. "realloc P" & write maps (it works for hx4700). If not enough mem for realloc - then increase "physlast" in "romhdr.txt"
6. In new "map.txt" addresses of regions in section "first Dll... last Dll" for 4 files in "oemxipkernel" must stay unchanged, for example:
---
01fe1000 - 01fe2000 L00001000 actual of region_1 Fsdspy.dll
01fe2000 - 01fef000 L0000d000 actual of region_1 msflash.dll
01fef000 - 01ff0000 L00001000 actual of region_2 cecompr.dll
01ff0000 - 01ff1000 L00001000 actual of region_1 ceddk.dll
---
If they are not then fix in corresponding "imageinfo.txt" value of o32[1(2)].o32_realaddr
7. Repeat the same for all files in "msxipkernel". We need that "actual of region_1" correspond with "map.txt" (wm6). For files "pm.dll" and "regenum.dll" will be "!!!!!!!!!!!!!" symbols.
8. Edit "o32[1].o32_realaddr" for "pm.dll" and "regenum.dll" to make there regions exactly concur with regions of excepted "cachefilt", "encfilt". Such a replacement. After all this section must be:
---
01fa01fe - 01fa01fe L00000000 Start: first DLL address
01fa01fe - 01fe1000 L00040e02 NUL
01fe1000 - 01fe2000 L00001000 actual of region_1 Fsdspy.dll
01fe2000 - 01fef000 L0000d000 actual of region_1 msflash.dll
01fef000 - 01ff0000 L00001000 actual of region_2 cecompr.dll
01ff0000 - 01ff1000 L00001000 actual of region_1 ceddk.dll
01ff1000 - 01ff2000 L00001000 actual of region_1 mspart.dll
01ff2000 - 01ff3000 L00001000 actual of region_1 imgfs.dll
01ff3000 - 01ff4000 L00001000 actual of region_1 fsreplxfilt.dll
01ff4000 - 01ff5000 L00001000 actual of region_1 fsdmgr.dll
01ff5000 - 01ff6000 L00001000 actual of region_1 fatutil.dll
01ff6000 - 01ff7000 L00001000 actual of region_1 fatfsd.dll
01ff7000 - 01ff8000 L00001000 actual of region_1 regenum.dll
01ff8000 - 01ff9000 L00001000 actual of region_1 diskcache.dll
01ff9000 - 01ffa000 L00001000 actual of region_1 devmgr.dll
01ffa000 - 01ffc000 L00002000 actual of region_1 crypt32.dll
01ffc000 - 01ffd000 L00001000 actual of region_1 coredll.dll
01ffd000 - 01ffe000 L00001000 actual of region_1 certmod.dll
01ffe000 - 01fff000 L00001000 actual of region_1 pm.dll
01fff000 - 02000000 L00001000 actual of region_1 busenum.dll
02000000 - 02000000 L00000000 End: last DLL address
---
9. Look into "map.txt" (Universal) to find where was the first region of "regenum"
---
01fef000 - 01ff0000 L00001000 actual of region_1 regenum.dll
---
If it was "0x1FEF000", and we changed it to "01ff7000". So we have to patch file. Edit "S000" of "regenum.dll" and fix all dword-aligned values that looks like: XX XF FE 01 to XX X7 FF 01 (so we see them in "winhex"). It can be automated with a simple script :)
10. Do the same for "S000" in "pm.dll"
11. Set in all "imageinfo.txt" cvalue of "e32_subsysminor" to 1.
12. Write new placement of "ROMHDR" into "S000" of "nk.exe"
13. Make ROM, flash and Try!
Maybe his method can help us to port WM6 on Himalaya?
(Original thread: http://4pda.ru/forum/index.php?showtopic=44886)
Here is what he did (translate from russian):
1. Take "xipport". Modified one is attached.
2. dump xip & build maps for hx4700. Save "map.txt"
3. dump xip & build maps from wm6 xip (HTC Universal or any other device)
4. Just copy all modules and those ".txt" files from msxipkernel (wm6) except "cachefilt", "encfilt", "filesys".
5. "realloc P" & write maps (it works for hx4700). If not enough mem for realloc - then increase "physlast" in "romhdr.txt"
6. In new "map.txt" addresses of regions in section "first Dll... last Dll" for 4 files in "oemxipkernel" must stay unchanged, for example:
---
01fe1000 - 01fe2000 L00001000 actual of region_1 Fsdspy.dll
01fe2000 - 01fef000 L0000d000 actual of region_1 msflash.dll
01fef000 - 01ff0000 L00001000 actual of region_2 cecompr.dll
01ff0000 - 01ff1000 L00001000 actual of region_1 ceddk.dll
---
If they are not then fix in corresponding "imageinfo.txt" value of o32[1(2)].o32_realaddr
7. Repeat the same for all files in "msxipkernel". We need that "actual of region_1" correspond with "map.txt" (wm6). For files "pm.dll" and "regenum.dll" will be "!!!!!!!!!!!!!" symbols.
8. Edit "o32[1].o32_realaddr" for "pm.dll" and "regenum.dll" to make there regions exactly concur with regions of excepted "cachefilt", "encfilt". Such a replacement. After all this section must be:
---
01fa01fe - 01fa01fe L00000000 Start: first DLL address
01fa01fe - 01fe1000 L00040e02 NUL
01fe1000 - 01fe2000 L00001000 actual of region_1 Fsdspy.dll
01fe2000 - 01fef000 L0000d000 actual of region_1 msflash.dll
01fef000 - 01ff0000 L00001000 actual of region_2 cecompr.dll
01ff0000 - 01ff1000 L00001000 actual of region_1 ceddk.dll
01ff1000 - 01ff2000 L00001000 actual of region_1 mspart.dll
01ff2000 - 01ff3000 L00001000 actual of region_1 imgfs.dll
01ff3000 - 01ff4000 L00001000 actual of region_1 fsreplxfilt.dll
01ff4000 - 01ff5000 L00001000 actual of region_1 fsdmgr.dll
01ff5000 - 01ff6000 L00001000 actual of region_1 fatutil.dll
01ff6000 - 01ff7000 L00001000 actual of region_1 fatfsd.dll
01ff7000 - 01ff8000 L00001000 actual of region_1 regenum.dll
01ff8000 - 01ff9000 L00001000 actual of region_1 diskcache.dll
01ff9000 - 01ffa000 L00001000 actual of region_1 devmgr.dll
01ffa000 - 01ffc000 L00002000 actual of region_1 crypt32.dll
01ffc000 - 01ffd000 L00001000 actual of region_1 coredll.dll
01ffd000 - 01ffe000 L00001000 actual of region_1 certmod.dll
01ffe000 - 01fff000 L00001000 actual of region_1 pm.dll
01fff000 - 02000000 L00001000 actual of region_1 busenum.dll
02000000 - 02000000 L00000000 End: last DLL address
---
9. Look into "map.txt" (Universal) to find where was the first region of "regenum"
---
01fef000 - 01ff0000 L00001000 actual of region_1 regenum.dll
---
If it was "0x1FEF000", and we changed it to "01ff7000". So we have to patch file. Edit "S000" of "regenum.dll" and fix all dword-aligned values that looks like: XX XF FE 01 to XX X7 FF 01 (so we see them in "winhex"). It can be automated with a simple script :)
10. Do the same for "S000" in "pm.dll"
11. Set in all "imageinfo.txt" cvalue of "e32_subsysminor" to 1.
12. Write new placement of "ROMHDR" into "S000" of "nk.exe"
13. Make ROM, flash and Try!