WINDOWSMOBILE系统ROM定制指南.doc

上传人:仙人指路1688 文档编号:2390156 上传时间:2023-02-17 格式:DOC 页数:23 大小:709KB
返回 下载 相关 举报
WINDOWSMOBILE系统ROM定制指南.doc_第1页
第1页 / 共23页
WINDOWSMOBILE系统ROM定制指南.doc_第2页
第2页 / 共23页
WINDOWSMOBILE系统ROM定制指南.doc_第3页
第3页 / 共23页
WINDOWSMOBILE系统ROM定制指南.doc_第4页
第4页 / 共23页
WINDOWSMOBILE系统ROM定制指南.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《WINDOWSMOBILE系统ROM定制指南.doc》由会员分享,可在线阅读,更多相关《WINDOWSMOBILE系统ROM定制指南.doc(23页珍藏版)》请在三一办公上搜索。

1、Windows Mobile系统ROM定制指南你在使用Windows Mobile手机吗?官方ROM固然稳定,但并非最佳选择。现在你将有机会从官方ROM中去掉运营商定制的客户端、修改开机画面,甚至按照个人喜好对系统功能重新定制,从而打造一套完全属于自己的手机操作系统,还不赶快来试试?长期以来,Windows Mobile(以下简称“WM”)的ROM(只读内存)定制技术掌握在极少数高手的手中,但随着参与的手机玩家越来越多,ROM的分解、制作、合成工具越来越简单化,现在只要有一点电脑基础的人都可以利用网络上的现成工具制作出自己的个性ROM。尽管网络上流行的ROM定制工具和教程很多,但万变不离其宗。

2、由于本文篇幅较长,因此分成了多个部分,本期主要介绍ROM定制的基础知识和主要工具。ROM定制知识扫盲对于大多数非专业出身的手机玩家而言,ROM文件基于系统层面的内容是无法修改编译的,因此,通常我们所说的ROM DIY其实就是利用某些工具对ROM先解包,然后添加、删除或者替换部分文件,再进行打包、转换的过程。为方便理解,有必要先来了解一些ROM定制经常用到的术语。硬件知识IPL(Initial Program Loader,初始程序加载):是CPU复位向量用以引导启动的的软件组件。其负责主板、电源、硬件的初始化程序,并把SPL装入RAM(随机存取存储器)中。若IPL损坏,由于不能加载SPL,因此

3、手机将无法使用任何由SPL完成装载的操作系统。SPL(Second Program Loader,第二次装系统):负责装载操作系统到RAM中。同时,SPL还包括许多系统命令,如mtty中使用的命令等。SPL损坏了可以用烧录器重写。 一般SPL具有以下功能:检测手机硬件、寻找系统启动分区、启动操作系统、为系统的基本维护提供操作界面、通过数据线与操作终端(如PC)建立连接、接受和执行相应命令等。我们常说的三色屏就是由SPL驱动的。IPL和SPL的版本可以在三色屏中查看,具体方法是:按住照相键不放,然后短按电源开机键即可进入三色屏查看相关信息。RADIO:负责PPC作为手机功能的通讯功能,包括它的电

4、话和上网功能,事实上,RADIO硬件模块在手机出厂时已经内置,我们所刷入的不过是软件部分,因为软件决定了RADIO硬件模块接收和传递信号的频段分配,所以硬件RADIO的称谓已经被弱化,我们把这种RADIO软件层面的东东一律称为RADIO。刷机原理刷ROM:指将新的ROM刷入PPC。ROM部分有IPL、SPL、OS、EXTROM、RADIO、STORAGE等,我们刷入的ROM一般只包含OS部分。OS部分又分为XIP和IMGFS,而这两部分正是影响系统的主要因素。刷RADIO:即刷入RADIO模块的应用软件,不同地区、不同通信网络、无线通讯基站在接收和发送无线信号上的频段各有不同,那么处于这个地区

5、和这个通讯服务网络之内的RADIO硬件模块,在频段调整上越接近于本地基站,手机的通讯信号就会越好,信号接收和发送就会越完整越快速,信号搜索上也会越稳定,从而使PPC的信号强劲且省电。解锁:PPC在出厂时对机器内部核心的CID(Customer IDentity,手机的平台版本)地址段进行了上锁。上锁的原理是基于微软对于开放性的WM系统所提供的一种特权保护机制,该机制对应用程序能够访问的系统资源作了限制,而厂家正是利用这一点实现了对系统ROM的锁定。锁定的目的既是为了不同机型间的区别和独立性,又是保障厂家对WM系统推陈出新上的独立自主权。锁定被集中在机器CID地址段上,不同CID的ROM相互之间

6、不能进行交互性的替换,如果强行刷入CID不同的ROM,将无法通过CID校验,严重的会出现系统无法修复的现象。为此衍生出一种通过CID地址段欺骗的手段来对上锁的CID进行破解,进而将新的ROM写入机器。永久解锁:又称SuperCID,此种方法即便操作失败,原有系统也不会受到较大破坏,且很容易修复,因此我们常称此种解锁能使PPC“拥有金刚不坏之身”。操作术语重启:通过重启可以解决RAM运行不正常的故障,如系统运行中的死机、找不到程序模块等。大部分的WM手机都会在使用一定时间内做重启操作,不是因为断电,而是由于机器运行一段时间之后会有相当一部分的垃圾文件保存在RAM中,这是由于我们频繁操作手机造成的

7、。众所周知,RAM剩余得越少,机器可用的动态存储空间就越小,运行速度也会越慢,耗电量会随之增大。重新开机之后,系统会重新加载应用程序,这时候RAM是一个相对干净的空间。硬启:和重启一样都需要重新启动机器,所不同的是硬启将丢失保存在ROM和RAM中的所有数据,而重启只丢失RAM。硬启后系统会自动还原为初始状态,所有的设定要重新来做,所有的资料要重新拷贝进去。硬启的原理是利用机器自身进行了格式化,再将保存在ROM中的初始数据调出并重新加载。硬启操作平时不常用,除非系统的ROM出现了无法修复的错误导致手机不能正常运行,那就只能通过硬启来修复系统。定屏:顾名思义就是屏幕定各住不动、不理会用户的操作。P

8、PC中的定屏现象主要指的是在开机三屏(或者两屏)上,正常情况下开机之后随着系统的加载,开机屏幕会逐步跳过直到出现调整的界面,但是因为ROM制作中出现错误或者遗漏,导致新ROM刷入之后开机屏幕跳不过去。无论你等待多长时间,手机屏幕定格在那不动了,无法进入系统,导致刷机失败。假死:又称为睡死,是指机器表面上运行正常,但是后台的部分应用程序不能被激发。比如在待机模式下,电话呼入屏幕无显示、无铃声,在操作某项程序时出现激发暂时无反应或者反应延时过长。三色屏:刷机时必须进入的状态,类似于电脑进入BIOS设置界面。当手机系统出了问题且无法进入时,必须进三色屏才能重刷系统。一般情况下通过按住手机的照相键,再

9、按开机键进入。进三色屏后可以查看当前手机字库的版本,如IPL、SPL版本号等。实例解析ROM结构通常一个WM系统的ROM由SPL(装载系统、CID检测等)、IPL、OS(操作系统)、Splash(开机画面)、RADIO(无线部分)、ExtROM等多个部分组成。在这里笔者以多普达S505的ROM为例,简单分析其结构。看过本节之后,相信大家都能把自己购买的新手机的配置文件添加到NBHUtil、htcrt、NBHextract等解包工具中。下载的EXE文件可以用WINRAR打开并且解压出来,其中RUU_signed.nbh是ROM,其余文件是刷机软件。先解压RUU_signed.nbh到一个新文件夹

10、中。如图1所示,打开NBH Utility软件,点击Extract NBH选项,在NBH To Extract一栏选上刚解压的RUU_signed.nbh,点击“Go!”按钮。再点击图1的处,可得到0_SPL.nb、1_Splash.nb、2_SubSplash.nb、3_Unknown-785.nb、4_OS.nb、5_Unknown-2560.nb等文件。图1用WINHEX打开RUU_signed.nbh.payload文件,如图2所示,1FF之前交代了机型定义、文件版本以及组成NBH有几个模块、各自的起始位置、文件大小等。图2如今我们需要在NBHUtil.xml文件中添加S505,具体配

11、置如下:VOGU21000DOPOD7011.73.706.2CHSSPLSplashSubSplashUnknown-785OSUnknown-2560OS.nb.payloadOS.nb.payload有点类似于一个已经安装操作系统的磁盘镜像。要弄清OS.nb.payload,笔者认为有两个关键标记一定要记住,一个是E9FDFF00(OS跳转标记),另外一个是MSFLSH50。为什么说这两个地方要记住呢?因为MSFLSH50的偏移地址就是扇区大小,这分为两种情况:一种是MS标准的OS.NB。在一个MS标准的OS.NB里面,扇区大小只有2种可能,要么是200,要么是800,就是说MSFLSH

12、50只可能出现在200或者800的偏移位置。另一种是非MS标准的OS.NB。其实也是在标准的OS.NB上进行插值处理,通常是插入0x8或者0x8的倍数的冗余数据,目的是对数据进行冗余性的编码来防止数据的丢失、错误。如此一来,往往会造成MSFLSH50没有出现在200或者800的偏移位置上,这就需要使用NBSpilt了。要修改OS.nb.payload,必须先了解其主要结构。该文件通常由4个部分(ULDR、XIP、IMGFS和FAT)组成。1.ULDR(Update Loader)。ULDR只是在更新时需要使用(包括ULDR的自我更新),有图形界面,显示驱动是uldrui.dll,分区为PART

13、_BOOTSECTION(0x20)格式。在结构上,ULDR是一个独立的分区. 是ImageUpdate重要一环。ULDR只包含小尺寸的必要代码,可以读写系统分区和用户分区实现动态更新。IPL根据用户按键或者UpdateBin.exe设置,有选择的进入ULDR。2.XIP(eXecute In Place)是WinCE的核心部分。在微软的定义中,这块区域以非压缩格式存放,不需加载,由Bootloader直接调用执行。但因为现在都是NAND ROM,所以XIP模块依然需要调入RAM的PAGEPOOL执行。3.IMGFS好比是操作系统的镜像快照,XIP启动后就可以访问IMGFS文件系统上的所有文件

14、了。IMGFS可以是XPR或LZX压缩格式(取决于XIP里面的cecompr.dll),系统访问上面的文件会自动解压到RAM。因为普通PE文件调入RAM执行要进行地址重定位,为了提高效率,IMGFS中的文件可以是重定位好的模块形式,这些程序运行就不用再重定位了,直接调入RAM中保留的PagePool(缓冲池)执行。4、FAT操作系统引导记录区。有些机型没有FAT部分,若遇到这种情况的话,那么ULDR部分可以在定制时完全删除。OS.nb.payload的0x1BE至0x1FD部分是DPT部分,定义了刚才4部分的起始位置、大小等内容。Splash接下来讲的是WM手机的开机画面,即1_Splash.

15、nb和2_SubSplash.nb这两个文件。文件格式比较简单的,甚至还不如部分山寨手机的开机画面文件格式复杂。能够制作这种格式的软件有很多,时下最常用的是nb_image_converter,具体操作如下:Step 1:在nb_image_Tool的界面下点击Load按钮;从前文解包出来的文件中选取1_Splash.nb,即可看到现在的开机画面;Step 2:替换方法也很简单,点击Load载入一张新的图片,然后点击Save.nb就可以了。这个软件有两个缺点,一是不能把图片另存下来,二是画面的颜色偏差太大,实际显示效果不佳。为此笔者推荐另一款软件Image Search Editor,可以直接

16、从NBH文件中搜索到开机画面。Step 1:打开软件会跳出一个文件选择对话框,双击1_Splash.nb。接下来在“视图”菜单里面选择16色,并选择设定图片尺寸,如笔者的手机屏幕分辨率为240320;Step 2:大家看到了吧,显示效果和前面那个软件完全是天壤之别。要想把画面保存下来也很简单,进入文件菜单选择另存为BMP图像就可以了。最后进入“编辑”菜单,选择“用BMP图片替换文件”便成功替换掉了1_Splash.nb里面的画面。写在最后利用现下的工具,ROM制作步骤虽然变得简单,但过程中存在着诸多的细节需要斟酌,大家仍然要有充分的细心和耐心,才能制作出一个完美的ROM。在上期文章中,我们详细

17、介绍了Windows Mobile系统(以下简称“WM”)的ROM定制的相关知识和操作术语,并通过实例分析了ROM的主要结构。俗话说“工欲善其事,必先利其器也”,接下来我们就来一起了解用于WM系统ROM定制的常用工具。 ROM合成工具ROM合成工具现在比较通用的有2种:imgfstools和Platformrebuilder。imgfstools出现较早,包含ROM分解、合成打包等功能,每项功能均有单独的命令实现,使用较为复杂,且无法对模块地址排序进行处理。Platformrebuilder则简单易用,加上诸多国内外高手为之开发的可视操作界面,使其应用更为广泛,大有取代imgfstools之势

18、。imgfstools原理及介绍imgfstools主要用来把OS.nb分解成多个小文件,能够解包、封包os.nb文件。大家使用的最多的就是解开ROM的imgfs部分,即平时所说的DUMP,利用它可以将ROM的imgfs解开并保存在DUMP文件夹中。用户可以对DUMP目录做合理修改,然后按照解包步骤逆向操作,生成新的OS.Nb。下面我们将分解和封包的步骤梳理一遍。分解过程链条:RUU-signed.nbh(NBH_Extract)OS.nb(NBSplit)OS.nb.payload(ImgfsFromNb)imgfs.bin(ImgfsToDump)DUMP目录封包过程链条:DUMP目录(I

19、mgfsFromDump)imgfs-new.bin(ImgfsToNb)OSnew.nb.payload(NBMerge)OS-new.nb(NBHGen)RUU-signed-new.nbhNBInfo利用NBInfo可以看到OS.nb文件的结构,并能从指定的OS.nb文件输出信息。特别是分区表和MSFLSH区块,以及搜索各部分关键标记。用法:NBinfo NBSplit很多厂家的ROM都包含了很多额外的数据,为了防止刷机过程中数据的丢失、错误,而采取在发布的ROM中进行效验插值处理。用法1:NBSplit -hermes|-kaiser|-titan|-wizard|-athena|-s

20、p|-data -extra 用法2:NBSplit -data -extra ImgfsFromNb前身为prepare_imgfs,主要功能就是从OS.nb.payload中提取imgfs部分,并写入到一个叫imgfs.bin文件中。用法:ImgfsFromNb ImgfsToDumpImgfs好比是操作系统的镜像快照,而一个操作系统里面有很多文件,ImgfsToDump的作用就是把文件从imgfs文件释放到DUMP目录。需要说明的是,RecMod是一个把模块还原成单文件的一个工具,如果它和ImgfsToDump在同一个目录,那么生成的DUMP目录里面的所有模块文件,都会在模块目录里面重建

21、一个单文件(DLL或者EXE)。用法:ImgfsToDump ImgfsFromDump以原始的imgfs.bin为模板,从DUMP目录,生成新的imgfs-new.bin文件,它的前身是BuildImgfs,BuildImgfs和ImgfsFromDump最大的区别是BuildImgfs只能生成和原始imgfs.bin文件大小一模一样的imgfs-new.bin,而ImgfsFromDump则可以根据DUMP目录文件内容,自动调整IMGFS文件大小,有效节约了空间,避免浪费,毕竟PPC的内存是宝贵的。用法:ImgfsFromDump ImgfsToNb这个工具把imgfs-new.bin结合

22、OS.nb.payload为模板,写入到一个新的os-new.nb.payload文件中。如果用了“-conservative”参数,那么在NBMerge的时候,也要使用“-conservative”参数。用法1:ImgfsToNb 用法2:ImgfsToNb -conservativeNBMerge实际上就是NBSplit的逆向操作,重新对os-new.nb.payload进行插值处理,生成os-new.nb。用法1:NBMerge -hermes|-kaiser|-titan|-sp|-wizard|-athena 用法2:NBMerge -hermes|-kaiser|-titan|-s

23、p|-wizard|-athena -conservative用法3:NBMerge -data -extra 用法4:NBMerge -data -extra -conservativePlatformrebuilder原理及介绍Platformrebuilder(PRB)是2009年推出的一款制作ROM的工具,其特点是快捷简便,省去了移植XIP、重拍地址的种种麻烦,并在一定程度上对生成的ROM做了加密(仅保留1个DSM)。PRB在工作过程中,会将XIP和ROM中的所有模块文件放在一起打包,再将所有的DSM文件信息打包到一个DSM文件中,然后对所有模块文件进行重新排列,生成ROM。排序工具上

24、文已经提到了PRB具备模块排序功能,故下面介绍的2个排序工具仅针对imgfstools。Greloc该工具是用来为ROM的模块(module,通常是个DLL文件)地址进行重定位的,通常是BUILDOS之后的第一步操作。WM系统中的模块部分在移植后生成ROM之前必须对所有模块地址按.rom和.vm文件中的地址范围进行重新定位,以保证模块地址不冲突、不超范围,否则生成的ROM无法正常开机。当然,对于直接分解的原始ROM,如果未加入新的模块文件,则没有必要重排地址。此工具虽然有图形界面,但是实际在使用时有命令行格式。值得一提的是,GReloc只能用于WM6.1以前的ROM,不支持WM6.5。用法:G

25、Reloc -doit -dumpWMReloc和GReloc相比,WMReloc重排速度更快并且可以记录重排地址的日志,使用中相对稳定一些。WMReloc针对WM6.1和WM6.5有两个不同的版本。WMReloc没有图形界面,只是一个命令行工具,用法如下:WMReloc -gdir -mmodule -s0Slot0 -s1Slot1 -llogfile-g参数后是需要重排地址的文件夹;-l参数后是记录日志的文件名称;-m参数后是模块名称;-s0指定Slot0部分的地址;-s1指定Slot1部分的地址。ROM定制高级工具如今广泛使用的ROM定制高级工具有很多,如基于imgfstools的Bu

26、ildOS、myBuildOS、PPCKitchen等以及基于PRB的EVK、OSKitchen、PRBuildOS等。其中,BuildOS、myBuildOS和EVK本文将作重点讲解,其它工具的使用方法则可依此类推。BuildOS这是第一个图形化的WM系统ROM定制工具,后来的ROM定制图形化工具基本上都是从此BuildOS改进而来。其基本原理是,将各功能模块以文件夹的形式分开,通过图形化的界面组织在一起。用鼠标点选需要的模块,然后BuildOS就会将你定制好的模块所需的全部文件和注册表信息放到固定文件夹中,再通过ROM合成工具合成,即可生成用于刷机的个性化ROM。值得一提的是,在使用Bui

27、ldOS之前需要用分解工具将原始ROM分解,并用PackageTool等工具处理成BuildOS能用的模板形式(我们将在其它部分介绍)。BuildOS界面中各模块是分组显示的,分组、OEM名称和注释等信息是由各文件夹中的option.xml来控制的。进入界面后只需选择所需模块(某些SYS下的关键功能模块必须选择)和OEM软件,然后点击工具栏上的 按钮即可开始ROM文件的生成过程。此过程处理完毕,会在当前目录empdump下形成所有需要的文件,接下来再用模块地址修改工具重排模块地址、用imgfstools等工具合成ROM等等。myBuildOSmyBuildOS是某国内玩家在BuildOS的基础

28、上进行修改而来,主要针对CHT9000的机型进行设计。由于其解决了BuildOS无法保存已选组件的问题,故在PRB未出现之前被国内广大ROM制作爱好者所广泛使用。myBuildOS功能相对简单,同样是选好选项后直接点击工具栏上的“开始定制”。myBuildOS比BuildOS多出的功能有:第一、选择好的SYS和OEM选项可以保存,下次再用或移植后直接打开的便是用户原来选好的选项;第二、左边增加了分类列表,以方便选项过多时进行查找;第三、在某个OEM上点右键,可从菜单里打开该OEM所在的文件夹。对于新手而言,初次使用myBuildOS未必一帆风顺,其中以下两种错误时最常遇到的。错误一:因存在重复

29、文件导致报错。定制好的ROM中不允许有两个完全同名的文件存在,因为所有文件默认定制完后都在WINDOWS目录下,否则会报错。在myBuildOS选择组件的时候,很多只能是“只选其一”,如拨号面板、同名不同版本的软件等。如果把只选其一的选了两个或以上,就会出现报错。不同版本的同名软件或者同功能软件选了两个,就出现报错。遇到此种错误后,需要去模板的OEM和SYS目录下搜索提示的文件名,看其在哪些文件夹下。如果是不同版本的同名软件,从选项里去掉一个不需要的就行了。如果不同软件里有同名文件,而且不是相同的文件,那就需要改其中一个的文件名,然后在initflashfiles.txt里将其从WINDOWS

30、文件夹改名、复制到该软件的目录。错误二:生成注册表过程中出现报错。myBuildOS的Build过程先将需要的文件复制到tempdump文件夹下,最后才生成注册表。如果RGU有问题,并提示“建立 default.hv and user.hv文件错误,请查看templog.txt!”,这时需按提示信息找到templog.txt的最后提示出错的RGU文件名,然后去OEM和SYS目录搜索下,找到其所在位置,用UltraEdit等编辑工具打开检查。EVKEVK全称是Ervius Visual Kitchen,由国外网友Ervius基于PRB制作而成,功能强大,并具备以下特性:1.不仅支持各种HTC手机

31、,貌似还支持Eten、华硕等机型;2.简单的XIP Porting(系统的核心程序);3.在Cook ROM时,无需一个对象配一组rgu机码;4.由于bepe的程序代码采用了原生的C+语言,所以运行速度比较快;5.新的Kitchen把常用程序放在EXT数据夹,便于配置及管理;6.支持在同一个Kitchen建立多种语言以及版本的ROM;7.XIP采用了封装的方式。EXT数据夹的结构这里的结构可用build_rom.bat指定,若使用Visual Kitchen则有自己的自订方式。一个以bepe Kitchen为结构的ROM主要包括Kitchen、OEM、SYS、ROM(子目录为XIP)、Tool

32、s等文件夹。其中,OEM文件夹主要用于放置ROM的驱动程序以及系预设程序档案,建议新手不要乱动。SYS文件夹则用于放置系统预设程序,如IE、MSN、Office等,当然用户也可以将它们删掉。ROM文件夹是放置XIP(核心)的地方,除非用户要替换核心,否则不要乱动。EXT文件夹是放置一些HTC预设程序的地方,需留意各OEM Package的兼容性。此外,Tools文件夹无需过多理会。为了便于理解,下面我们以EVK为例教大家如何来操作。首先,下载EVK v1.8.2软件包,解压缩后可以看到如图所示的文件夹。点击ErviusKitchen.exe,接下来你会看到如图所示的弹出窗口,这是因为程序侦测不

33、到文件夹内有任何关于ROM的东西所显示的错误提示。点击“确定”后,出现EVK的主界面。由于刚开始我们没有Source,所以请大家随便找一款官方开放下载的ROM来当练习材料(本文将以HTC Touch Pro的ROMCODE来讲解)。将下载的ROMCODE用Winrar或7zip解压缩,在这里我们只需要RUU_Signed.nbh。接着把它取出来放到EVK目录下,点击DUMP分解官方ROM。进入XXXXX_DUMP文件夹,若见到如图所示的文件夹及文件,则说明已经准备好Kitchen所需要的素材了。在前两期文章中,我们详细介绍了Windows Mobile系统(以下简称“WM”)的ROM定制的相关

34、知识、操作术语以及ROM定制所需的工具,并通过实例分析了ROM的主要结构。在此基础之上,本期将教大家如何实现WM系统ROM移植以及制作OEM。需要说明的是,ROM移植是一项非常复杂的工作,除了要熟练掌握各种ROM制作工具外,还要对各机型的硬件以及ROM具有一定了解,方可进行移植。ROM移植Imgfstools下的ROM移植在imgfstools下的ROM移植主要是对XIP和SYS的移植,由于imgfstools不具备自动移植的功能,所以很多工作需要玩家手动完成。XIP移植XIP即eXecute In Place的缩写,是WinCE核心部分。在微软的定义中,这块区域是以非压缩格式存放的,无需加载

35、,由Bootloader直接调用执行。不同机型的XIP中OEMXIPKernel不同,而移植的目的是将低版本的Windows Mobile系统升级到高版本,即替换XIP中的MSXIPKernel。Step 1:获取XIP.BINXIP.BIN文件获取方式有很多,下面主要介绍用OSNBTools来获取XIP的方式,具体指令为“osnbtool -sp os.nb”。从图1中可以看到OS.NB文件已经被分解为纯OS镜像文件:os.nb.OS.NB。分区1为XIP部分,分区2为IMGFS部分。图1下面先导出XIP部分,输入“osnbtool -d os.nb.OS.NB 1 xip.bin”,得到了

36、xip.bin文件(图2)。图2的文件大小,重新计算后修改新替换文件的imageinfo.txt中的地址“e32_vbase:”和“o321.o32_realaddr:”,然后再次进行realloc P地址重排即可。有时出错是因为替换的新文件超过原来的限制,这时有两个方法:一是删除并不需要的文件后再重排地址;二就是对XIP的大小进行扩容,具体操作为:打开romhdr.txt,我们主要修改这几个内容:physfirst: P=80000000physlast: 803E1A3Cnummods: (00000022)ulRAMStart: R=803E2000ulRAMFree: 80487000

37、ulRAMEnd: 83400000physfirst是起始地址,physlast是结束地址,我们要增大1M的空间,就要把physlast的地址改后1M(即修改成804E1A3C),后面的ulRAMStart和ulRAMFree也要顺着延后1M地址才行,结果如下:physfirst: P=80000000physlast: 804E1A3Cnummods: (00000022)ulRAMStart: R=804E2000ulRAMFree: 80587000ulRAMEnd: 83400000保存关闭后,点击xipport的realloc P,若没有再报错,则说明空间足够大了。点击write

38、maps,将重新分配模板位置的值写进map.txt。然后再进入out目录,打开map.txt查看有没有地址冲突。如果有冲突,需要修改新替换文件的imageinfo.txt中的地址。对比修改前后的map.txt文件,可以发现原本在RAM里有几个模块而现在没有了。这是因为加大地址后把那些文件都挤出了地址范围,为此我们要将这些模块加回来。此外,从修改后的map.txt文件中不难看出physlast从地址80477e8a就已经结束了,后面多出“80477e8a - 804e1a3c L00069bb2 NUL”,重新修改一下ROMHDR.txt,将physlast修改成80477e8c,保存退出后再用

39、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 RAM80478000 - 80479000 L00001000 nitialized data of region_1 hd.dll80479000 - 8047d000 L00004000 n

40、itialized data of region_1 osaxst0.dll8047d000 - 8047e000 L00001000 nitialized data of region_1 osaxst1.dll8047e000 - 80480000 L00002000 NUL80480000 - 80486000 L00006000 uninitialized data of region_1 nk.exe80486000 - 80504000 L0007e000 initialized data of region_2 nk.exe80504000 - 80517000 L0001300

41、0 initialized data of region_1 kd.dll80517000 - 80517000 L00000000 - start of RAM free space80517000 - 83400000 L02ee9000 NUL83400000 - 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:”

42、两个框填00320000(XIP的起始地址)及OS.NB.payload(要导入的文件名),然后按一下write xip_out.bin就可以了。图4SYS移植SYS的移植其实很简单,不管从任何渠道得到的SYS文件,只需要保留原SYS文件夹中的.VM和.ROM文件夹即可,其余部分可以完全替换。PRB模式下的ROM移植前文已反复多次提到,在PRB模式下可自动移植并对模块文件进行重新排列,那么在PRB模式下进行ROM移植将会是一件非常简单的事情,这也是为什么众多的ROM爱好者喜欢用PRB生成ROM的原因之一。在PRB模式下,仅需替换掉MSXIPKernel内的所有文件,即可完成ROM移植。制作OE

43、MOEM Package是ROM模板的关键部分,通过选择不同的OEM Package可以定制出不同的ROM,接下来我们将介绍如何将软件的cab安装包制成OEM Package。一个完整的OEM Package应包括如下内容:软件自身所需文件、快捷方式(非必要,视软件而定)、dsm文件(不可缺)、rgu(注册表文件,非必要,视软件而定)、initflashfiles.txt(主要用于指定刷机文件的存放位置,非必要,视软件而定)、option.xml(用于系统加载该OEM Package以及显示相关内容,不可缺)。下面我们以PHM Registry Editor V0.70为例,来介绍如何将该软件

44、的cab安装包regedit.Mrln_ARM.CAB转换成OEM Package。值得一提的是,PHM Registry Editor是一款免费的PPC注册表编辑软件,从网上下载该软件的cab安装包(选PocktPC 2002/2003,ARM/PXA)。在将Cab转换成OEM之前,必须获取GUID(UUID)码以及解压cab包的软件。首先,GUID是Globally Unique IDentifier的缩写,每个OEM Package都有一串唯一的GUID码用于系统识别,玩家可以在特定网站(网址为 based”或者“Version4:Random”,然后点击“Get”按钮则会自动生成GUI

45、D(图5),将该串GUID码(本文为2e7230bd-1d2e-4c59-8643-85fee5d5f86b)记下。接着是解压cab包的软件。图5Ocp Software公司出品的WinceManager或CabWUZ均可以用于解压cab包。在下面的例子中,我们将通过CabWUZ软件把regedit.Mrln_ARM.CAB转换成OEM Package。Step 1:下载regedit.Mrln_ARM.CAB后用CabWUZ打开,左边从上到下有Files、Shortcuts和Registry:Files里面包括PHM Registry Editor软件的自带文件,我们等会儿要将这些文件全部导出;Shortcuts是快捷方式,不必管它;Registry里面是软件运行所需的注册表。Step 2:将左边的Files目录展开,可以看见里面共有9个文件。注意第三栏的Location,指的是该文件的存放位置。除了regedit.exe的存放位置为%InstallDir%外,其余8个文件的存放位置都是%Windows%。Step 3:点击工具栏上面的Extract按钮,将Files目录下所有文件导出到“桌面/PHM Registry Editor/”目录下。Step 4:打开PHM Registry Editor目录,里面有2个文件夹,分别为“INSTAL

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号