MAXPDA论坛 » Windows Mobile刷机与ROM区 » 解开Windowsmobile之迷(所有刷机前的必修课)

2007-12-8 17:53 hihai821
解开Windowsmobile之迷(所有刷机前的必修课)

[font=宋体][size=4][color=blue]1、基本概念[/color][/size][/font]
[size=4][color=blue][font=宋体][b]什么是BootLoader[/b][/font][/color][/size]
[size=4][color=blue][font=宋体]   BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置成一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式系统。因此,在嵌入式系统里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户进行特定的BootLoader设计与实现。
  嵌入式系统中,Bootloader的意义与作用与PC上的BIOS有点类似,它对开发板上的主要部件如CPU、SDRAM、FLASH、串口等进行了初始化,可以使用Bootloader下载文件到开发板,可以浏览目录,可以烧录flash,可以启动系统等,实际上,一个功能比较强大的Bootloader已经相当于一个微型的操作系统了。
初始化基础硬件——CPU速度、存储器定时、中断、检测ram大小。
引导装载程序通常是在任何硬件上执行的第一段代码。台式机这样的常规系统中,通常将引导装载程序装入主引导记录(Master Boot Record,MBR)中,在嵌入式设备中,通常将引导程序放置在不易丢失的存储器的开始地址或者是系统冷启动时PC寄存器的初始值。通常,在台式机或其他系统上,BIOS将控制移交给引导装载程序。而在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。引导程序完成自己的任务后,也将控制权移交给操作系统。
总体上Bootloader需要完成以下工作。
n
初始化CPU速度;
n
初始化内存,包括启用内存库,初始化内存配置寄存器等;
n
初始化中断控制器,在系统启动时,关闭中断,关闭看门狗;
n
初始化串行端口(如果在目标上有的话);
n
启用指令/数据高速缓存;
n
设置堆栈指针;
n
设置参数区域并构造参数结构和标记(这是重要的一步,因为内核在标识根设备、页面大小、内存大小以及更多内容时要使用引导参数);
n
执行POST(加电自检)来标识存在的设备并报告有何问题;
n
为电源管理提供挂起/恢复支持;
n
传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像文件事先存放在Flash中,这样就不需要BootLoader和主机传输操作系统内核镜像文件,这通常是在做成产品的情况下使用。而一般在开发过程中,为了调试内核的方便,不将操作系统内核镜像文件固化在Flash中,这就需要主机和目标机进行文件传输;
n
跳转到内核的开始,在此又分为ROM启动和RAM启动。所谓ROM启动就是用XIP技术直接在Flash中执行操作系统镜像文件;所谓RAM启动就是指把内核镜像从Flash复制到RAM中,然后再将PC指针跳转到RAM中的操作系统启动地址。
嵌入式系统的资源有限,程序通常都是固化在ROM中运行。ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作是用汇编语言编写的启动程序完成。
  启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行,它应包含各模块中可能出现的所有段类,并合理安排它们的次序。
什么是IPL/SPL[/font][/color][/size]
[size=4][color=blue][font=宋体]

  IPL与SPL实质为Windowsmobile的Bootloader里的两大部份,WM启动的程序是IPL>>SPL>>OS
  ①.IPL英文全称是InitialProgramLoader,负责主板,电源、硬件初始化程序、并把SPL装入RAM。IPL损坏了可把手机扔进河里,或者通过换字库来解决.
  ②.SPL英文全称是SecondProgramLoader,“第二次装系统”,就是负责装载OS操作系统到RAM中。另外SPL还包括许多系统命令,如mtty中使用的命令等。SPL损坏了还可以用烧录器重写。
SPL一般提供这几部分功能:检测手机硬件、寻找系统启动分区、启动操作系统为系统的基本维护提供操作界面,可以通过数据线与操作终端(如PC)建立连接,并接受和执行相应命令。它里面包含许多命令,像r2sd,l,doctest(危险命令,他会擦除gsmdata)等。我们常说的三色屏就是由SPL驱动的。检测SD卡,当你把一些特殊制作的SD卡插入后,SPL可以在启动时校验并根据SD卡内容刷机或执行一些命令。这有点类似于PC的从软驱启动。

[b]什么是CID[/b]

  CID是CustomerIDentity的简称,简单来说就是手机的平台版本。
  刷机过程中SPL需要根据CID效验ROM是否可用,并决定是否刷入,一般情况下要求一定要对应CID的ROM才可以用,cid不同的rom是刷不上去的。对于普通的CID来说,一般有两个限制:1)不能刷入低版本的的ROM,2)不能刷入不同平台的ROM,比如:在台版机上刷欧版ROM、跨型号刷ROM等。SUPERCID有些型号手机的CID的限制是可以通过软件来的,已知的有577W、586W等,但也有也些型号目前还没有有效的方法CID,如838G4。
  限制之后的cid称为SUPERCID,拥有SUPERCID的机器可以刷任意版本和平台的ROM。具体来说,同一个手机既可以刷台湾的ROM,也可以刷日本的rom,也可以刷香港的rom等。甚至也可以刷进一个其他型号手机的ROM(如586W刷577W)。但是这也带来很大的危险性,因为没有了限制,没有了校验,刷入一个错误的ROM也是很容易的事。我们一般刷机时需要为SUPERCID,因为一方面现在大部分情况下刷机所用的ROM都是通不过CID校验的;另一方面万一刷机失败,对于SuperCID的手机更容易修复。解锁微软在WindowsMobile里面引入了特权保护机制,对应用程序能够访问的系统资源作了限制,主要是为了防止一些恶意程序,因为如果没有这些限制应用程序可以随意调用特权API,篡改你的SIM卡信息,给你的联系人群发短信,窃取你的联系人信息,或是删除重要的系统文件。另外我们在手机上运行一些第三方应用程序时会出现一个提示,问你是否允许运行,这个也是特权保护机制的作用微软把系统资源分成了两种权限,特权级和非特权级(Privileged/Unprivileged),一般我们运行的应用程序都是出于非特权级别的,具有有效数字签名的应用程序可以获得特权级别的访问。网上有一个具有特权的注册表编辑器就是有签名的,所以可以进行特权级别的操作。
  解锁一般就是指关闭这个特权保护机制。解锁步骤(首次解锁时不能使用具有特权的注册表程序,之后就可以):
  1、将手机与电脑同步,运行相应版本的SDA_ApplicationUnlock程序,然后重启手机。这样就完成了解锁操作。
  2、这个解锁动作实际上是对注册表的修改,WM2003和WM5.0的修改位置如下:  2003解锁:HKEY_LOCAL_MACHINESecurityPoliciesPolicies0000101b=1(dword)

2005解锁:HKEY_LOCAL_MACHINESecurityPoliciesPolicies00001001=1HKEY_LOCAL_MACHINESecurityPoliciesPolicies00001005=40
以上键值如果没有,可以新建。
重新加锁:
  1、运行具有特权的注册表程序(手机上运行的),将上述键值改为0就加锁了,然后重启手机。
  2、在重新加锁之后,如果使用普通的注册表编辑器,那么有些选项是不能编辑的,但仍然可以使用具有特权的编辑器来更改这些项的值,如屏蔽或恢复摄像头等。
  另外几个安全策略:位于:HKEY_LOCAL_MACHINESecurityPoliciesPolicies1、0000101a安装未签名Cab是否提示,0为允许提示,1为禁止提示2、00001006就是未信任的程序是否允许运行,如果设置为0,而且机器又没有解锁的话,那么除了系统程序和IA,没几个程序能在你手机上运行补充很多刷机教程要求解锁后刷机,但我一直没搞明白,这个好像和刷机无关阿,因为刷机只需要和SPL交互,OS根本就影响不到阿。而且,从功能上看,这个特权保护机制对手机安全确实是很有必要的。此点未解,求证中…. .
2、FAQ
2.1SPL版本问题
  我们刷机主要靠与SPL交互来完成的。SPL有不同的版本,不同版本的SPL在一些执行过程的细节上有不同,特别是对于系统的一些效验和限制有很多不同;但基本的功能没有很大变化(就像PC上的主引导记录/MBR,多年来一直变化很少)。早期5系机(非QVGA屏)刷机用的SPL版本一般是064和109版。一些刷机指导中所说的SPL降级就是指把新手机的SPl降级到的064或109版。064版的特点是于Patched_RUU.exe(即版的RUU)配合较好,可以直接跳过CID校验和一些其它校验。109版的特点是可以在使用SD卡刷机时,可以直接跳过CID校验,并有个iumode可以设置,iumode是一种特殊的模式,到目前为止还不太了解他的用途,似乎与跨平台刷windowsmobile5.0有关(已知危险,轻易勿用)。新的5系手机(主要指QVGA屏的,如577W)刷机一般不再修改SPL(即所谓降级SPL)了,而是通过修改SUPERCID或者其他方法来跳过限制的。在这些机型上如果试图修改SPL会导致QVGA无法驱动,从而白屏。
  2.2CID注意事项
  CID校验是刷机需要面对的第一个问题。一般有两种方式处理:为SuperCID,这是首选方法,但很多机型无法。使用的SPL配合的RUU。注意!!!如果没有处理好CID问题,有可能造成SPL和IPL被自动擦除(基本就算报废了),这种情况极少出现,但有相关报告。如果你的手机可以SuperCID,那么恭喜你,你只需要一次,以后你可以忘掉CID、IPL、SPL这几个概念了。
  2.3ROM组成
  一个完整的WM系统ROM包括以下7部分:
  IPL(bootloader的一部分)SPL(bootloader的一部分)   SplashscreenGSMradiocodeHTCLogoExtendedROMOS镜象注意:一般情况下备份手机ROM时IPL、SPL、Splash和Radio部分不会被备份,所以如果你刷坏了这几个部分,通过你原机备份ROM是无法修复的。这也意味着除非你的手机发行商(比如T-mobil)发布过官方ROM,否则你就没办法再刷成发行商的Rom。一般情况下网上发布的ROM不包括IPL和SPL,如果有包括一般作者会注明版本和适用型号,请务必小心核对。
  2.4第一次刷机已经解锁和刷superCID,再刷机是否还需要?
  目前已经确定SUPERCID只需要一次。解锁因为属于OS部分,刷机后原有的OS已经被新的ROM覆盖了,所以要看你刷的ROM,大部分ROM中的OS是已经解锁了的。
  2.5什么是DOC
  HTC采用的是M-system的DiskOnChip技术,简称DOC(译过来就是:芯片上的磁盘),Myos里就有许多直接操作DOC的命令,比如pdocwrite,pdocread等等。DOC内置的驱动程序把芯片模拟成FAT磁盘来管理(似乎是利用TrueFFS加上DOS来实现的),但其本质还是基于NANDFlash。[/font][/color][/size]

[font=宋体][size=4][color=#0000ff]转自[url=http://www.wmpol.com/]http://www.wmpol.com[/url][/color][/size][/font]

2007-12-9 06:46 SAILOR
再请教楼主一下,G3,G4如何察看呢?

2007-12-9 21:11 rottweiler
看不太明白

看不太明白

2007-12-10 14:11 hihai821
[quote]原帖由 [i]SAILOR[/i] 于 2007-12-9 06:46 发表 [url=http://bbs.maxpda.com/redirect.php?goto=findpost&pid=1057111&ptid=100351][img]http://bbs.maxpda.com/images/common/back.gif[/img][/url]
再请教楼主一下,G3,G4如何察看呢? [/quote]

G3 G4
G3、G4是指主板上的ROM的芯片类型(许多人是说锁的类型)。主板上的ROM芯片实际上是一种Flash芯片,HTC采用的是M-system的 Disk On Chip技术,简称DOC(译过来就是:芯片上的磁盘),Myos里就有许多直接操作DOC的命令,比如pdocwrite,pdocread等等。 DOC内置的驱动程序把芯片模拟成FAT磁盘来管理(似乎是利用TrueFFS加上DOS来实现的),但其本质还是基于NAND Flash。
M-system的芯片似乎分两种,就是所谓的G3和G4。

128M的G3与G4的区别
1。主要区别是NAND Flash结构不同:
     G3由两片64Mflash组成,具体为:
         2*64MBflash(每Flash有2048Block,每Block有64个Page,每Page为512Byte)
     G4由1片128MBflash组成,具体为:
         1*128MBflash(含512个Block,每Block有128个Page,每Page为2048Byte)
     
2。区分
    可从IPL/SPL来区分G3与G4
    G3:IPL/SPL形如 x.xx   x.xx.0000
    G4:IPL/SPL形如 x.xx.0001
注意:此法并非100%准确,但99.9%以上是对的。要100%准确,只有把主板打开看芯片。

[[i] 本帖最后由 hihai821 于 2008-6-24 01:04 编辑 [/i]]

2007-12-10 16:11 ahhow
对于G3,G4,我简单理解为,G3可以搞到SuperCID,可以解锁,G4就不能,有可能造成SPL和IPL被自动擦除(基本就算报废了),

2007-12-11 04:37 SAILOR
[quote]原帖由 [i]hihai821[/i] 于 2007-12-10 14:11 发表 [url=http://bbs.maxpda.com/redirect.php?goto=findpost&pid=1060274&ptid=100351][img]http://bbs.maxpda.com/images/common/back.gif[/img][/url]


G3,G4是什么意思?:lol [/quote]


我理解为机器的类型

比如索爱手机同一个型号,但是也分很多的不同版本

2007-12-11 04:38 SAILOR
[quote]原帖由 [i]ahhow[/i] 于 2007-12-10 16:11 发表 [url=http://bbs.maxpda.com/redirect.php?goto=findpost&pid=1060622&ptid=100351][img]http://bbs.maxpda.com/images/common/back.gif[/img][/url]
对于G3,G4,我简单理解为,G3可以搞到SuperCID,可以解锁,G4就不能,有可能造成SPL和IPL被自动擦除(基本就算报废了), [/quote]

我听说G3 G4 的ROM 不能混刷,不然很可能变砖头

所以怎么察看自己的机器具体是什么型号是个问题

2007-12-11 21:06 hihai821
[quote]原帖由 [i]SAILOR[/i] 于 2007-12-11 04:38 发表 [url=http://bbs.maxpda.com/redirect.php?goto=findpost&pid=1062112&ptid=100351][img]http://bbs.maxpda.com/images/common/back.gif[/img][/url]


我听说G3 G4 的ROM 不能混刷,不然很可能变砖头

所以怎么察看自己的机器具体是什么型号是个问题 [/quote]

只有改成SuperCID,就可以刷了,呵呵。。

2007-12-13 09:53 SAILOR
谢谢啊

2007-12-26 12:51 duger
没明白。也顶……

2007-12-29 09:14 shilin850422
我都晕菜了
我呀
笨呀

2008-6-4 03:38 conancin
呵呵,进来逛一圈,又长了知识。。。

2008-6-7 18:58 uppersky
学习中。

2008-6-26 18:35 chuangxiu
记下学习

2008-6-29 17:58 blacksex
你好,看了你的文章获益非浅,但有点不理解的是IPL损坏可以通过换字库解决,那么字库是否是独立于ROM芯片的另外一块IC芯片,其介质也是某种FLASH嘛?还有字库里面包含了什么信息?是否字库=一块存储IPL和SPL的芯片?如果可以进入SPL引导的三色屏,是否表示字库并未损坏?

2008-6-30 19:10 blacksex
版主怎么都那么冷漠,不回答问题的?

2008-8-2 13:17 palmfansone
:) :) :) :)

2008-8-11 19:09 mecathy
顶起来,
我也不懂

2008-8-18 10:50 jinwxp
非常详细,不过看不太懂,慢慢学习

2008-9-27 02:51 mymomomg
强烈支持LZ

页: [1] 2


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.