|
| | 用WM两年了还没刷过几次机,因为我一向认为系统的应用在于软件而不是操作系统,而且刷机也有风险万一失败成了砖头就不划算了。上个星期到论坛ROM版转转,830的WM6那个多啊,实在忍不住诱惑了,刷了个WM6,不过却不是很满意,里面集成了那么多垃圾软件想删又删不掉。于是就开始研究ROM定制了,经过几天的实验,刷了十次以下机,电话短信漏了N多,总算做了个自己满意的基本纯净的WM6Pro。讲讲我得出的原理好了。
WM的RAM一般是64MB,系统中显示的少,是除去了PAGEPOOL(高速缓存默认6MB)、RADIO、DMA、屏幕缓冲区等系统核心的部分。WM不支持虚拟内存PAGEFILE。ROM 128MB位于DiskOnChip芯片,顾名思义就是把存储芯片模拟成了磁盘,用的FAT文件系统,所以就有分区,一般用的是OS分区(就是刷机要刷的分区)和extended_rom分区(放恢复出厂设置后自动安装的OEM安装包)。还有IPL(BIOS)、SPL(加载OS,显示第2屏开机画面,如果刷机刷坏了就停这了,这时还可以利用三色屏或SD卡重新刷官方ROM,所以只要IPL、SPL不坏就不怕,而一般刷机是不刷这2部分的)、RADIO模块。剩下的就是用户可以使用的存储区(大概40多MB,FLASH ROM和U盘一样是可读写的,只是没电不丢数据)。ROM分NAND和NOR两种,现在一般用的NAND,就是制作存储卡和U盘的那种,不能直接运行代码,要调入RAM才能运行。NOR是可以直接运行代码的。
所以刷机就是重写OS分区了,用PDOCREAD可以把整个OS分区读成一个NB镜象文件,然后把镜象解开到DUMP文件夹,就是所有ROM的文件了。文件分2种,一种是普通文件,另一种是XIP(ExecInPlace)模块,这是为了加快OS运行设计的,就是这些文件可以不调入RAM而直接在ROM执行,但因为现在都是NAND ROM,所以XIP模块其实还是要调入RAM的PAGEPOOL执行。但是由于XIP模块有很多地址信息,所以移植OS最难的就是这了。因为WM6内部版本是WM5.2所以文件结构和WM5是一样的。对DUMP进行自己需要的修改后再打包会NB镜像文件然后用PDOCWRITE通过ACTIVESYNC连接整个写入ROM的OS分区就刷机完成了。DUMP里有default.hv(包括HKCR和HKLM)和user.hv(包括HKCU)是初始注册表文件,可以转换成REG来编辑再转回去。
当然直接对DUMP目录进行操作太麻烦了,比如要去掉一个软件,你要删掉这个软件用到的所有文件和注册表项,要一个个找。所以就有了BUILDOS工具,他把每个软件分成一个文件夹,里面有软件的所