MCPLive > 杂志文章 > Windows Mobile系统ROM定制指南(三)

Windows Mobile系统ROM定制指南(三)

2010-12-103Gfly工作室 Tonney Eszc《微型计算机》2010年11月下

●Step 2:移植XIP

利用XIPPort,点击dump xip.bin(图3 ),得到OUT文件夹。先按write maps纪录修改前面的地址,将MAP.txt文件另存后再按make pkgs进行整理。替换除OEMXIPKernel文件夹之外的其它文件后,按“undo”→“realloc P”重排地址。


图3

若提示出错,可能是地址重排时出现地址重叠,只要按照之前另存的MAP.txt文件中的顺序,按照新替换的文件大小,重新计算后修改新替换文件的imageinfo.txt中的地址“e32_vbase:”和“o32[1].o32_realaddr:”,然后再次进行realloc P地址重排即可。有时出错是因为替换的新文件超过原来的限制,这时有两个方法:一是删除并不需要的文件后再重排地址;二就是对XIP的大小进行扩容,具体操作为:

打开romhdr.txt,我们主要修改这几个内容:

physfirst: P=80000000

physlast: 803E1A3C

nummods: (00000022)

ulRAMStart: R=803E2000

ulRAMFree: 80487000

ulRAMEnd: 83400000

physfirst是起始地址,physlast是结束地址,我们要增大1M的空间,就要把physlast的地址改后1M(即修改成804E1A3C),后面的ulRAMStart和ulRAMFree也要顺着延后1M地址才行,结果如下:

physfirst: P=80000000

physlast: 804E1A3C

nummods: (00000022)

ulRAMStart: R=804E2000

ulRAMFree: 80587000

ulRAMEnd: 83400000

保存关闭后,点击xipport的realloc P,若没有再报错,则说明空间足够大了。点击write maps,将重新分配模板位置的值写进map.txt。然后再进入out目录,打开map.txt查看有没有地址冲突。如果有冲突,需要修改新替换文件的imageinfo.txt中的地址。

对比修改前后的map.txt文件,可以发现原本在RAM里有几个模块而现在没有了。这是因为加大地址后把那些文件都挤出了地址范围,为此我们要将这些模块加回来。

此外,从修改后的map.txt文件中不难看出physlast从地址80477e8a就已经结束了,后面多出“80477e8a - 804e1a3c L00069bb2 NUL”,重新修改一下ROMHDR.txt,将physlast修改成80477e8c,保存退出后再用xipport realloc P、write maps。打开ROMHDR.txt,把ulRAMStart修改成80478000。

接下来需要往map.txt中加入nk、hd.dll、osaxst0.dd和osaxst1.dll模块,后用xipport realloc P、write maps处理,得到如下结果:

80478000 - 80478000 L00000000 Sart: start of RAM

80478000 - 80479000 L00001000 nitialized data of region_1 hd.dll

80479000 - 8047d000 L00004000 nitialized data of region_1 osaxst0.dll

8047d000 - 8047e000 L00001000 nitialized data of region_1 osaxst1.dll

8047e000 - 80480000 L00002000 NUL

80480000 - 80486000 L00006000 uninitialized data of region_1 nk.exe

80486000 - 80504000 L0007e000 initialized data of region_2 nk.exe

80504000 - 80517000 L00013000 initialized data of region_1 kd.dll

80517000 - 80517000 L00000000 ------ start of RAM free space

80517000 - 83400000 L02ee9000 NUL

83400000 - 83400000 L00000000 End: end of RAM

点击xipport的build xip_out.bin,会生成一个xip_out.bin,这就是替换后的新XIP了,接着我们要导入xip_out.bin到os.nb.payload里。如图4所示,在xipport的“write xip_out.bin to:”两个框填00320000(XIP的起始地址)及OS.NB.payload(要导入的文件名),然后按一下write xip_out.bin就可以了。


图4

SYS移植

SYS的移植其实很简单,不管从任何渠道得到的SYS文件,只需要保留原SYS文件夹中的.VM和.ROM文件夹即可,其余部分可以完全替换。

PRB模式下的ROM移植

前文已反复多次提到,在PRB模式下可自动移植并对模块文件进行重新排列,那么在PRB模式下进行ROM移植将会是一件非常简单的事情,这也是为什么众多的ROM爱好者喜欢用PRB生成ROM的原因之一。在PRB模式下,仅需替换掉MSXIPKernel内的所有文件,即可完成ROM移植。

本文导航

分享到:

用户评论

共有评论(1)

  • 2011.04.23 23:02
    1楼

    太爱MC了 我还本来还想自己把网上下来的教程整理下呢 这下可以省事了

    (0) (0) 回复

用户名:

密码: