ROM定制教程:手把手教你做ROM

授人以渔吧,大家好才是真的好!


很 早就说出个教程了,想了好长时间不知道该怎么出,关于ROM定制,要了解的东西确实比较多,想出个完善的教程不是件容易的事,一来发此类教程贴的工作量非 常之大;二来本人水平有限,不知尽我所能能否将这些皮毛知识教给大家;三来,涉及的内容非常多,有点不知从何说起的感觉;这也许是很多ROM大虾不愿出教 程的原因吧,鉴于论坛有机油要求,为了大家的福利,本人在此班门弄斧,希望对大家能有所帮助,错漏之处希望大家能给予批评指正,谢谢!

先发布吧,后面的我再慢慢写,家里网速太狗屎了,最近公司也经常开会,只能这样一点点的挤牙膏了,抱歉!

教程大体分为以下几部分:

1。ROM基础知识......................................(1楼)
2。ROM制作工具介绍...............................(2楼)
点此直达
3。ROM定制.............................................(3楼)
点此直达
4。
ROM定制FAQ ......................................(4楼) 点此直达
5。 DIY及OEM包制作 .................................(5楼) 点此直达
6。 模板的制作 ............................................(6楼) 点此直达
7。
移植 ......................................................(7楼) 点此直达


第一部分:ROM基础知识.........................................已熟悉的机油直接飘去2楼!
    A。名词解释
     1. ROM,RAM,Flash
Memory
ROM(Read Only Memory)的全名为只读记忆体 ,是PPC上的硬盘部分 用来 存储和保存数据。ROM数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM也能够保留数据。但是资料一但写入后只能用特殊方法或根本无法更改,因此ROM常在嵌入式系统中担任存放作业系统的用途

RAM(Random Access Memory)的全名为随机存储记忆体 ,是PPC上的移动存储部分,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)
         
Flash Memory 由于ROM不易更改的特性让更新资料变得相当麻烦,因此就有了Flash Memory的发展 ,Flash Memory具有ROM不需电力维持资料的好处,又可以在需要的时候任意更改资料,我们常见的FLASH Memory有TF卡( 全名:TransFLash卡 ),SD卡(全名: Secure Digital Memory Card ),CF卡(全名: Compact Flash卡
)等。

     2. XIP,IPL,SPL,RADIO
XIP(Execute In Place)中文意:立即执行 XIP 所起到的作用是让操作系统内核直接在Flash中运行,不需要拷贝到RAM,即指操作系统或应用程序直接从非易失性存储器中执行,这样减少了内核从闪速存 储器拷贝到RAM的时间,其采用的非压缩映像也减少了内核自解压的时间,换句话说,XIP直接决定了PPC系统运行和加载程序的时间,也就是直接决定了 PPC系统的运行速度。

IPL(全称:InitialProgramLoader)中文意:首次装载系统, 其负责主板,电源、硬件初始化程序,并把SPL装入RAM,如果IPL损坏,由于不能加载SPL,所以机器将不能装载任何由SPL完成装载的OS系统。

SPL(全称:SecondProgramLoader)中文意:第二次装系统, 就是负责装载OS操作系统到RAM中,SPL损坏了我们可以烧录机这样的设备来重新写入,或者还可以通过刷入初始的ROM版本来实现重写SPL,我们俗称“寻找原厂ROM救砖”

RADIO ,字面理解:无线电通讯,其负责着PPC作为手机功能的通讯功能方面,包括它的电话和上网 功能,事实上,RADIO硬件模块已经在手机出厂时已经内置,我们所刷入的不过是作为软件应用层面的东西,因为软件层面的东西决定了RADIO硬件模块接 收和传递信号的频段分配,所以硬件RADIO的称谓已经被弱化,我们把这种RADIO软件层面的东东一律称为RADIO。

     3. 刷ROM,刷RADIO,解锁,永久解锁
刷ROM ,意指将新的ROM刷入PPC,ROM部分包含:
IPL、SPL、OS、 EXTROM、 RADIO、STORAGE等,目前来说,我们刷入的ROM绝大多数只包含OS部分,OS部分包含两个东东:
XIP、 IMGFS,而这两个正是影响系统层面的主要因素,鉴于其他部分,因为涉及到核心层面的重新写入,可另行重写,所以我们在此进行了抛弃,为了省事,也降低了一次性刷入的风险。

刷RADIO ,简单的说就是刷入新的RADIO模块的应用软件,不同的地区不同的通讯服务网络,无线 通讯基站在接收和发送无线信号上的频段各有不同,那么处于这个地区和这个通讯服务网络之内的RADIO硬件模块,在频段调整上越接近于本地基站,手机的通 讯信号就会越好,信号接收和发送就会越完整越快速,信号搜索上也会越稳定,从而使我们的PPC信号强劲又省电,运营商新的RADIO是根据其基站的新的频 段来调整的,所以随着时间的推移,当基站有所升级其频段有所调整的时候,新RADIO的刷入就很有必要了。

解锁 ,随便解释一下吧,PPC机器在出厂的时候对机器内部核心的CID地址段进行了上锁,上锁的原理 是基于微软对于开放性的WM系统所提供的一种特权保护机制,该机制对应用程序能够访问的系统资源作了限制,而厂家正是利用这一点实现了对系统ROM的锁 定,锁定的目的一方面是为了个不同机型间的区别和独立性,更大的原因是保障厂家对WM系统推陈出新上的独立自主权,锁定被集中在机器CID地址段上,不同 CID的ROM相互之间不能进行交互性的替换,如果强行刷入CID不同的ROM,将无法通过CID校验,严重的会出现系统无法修复的现象,由此PPC玩机 的"江湖大侠"们便做起了文章,衍生出一种通过CID地址段欺骗的手段来对上锁的CID进行破解,破解过的CID刷入后,再刷入其他不同CID的ROM将 极大可能地通过校验(但不是100%都可行)从而将新的ROM写入机器.

永久解锁 ,江湖又称SuperCID ,此种新破解的CID和上面的相比具备更大的优势在于新ROM作刷入操作的时候,如若操作失败,原机系统将不会受到较大损伤,就算造成损伤也很容易被修复,所以我们常称此种解锁能使PPC“拥有不坏之身”。

     4. 重启,硬启,定屏,假死,死机
重启 , 人人都懂的问题,和PC重启的机制是一样的,ROM中的数据全部保存完好,但是RAM中的数据全部丢失,正因此,通过重启可以解决RAM中运行不正常的现 象,比如系统运行中的死机,比如程序模块找不到等问题,大部分的机器都会在一定时间内做重启操作,不是因为断电,而是由于机器运行一段时间之后会有相当一 部分的垃圾缓存在RAM中,这是由于我们频繁操作机器造成的,众所周知,RAM剩余得越少,机器运行可用的运行空间就越小,机器的速度也会越慢,耗电量也 会增大,那么重启机器在关机的一瞬间RAM里的所有数据全部丢失,包括系统垃圾,在重新开机之后,系统会重新加载应用程序,这时候RAM是一个相对干净的 空间。重启的方式大家都知道,连我地球人也知道了,通过电源键,通过系统应用程序,通过桶PP。

硬启 ,和重启一样都需要重新启动机器,所不同的是硬启将丢失所有ROM和RAM中的数据,而重启只丢 失RAM,硬启后系统会自动还原为初始状态,所有的设定要重新来做,所有的资料要重新拷贝进去,貌似PC上的一键还原机制;硬启的原理是利用机器自身进行 了格式化,所不同的是格式化之后机器ROM里的初始数据将被重新调出,这个初值数据一直都存在于ROM之中,你无法删除,纵使你作了替换修改等操作,貌似 已经修改了数据,其实不然,只是被系统暂时隐藏了,那么在实行硬启格式化ROM之后,重启机器初始数据会被调处进行加载。硬启操作一般大家不常用,除非系 统ROM里出现了无法修复的错误导致机器不能正常运行,那就只能通过硬启来修复系统,硬启的方式地球人都知道,按住挂断和接听两个硬按键桶PP,或者 1234清除内存。

定屏 ,顾名思义,就是屏幕定住不动不理会你的操作,PPC中的定屏现象主要指的是在开机三屏(或者两 屏)上,正常情况下开机之后随着系统的加载,开机屏幕会逐步跳过直到出现调整的界面,但是因为ROM制作中出现错误或者遗漏,导致新ROM刷入之后开机屏 幕跳不过去了,无论你等待多长时间,手机屏幕定格在那不动了,无法进入系统,导致刷机失败,之所以解释定屏是因为在后面的解决疑难杂症里会用到这个词。

假死 ,又称睡死,非真正的死机现象,假死现象指的是机器表面上运行正常,但是后台的部分应用程序不能被激发,比如在待机模式下电话呼入屏幕无显示无铃声,比如在操作某项程序的时候出现激发暂时性无反应或者反应延时过长。

死机 ,人人都知道,这个就不说了。

    5. 三色屏
三 色屏,因该模式下屏幕上呈现三种色彩而得名,三色屏模式最直接的作用是用于查看机器IPL值和SPL值,以识别手机是否成功解锁,间接作用是在模式下可以 进行刷机操作。所有的刷机操作必定要在三色屏模式下实现,不论你是直刷还是卡刷;手动进入三色屏的方法是按住相机键捅PP重启手机,至于其他关于三色屏的 内容留到后面再讲。

   
B。系统原理
   
微软的WM系统平台和其PC系统平台有着惊人的相似性,
IPL与SPL实质为WM的Bootloader里的两大组成部份, 前面说了,IPL 负责主板,电源、硬件初始化程序、并把SPL装入RAM的,SPL则是负责装载OS操作系统中 的,所以开机启动顺序是 IPL>SPL>OS,SPL还提供
检测手机硬件、寻找系统启动分区、启动操作系统为系统的基本维护提供操作界面以及检测SD卡等,像我们执行刷机操作的时候,也是SPL在发挥作用,比如连接电脑同步,进入三色等。

在SPL装载OS的时候,前面我们提到
OS分区又分为XIP、 IMGFS两部分,
系统启动时SPL加载OS分区的XIP到RAM执行, XIP就是WINCE XIP KERNEL,是CE核心部分,XIP是为eXecute In Place的缩写,在微软的CE定义中,这块区域存放的是以非压缩格式存放,不需加载,由Bootloader直接调用执行。 XIP部分大约3MB,包括nk.exe、device.exe等核心程序,就像 PC上的ntoskrnl.exe等。 IMGFS就像一个压缩的GHOST文件,包括了WM的所有系统文件。CE核心启动后就可以访问IMGFS文件系统上的OS需要的所有文件了,IMGFS是XPR或LZX压缩格式,系统访问上面的文件会自动解压到RAM。 因为普通PE文件调入RAM执行要进行地址重定位,为了提高效率,IMGFS中的文件可以是重定位好的模块形式,这些程序运行就不用再重定位了,直接调入RAM中保留的PagePool(缓冲池)执行。

刷 机就是重写OS分区了,用PDOCREAD可以把整个OS分区读成一个NB镜象文件,然后把镜象解开到DUMP文件夹,就是所有ROM的文件了。文件分2 种,一种是普通文件,另一种是XIP(ExecInPlace)模块,这是为了加快OS运行设计的,就是这些文件可以不调入RAM而直接在ROM执行,但 因为现在都是NAND ROM,所以XIP模块其实还是要调入RAM的PAGEPOOL执行。
但是由于XIP模块有很多地址信息,所以移植OS最难的就是这了。


第一部分 DONE!

第二部分:ROM制作工具介绍..............................已熟悉的机油直接飘去3楼!

       A。ROM工具简介

ROM 文件系统的架构基于WM平台,核心的系统层面的东西实质上我们是编译不了的,ROM制作其实上只是一种组件模块的重新排列组合的过程,先解包,然后添加删 除或者替换,再进行打包以及转换,完全是“拿来主义”的做法 ,除了微软能对系统核心层做改变之外,任何第三方目前尚无能力进行实质性的改动,其中包括部分PPC厂商对基于WM系统层面的UI再造。

正因此,ROM制作的难易程度和整体性能90%取决于ROM制作工具,一个好的制作工具不仅事半功倍,还能最大可能减少制作过程产生的错误和麻烦,当然, 对WM平台之下的PPC基本常识的掌握也是必不可少的;否则,只知其然而不知其所以然,在稍有低级错误出现的情况下,在ROM的制作上我们显得非常的脆 弱,这也是本人为何出教程出得像教课书一样的原因。熟手建议飘过文字阶段,文字阶段的“废话”完全是为了照顾新手而生,请别扔砖,谢谢。

PPC在发展,PPC的使用者也在进步,工具越人性化对使用者的操作要求就会越高,反之,工具越傻瓜对操作者的要求也就越低,江湖上于是出现了针对不同机 型不同组件以及不同操作步骤的傻瓜式工具,乃至我们经常提到的一键定制模板。在这里,我只想通过定制ROM组件的方式来介绍ROM定制工具,定制包实在太 多,我不可能去一一枚举。

      B。ROM结构及组件模块

上面我们说了定制ROM实质上是对ROM进行解包转换然后对其组件进行添加删除和替换然后再封包转换,那么ROM定制工具包当然就是为了解决这个过程而生了。

我们首先来看看一个完整的ROM在解包后的几个组成部分:
SPL
IPL
OS
Operating System
EXTROM
RADIO
STORAGE

上面的列表是对于一个完整ROM来说的,像这样的结构一般源于官方ROM,而实际上我们所需要进行刷新写入的部分只有操作系统OS部分,其他部分已经被隔离开了。

OS组件:
XIP
SYS
OEM软件包
核心组件及驱动

由上可以看出要做出新的OS需要准备XIP,SYS,OEM软件包,核心组件及驱动这几样材料,而这几样材料都可以是现成的,我们所要做的只是想法通过定制工具将他们打包到一起,做ROM其实就这么简单!

        C。ROM定制工具包的功能

大部分的ROM采用的是NBH或者NBF文件结构,因为只有这样才能在WM平台之下被识别并刷入,但是我们的操作平台却是PC,这就造成了两个平台之间核心层面的矛盾,ROM定制工具就是解决这种矛盾而生的。

ROM工具包要完成的使命有:
转换文件格式
解包文件为PC环境识别
衔接动态数据库
映射文件地址
嵌入功能模块
封包文件


上面的这些我们可以不用去管它到底是怎么意思以及怎么在现实,我们只需要了解下定制工具这个大概的功能就行了。


               
D。ROM定制包的应用

很多机油曾经也看过很多教程,但是在常试定制ROM上依然未取得较大的进展(当然使用傻瓜工具的除外),鉴于这种情况,我们不妨采取化整为零的方式来一步步地解决问题。要知道心急是吃不了热豆腐滴!

通过了解其中一种操作的方式来举一反三地对其他操作实现无师自通,比方说,你会解包,那么应该就会打包,你会增加应该也会删减,你会转换过来当然也该能转换过去,无非是点点鼠标,挪挪文件而已,如果你连PC上的基本操作都应付不了,那说这么多算我的错。

下面我们来看看应用的例子:

NBH和NB之间的转换,使用工具:nbhtool.exe
转换NBH为NB可以使我们一目了然地看清楚.NBH的ROM文件中到底包含了哪几部分,这种转换对整个NBH文件是一种模块的拆分,如图



我们双击打开
nbhtool.exe后点一下“NBH转换为NB”,然后点一下中间的“解压NBH文件”



弹出文件夹,我们选择要解包的NBH文件的正确路径



找到后点中RUU_Signed.nbh文件,弹出对话框,需要我们选中解包后的文件存放路径
,找好后点“确定”



我们可以看见界面下方有文件在快速滚动,最后弹出“完成”的提示窗,说明文件解包成功!



然后我们进入已经解包的文件夹看看,发现只有一个NB文件,名为Windows.nb,从文件大小上看这就是我们的OS.nb,说明这个ROM里只包含OS部分。




同理,我们要把NB文件转换为NBH文件,可以如下操作:

打开
nbhtool.exe,选中“NB转换NBH”见图


看看上图,怎么一下多了这么多选择框?
那是因为以NBH为扩展名的ROM文件转换为NB文件是解包,而由NB文件转换为NBH文件实际上是打包,既然是打包,当然可以把很多项打包到一起啊。大 家可以看到,上面的选择框里有IPL,SPL,First Splash(开机第一屏) ,Second Splash(开机第二屏),OS,Radio等,这些文件如果要打包到ROM里,必须要全部是NB文件,并且必须要和上面的选择框一一对应,不然就会出 大问题。

比如我们要选择把RADIO打包进ROM,必须要在Radio那个框里选择Radio.nb(文件名不一定非要叫Radio,但是扩展名一定是.nb)文 件在PC里的正确路径载入,如果我们在别的框比如说在IPL选择框里选择载入的文件为Radio.nb文件的话,那就会出大问题,至于问题会有多大,我可 以至少保证你刷完机死活都进不了系统。

一般情况下,我们并不推荐打包除OS之外的东西,毕竟包打得越大,危险性就越高,找对了NB文件的路径之后,我们就可以点击“生成NBH文件”了,这个时 候照样会弹出对话框,需要我们选择所生成的NBH文件的存放路径,路径找好后点“确定”,就可以看见界面下方的文件在快速滚屏,直到提示“成功”那我们的 NBH文件也就是ROM就生成了,余下的就是用刷机包把它刷入我们的PPC。

这种转换最大的好处是将所有的组件进行模块化打包到ROM里的,既然是模块化那么这些NB组件是可以自行替换增减的,那我们在定制的时候就可以自由地更换这些“零部件”了。

上面我们知道了NBH和NB之间的转换,但是貌似还是不能解决实际问题,ROM文件NBH是由OS转换的,但是OS如何转换为XIP,SYS,以及OEM 和相关核心组件及驱动呢,如果解决了这个问题,那我们只需要找齐XIP,SYS,OEM及其它一些材料便能做出一道“好菜”了。

别急,先抽根烟,让我慢慢道来,因为下面的这段是比较关键的!

OS.nb要转换为我们最常见的材料一样需要再解包,我们称这种解包为DUMP(中文意:堆放,仓储),意思是将OS.nb里的文件一个个地拿出来进行重新转存,同样的,要解开OS,我们需要OSDUMP工具。

DUMP  OS.nb文件  使用工具:ROMCMD
ROMCMD是一款ROM制作的小工具,可以对ROM进行简单的解包,重组,和封包的操作,那在这里我们只利用它的DUMPOS功能。

我们打开解压后的
ROMCMD文件夹,可以看到OSDUMP.bat这个自动批处理文件


然后我们将刚才转换来的windows.nb文件进行改名为OS.nb,对于大多数的批处理文件,对需要进行操作的文件名已经确定好了,所以如果不改名那这个OSDUMP.bat批处理文件是不认账的,因为它只默认处理文件名为OS.bat的文件。

接下来我们把改名后的OS.nb文件用鼠标拖动到这个OSDUNP.bat文件上面,电脑上就会弹出一个CMD的对话框了,紧接着我们会看到对话框里有文件在快速地滚屏,这表示OS.nb文件正在被解包,这个过程需要3到10分钟的时间,没关系,去喝杯茶或者点根烟。


时间不用太长我们便会看到CMD框最后自动消失了,那代表OSDUMP已经完成了对OS.nb文件的解包了,下面我们打开原来存放OS.nb文件的文件夹察看一下,我们发现文件夹里除原来的OS.nb之外又多出了几个文件:


从上图中我们可以看到多出的3个文件和一个dump文件夹,这4个就是由OS.nb解包而来的,其中有2个以.reg为扩展名的注册表文件,1个是
.txt文本文件,还有1个是dump文件夹。

这里还是解释一下,2个reg文件是原OS的注册表文件,user.reg是对应手机注册表里的User这一大项的,用于存放用户自定义的注册表项,而 default.reg则是对应手机中的ROOT这一大项的,用于存放系统核心文件的注册表项,1个dump_MemoryMap.txt文件是用来记录 原OS文件的地址段的,最后的Dump文件夹是我们OS里的所有文件,当然这其中是不包括XIP的。

从上面我们可以了解到,OS文件的原理不仅仅是将文件压缩到一起,它还把所有文件进行有机的排列组合,使各个文件之间互相衔接,以方便我们刷入机器以后能 自由的调用,就像小孩在幼儿园一样,不仅仅是将小朋友(所有文件)放进去就行了,还要为他们编排座位和床位(地址段),还要记录他们的名字他们的性格以及 特长等(注册表),然后才能更好地对他们进行管理。

好了,言归正传,我们通过DUMP OS文件得到了这么些东西,但是如果在这个基础上对OS进行修改却不是个容易事情,如果要删除或者更改哪几个文件,那就不仅仅只能挪动文件就行,还得改动 他们的注册表,重组地址段,这个工程有点艰难,因为改动一旦出错那刷入机器之后就会出问题了,所以,我们的工作还得继续

再继续处理这些文件之前,我们差点忘记了还有一个重要的事没做,那就是提取XIP.

下载能我们需要用到提取XIP的工具RomMaster,我们需要把OS.nb放进该文件夹:


把OS.nb拖动到BuildXIP.bin.bat上,当然你也可以运行命令
“RomMaster -w 5 OS.NB  -x -o xip.bin”, 程序执行后我们就会得到xip.bin


下面,我们需要把得到的xip.bin文件转换为文件的形式,我们使用DUMP命令,把xip.bin拖动到dumprom.bat上滚屏后就得到XIP文件


XIP部分已经出来了,接上面的工程,我们需要分解出SYS和OEM部分,上面的步骤我们已经DUMP出了OS.nb文件并得到了dump文件夹,这里面包含了SYS和OEM部分,余下的工作我们需要把它拆分为SYS和OEM。


在这里我们需要使用package_tool工具,打开
package_tool文件夹


我们双击上图中最后的一个应用程序PKGTool.exe就会打开如下程序界面


然后我们再点“File—Open”,寻找先前的dump文件夹的路径,找到dump文件夹,再点“确定”,我们可以看到软件界面上有文件在执行,点完“确定”后,我们再点“Tools—Build Packages


等处理完成之后,我们进入dump文件夹看看



至此,一个完整的ROM被分解完成。
这里需要说明一下,并不是每个ROM组成部分都是相同的,分解后得到的组件也并非都是齐全的,所以过程中可能会出现无法分解或组合的问题,根据每个ROM及每个工具的不同而异,此部分主要解释的是ROM编辑工具的用法,并非步骤性的东西。

至于ROM的打包和制作过程,下部分具体一起讲吧

以上用到的相关工具见: http://www.52dopod.net/viewthrea ... =ROM%2B%B9%A4%BE%DF
顺便对工具的搜集和提供者
xfr2002兄弟表示感谢!!!


第二部分DONE!

第三部分:ROM定制
本来说稍写得详细点,把每个定制步骤拆开来写,以方便其他机型的暂时无定制包可 用的朋友,后来想想算了,本来就是写给初学者看的,谈到深一点的东西,熟手老手都可以做我的老师,时间关系,方便机油能尽快看到这个所谓的教程,所以直接 把一键定制拿出来给大家理一理,请见谅,呵呵!

 A。准备工作
PC端需要安装两个支持平台软件,一个是VC(Microsoft Visual C++),一个是.NET(一般机器都已自带),PC端的XP,2000,98,VISTA都支持,其他平台未知。
第四部分: ROM定制FAQ

ROM定制过程中会出现各种各样的问题,不胜枚举,在此本人只结合自己曾经遇到过的问题,以及根据自身浅薄的经验给出的分析和解决方法,希望给大家能带来点启发.

  A。开始运行Buildos导致的报错

具体表现在下图


报错原因大致有以下几点:

1。缺少必要组件导致的报错
比如:缺少SYS文件夹,缺少OEM文件夹,缺少ROM文件夹等
最常见的情况下,很多人在替换SYS和XIP部分时,把原来的SYS删除后忘记了放入新的SYS或者新的SYS没有放到模板的根目录,导致Buildos找不到可用的SYS,于是出现报错,见下图中,没有SYS文件夹部分,于是buildos就出现报错了。
完整的应该是:
大家对比一下上面的2张图就可以看出来了。

2。新添加的OEM包错误或者不兼容导致的报错

我们在使用模板的时候,很多情况下我们都要集成自己喜欢的一些软件,但是模板里没有这些软件的OEM包,怎么办呢,最方便的方法是我们直接去网上找来,然 后放入OEM文件夹里,部分OEM包因为有机型的限制,所以定制的时候容易出现Builos报错,还有部分OEM可能本身存在错误,也导致Buildos 出现报错。

所以我们在添加OEM包的时候一定要注意:对于一次有很多OEM包要添加到模板的OEM文件夹的时 候,最好采取谨慎的操作,一个个地添加,添加完后运行下Buildos.bat批处理,看看是否出现报错,然后再添加下一个,这样做能很好的避免添加后报 错不知道错在哪个OEM包上,导致又要从头来一个个地排查,工作量很大。

对于报错的OEM包,推荐暂时弃用,或者另找别的版本的再试。

  B。运行Buildos过程中出现的报错

具体表现在Buildos在生成文件的过程中跳出报错导致Buildos定制不能进行下去。例如:


1。因存在重复文件导致的报错

ROM定制是不允许有两个完全同名的文件存在的,否则就会出现报错,如上图的提示,说明文件重复了。这是最常见的报错。
在buildos选择组件的时候,很多只能是“只选其一”的,比如拨号面板,同名的软件等,如果把只选其一的选了两个或以上,就会出现报错。不同版本的同名软件或者同功能软件选了两个,就出现报错,比如两个QCellCore都选了,就出现报错。

报错了,我们可用回头检查,重新检查buildos里是否选择了相同的软件或组件,如果有,请只留一个,其他的把前面的勾取消掉。
部分同名文件存在于其他的文件中,而并不是由同名软件造成的,记住重复的文件名,我们就可以去提示的文件夹中将其删除掉,见下图:
红框中是该重复文件存在的路径

2。生成注册表过程中导致的报错

同名文件的报错不存在了,buildos就会开始生成注册表了,见下图:

生成注册表过程中报错的情况比较多,并且从图中是不容易让你看出错在哪的,那么我们可以进入temp文件夹的log.txt中来查询了:
看红框

看红框中的报错信息,蓝框中是报错所对应的RGU

如果你对整个OEM的RGU有GUID码的备份,那我们一眼就可以看出这个RGU存在于哪个文件夹中,去对应的文件夹中找这个注册表项,可能注册表指定的文件路径中不是以双杠"\\"来表示的,也可能是RGU尾部缺少空行,仔细检查后再重新运行一次Buildos即可。

  C。因定制过程出现问题导致ROM刷入机器后产生的错误

这是大部分玩ROM定制的机油最容易出现的问题,也是最难排解的问题,定制过程都能顺利通过,但是定制出的ROM刷入机器后出现各种各样不正常的情况,导致机器不能正常使用,大体可分为以下几种情况:

1。开机卡屏
ROM刷入后手机重启进不了系统设置界面,直接被卡在第一二三屏的界面不能通过,这就是我们常说的定屏现象.
卡屏现象分为两种:

a.卡在第一屏
上面我们已经学习了系统加载的顺序为
IPL>SPL>OS,IPL是负责加载系统的底层应用程序,IPL加载过后,SPL将首先加载在系统中缓存的信息,比如拨号面板,字体包,输入法,图片等,而这两项加载过程如果出现不匹配或错误,将直接导致机器进入系统卡在第一屏.

IPL,主要负责加载系统底层的驱动和硬件的应用程序,驱动不是通用的,绝大部分都会有机型的限制,如果应用程序的驱动不匹配,或者不能被正常调 用,IPL就不能实现正常的加载,开机就会直接进入三色屏或者直接卡在第一屏.所以,一定要注意的是系统驱动程序以及与其匹配的源文件,包括MUI文 件,DLL文件等.

SPL在加载的顺序上是首先加载和底层驱动配套的应用程序以及需要缓存在系统中的信息文件,如果这些信息文件存在错误,比如字体包,输入法,在缓存过程中 出错,就会直接导致卡在第一屏,至于错误出在哪,可能与系统底层的驱动不匹配,可能文件格式不正确,也可能是自带的DLL源文件不能识别,比如很多安装过 手写输入法的机油就出现过装完重启被卡在第一屏的情况,总之,错误的原因是多方面的,建议大家使用已经测试过的OEM包,并非最新版本的OEM包就是最好 的,大家要注意这个问题.

另外,需要说明一下的是,对于自行移植XIP和SYS的朋友,如果XIP移植不完整或者SYS移植过程中有部分文件未替换,一样会导致卡在第一屏,具体情 况留到后面的移植部分中再详细说,所以卡第一屏的情况是比较复杂的,原因只能这么简略地谈谈,具体还在于大家在自己动手动脑地测试和排除才能找到实际原因 所在。

b.卡在第二(三)屏

同理,卡在第二屏的情况指的是第二屏动画结束就定屏了,如同死机一般。这种情况一般是由于系统调用部分DLL出现错误导致的。SYS移植后注册表项可能和 系统驱动里底层的DLL源文件名的定义或者路径的定义不一致,导致不能正常调用DLL,这种情况下需要手动更改DLL的路径指向或者更改DLL在注册表里 所定义的文件名,让注册表能正常调用DLL,另外动画图片的尺寸不正确也可能导致卡在第二屏,所以推荐大家在自行移植的时候注意这个问题,特别是注意底层 驱动对应的DLL文件名及路径。

卡在第三屏也是同理,在这里有两种情况,一是进入第三屏直接卡住,一种是跳出调整界面的文字提醒的时候卡住,屏幕触摸无反应,前面一种情况可能和 Touch.dll这个文件有关,部分注册表的定义可能会被定义为Hwtouch.dll,文件名不能和注册表对应导致无法正常调用,后一种情况可能和触 摸的Touch.dll有关,也可能和输入法的注册表定义正确与否有关,总之原因比较多,。一切在于靠自己的经验摸索着去解决。

2。程序或软件不能正常调用
表现在很多方面,这里只举几个例子来说明

a.该程序找不到相应的组件,或者其证书验证不能通过,或提示为一个非本设备可使用的组件
这种情况一般为相应的exe程序没有被定制进去,或者缺少相应的DLL组件导致程序不能正常打开或运行。这个大家可以去Windows下找找,看有无源程 序或相应的模块存在,如果没有则是未定制进去,如果存在源程序,就可以尝试点击它打开,如果依然打不开则说明该软件OEM包可能并不支持该机型,使用在该 设备上不能生效。

b.设备的“程序”或“设置”列表里未出现相关的快捷图标
在排除804MUI文件出错的情况下,“程序”里未出现快捷方式和定制ROM时对该软件的快捷方式的定义有关,在该软件的所指定的快捷方式不正确或者路径 出错导致的,我们可以找到该软件OEM包里的initflashfiles.txt,打开它查看一下所定义的快捷方式是否指向了“程序”文件夹;而“设置 ”项里缺少快捷方式则直接与注册表项的定义有关,我们可以打开HKEY_LOCAL_Machine\ControlPanel\下,
看看所定义的软件名称与 HKEY_LOCAL_Machine\ControlPanel\MyCpl下的软件名称是否一致,然后再查看下是否设置了隐藏,该软件的Group项的键值是否在0到2的范围内以及是否设置了Hide为1的双字节值。

3。程序界面出现显示错误
一般出现在拨号面板,输入法,以及字体上面,部分软件界面会出现界面大小及界面字体不正常的现象。
拨号面板最容易出现的是显示错误,面板定制进去变成白板或者直接就打不开,这个原因也比较多,我们可以采取排除法来找原因

首先,我们一定要注意这个拨号面板是针对VGA还是QVGA的,因为显示屏的分辨率不同会导致面板成为白板或出现其他显示不正常的情况;在此,还是对VGA和
QVGA进行下简单解释吧:

VGA
(Video Graphics Array)全名 视频图像阵列 ,是IBM在1987年 提出的一个使用模拟信号的电脑显示标准,这个标准对于现今的个人电脑市场已经十分过时了。即便如此,VGA仍然是大多制造商所共同支持的一个低标准,个人电脑在加载自己的独特驱动程式之前,都必须支援VGA的标准, VGA 在指定色版颜色时,一个颜色频道有6个bit,红、绿、蓝各有64种不同的变化,因此总共有 262,144 种颜色。在这其中的任何 256 种颜色可以被选为色版颜色,通常情况下,VGA的分辨率点阵为640×480,但是由于采用了Windows Mobile系统的缘故,致使VGA的显示被限制在65000色(16位色)之内。

QVGA
( Q uarter VGA)
意指四分之一的VGA视频图像阵列 ,VGA的阵列为 640×480,除以4后得到的阵列模式为 320×240,QVGA的点阵数较VGA减少到了四分之一,换句话说,在同样尺寸的液晶屏上进行视频图像显示输自然就比不上VGA细腻、清晰和逼真了, 但 是,不管运用哪种显示分辨率都有其好处所在,VGA分辨率高,但是因为其点阵队列较密集些,所以在显示图像上需要加载的时间也会较QVGA长很多,对 CPU的处理频率也要求更高,在没有配备独立显卡的情况下,同样主频的CPU在同样尺寸的VGA和QVGA屏上处理图像显示的时候,QVGA屏在收到指令 后显示图像的速度较VGA屏快得多,这就是为什么HTC在使用德州仪器201主频的CPU上只使用QVGA屏的原因,如果使用VGA的话,打开图片或者图 像文件的过程将会成为漫长的等待;而使用VGA屏的话,要想图像和图片显示速度提高,只能通过提高CPU的主频,或者配备独立的硬件显卡,否则,就会如同 “小牛拉大车”,所以,要华丽和眩目是需要硬件配备付出代价的,而这些代价的付出将直接连带着其他配件性能的相应提高,比如更强的电源管理能力和更大容量 的电池续航能力。

总而言之,使用Q屏最大的好处就是在较低的硬件配备上可以获得同样快速的操作体验,缺点就是屏幕色彩不够华丽和丰富。

解释完这个之后,我们应该明白了一个道理,如果把V屏使用的拨号面板应用到Q屏之上,就会出现显示不正常,因为它们的分辨率是完全不同的,所以大家一定要看清楚拨号面到底是Q屏之下的还是V屏之下的。

拨号面板 出现不能正常显示的另外一个重要原因还和其搭配的DLL有关,众所周知,拨号面板的“拨号” 功能是通过调用DLL来实现的,如果DLL缺失或者DLL指向错误,拨号面板一样不能正常显示,因为缺乏必要的DLL的显示支持,所以我们可以经常看到部 分拨号面是需要连带集成相应的智能拨号插件才能正常显示的,所以大家在集成拨号面板的时候也要注意这个问题。

下面说说字体包
字体包 是系统调用的显示字体,有人喜欢宋体,有人喜欢雅黑,也有人使用别的字体,这里说一下,Q屏之下宋体是最清晰的字体 , 因为它和屏幕的显示模式是相同的,同样使用了矢量点阵的模式在显示,所以宋体是不需要开启任何辅助就能直接显示的。而别的字体比如雅黑,这是微软根据其英 文字母在PC环境之下的显示而创建的,对于汉字来说,显示很模糊,纵然开启了所谓的效果渲染ClearType,一样得不到改善,因为这种渲染同样是基于 英文字母的,很遗憾,微软没有为Windows Mobile系统研发专门的汉字效果渲染技术。

闲话到此,我们来看看字体会出现哪些常见问题

a 。汉字字体显示为“口口”等方框模式

这种情况应该是大家经常碰到的情况;大家知道,系统要调用一种字体是有几个前提条件的:
a.系统里存在该字体文件,一般在 Windows\ 下,也可能可以放在 Windows\Font\下
b.该字体文件的路径是正确的,就是说系统能根据你指定的路径找到它,在你指定的路径之下找不到当然就无法调用了
c.字体文件名是正确的,比如“msyh.ttf",不然找到了该路径找不到这个文件名一样调用不了
d.字体文件的字体名称是正确的,比如"微软雅黑"
e.字体的映射是正确的,下面我们来看看映射:
以“微软雅黑”为例,字体映射就是把系统原来的汉字显示部分的字体或者全部字体改变为“微软雅黑”,比如你安装的软件原本是宋体的,比如系统里的字母通常 为Tahoma字体,你需要把这些字体全部改为调用“微软雅黑”来显示,如果你不定义原来软件里宋体为调用“微软雅黑”,那么系统就会寻找宋体来显示,但 此时你没有集成宋体,那该软件里的字体就会变成“口口”了。

字体映射一般是字体显示为“口口”的最大病因,在集成字体之前,请打开你的字体OEM包里的RGU注册表,请注意这项下面的内容:
[HKEY_LOCAL_MACHINE\Software\Microsoft\FontLink\SystemLink]
在这项之下我们会看到有很多字体,比如"细明体"、 "新宋体"、"Times New Roman"等,这些就是系统里可能出现的字体名,需要把这些字体全部换成调用你现在的新字体比如“微软雅黑”,在指定路径的时候请一定记得路径在RGU 里是以双斜杠“\\”来表示的,集成到手机注册表里才会变成单斜杠“\“,我们可以这样来表示:  "Times New Roman"="\\Windows\\msyh.ttf,微软雅黑",意思是说,如果系统要调用
"Times New Roman"这个字体的时候,它就会指向在 \Windows\这个路径之下的字体名为“微软雅黑”的“msyh.ttf”的这个字体文件来调用,如果你不这样指定,那么系统在调用 "Times New Roman"这个字体的时候 会自动寻找这个字体的文件来调用,如果找不到, 这部分的字体就会出现“口口”。
在通常的情况下,软件OEM包里的字体会默认为 “Tahoma",Tahoma是系统里默认用来显示英文字母的字体,如果显示在汉字上,就会出现大小不一甚至显示模糊线条发虚的情况,我们可以看到很多字体是被指定默认为调用“Tahoam”的,比如 :
"细明体"="\\windows\\tahoma.ttf,Tahoma"
"新细明体"="\\windows\\tahoma.ttf,Tahoma"
"新宋体"="\\windows\\tahoma.ttf,Tahoma"
那么在这种情况下,我们只需要重新定义一下"Tahoma"这个字体就OK了,比如: "Tahoma"="\\Windows\\msyh.ttf,微软雅黑",那么在系统默认指定调用
"细明体"、 "新细明体"、 "新宋体"这些字体的时候,它会指向“Tahoma”这个字体,而

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值