ROM 定制

1.ROM的构成 rom常见的有这么几种 NBF NB0 NB1 NB2 BIN XIP
  • NBF 这种是最常见的,也是咱们大家经常刷机使用的格式。 构成:前32字节是rom头,依次是 设备型号如PH20B '-'分隔符 语言如CHN '-'分隔符 版本如5.04.06 '-'分隔符 符号意义未知,可能是一个操作Id '-'分隔符 1个16位的校验码 所以下次大家修改版本号等时注意长度限制,前三个分隔符算在32字节里面,第四个分隔符不算 接下来是256K的bootloader 剩下的30.75M就是os的镜像了。 NBF格式通常是用电脑通过串口或者USB口刷到手机里,它会覆盖手机设备的绝大部分重要区域。如果有错误,就必须返修了。
[list=2] NB0 它是一个包含256K的bootloader,在rom偏移地址为0x80000000的地方 [list=3] NB1 它是一个包含30.75M的OS镜像,在rom偏移地址为0x80040000的地方 [list=4] NB2 它是一个包含31M的bootloader+os镜像,在rom偏移地址为0x80000000的地方 [list=5] bin 这种格式是通过微软的romtools生成。 [list=6] XIP 这是微软希望提供rom升级的方式。 它包含 DWORD size this value is the size of the B000FF file DWORD null xipentry ( 0x290 bytes ) B000FF file 64 bytes of ?? probably hash or signature? 可通过 updatexip.exe 刷机。 2。ROM的分解和合成 拿D700为例,把附件中文件解压,进入此目录dos窗口,输入 1.xda3nbftool -x nk.nbf nk.nba 0x20040521 ;把nk.nbf文件转成nk.nba 2.prepare_imgfs nk.nba ;把nk.nba转成imgfs_raw_data.bin和imgfs_removed_data.bin 3.viewimgfs imgfs_raw_data.bin ;把上步生成的imgfs_raw_data.bin文件释放,在dump的目录下 ROM定制的重点 此时你就可以对dump目录进行定制了,如文件的ti添删,注册表的修改,自启动文件的修改 这个下面会详细介绍 4.buildimgfs ;定制完成后,重新生成imgfs_removed_data.bin文件 5.make_imgfs nk.nba   ;重新生成nba文件 6.xda3nbftool -c -u nk.nba   ; 因为做了修改,所以crc校验值会改变,此步重新生成新的crc校验 7.xda3nbftool -x nk.nba nk.nbf 0x20040521 ;得nk.nbf 然后就可以用新做成的nk.nbf刷机了. Tips: 第四步第五步中的imgfs_removed_data.bin、nk.nba 文件日期不会改变,但是不要认为此步两个文件没有变化。 For 多普达696: 第一步:xda2nbftool -x nk.nbf nk.nba 0x20040304 第七步:xda2nbftool -x nk.nba nk.nbf 0x20040304 其他步骤一样 .注册表的处理 在ROM的分解和合成过程的第四步,我们得到了dump文件的目录。 里面的default.hv,user.hv就是对应的注册表文件,但是这两个文件不能直接用记事本打开修改。 解压附件中的工具,把以上两个文件拷入,进入目录的dos窗口,输入 1.set _FLATRELEASEDIR=.    ;这一步是设置环境变量 2.rgucomp -o default.hv -nologo > boot.rgu   ;这一步就是把default.hv转换成boot.rgu文件 下面就是操作重点 生成的boot.rgu就是标准的注册表文件,可用任意的一个文本处理软件打开,推荐editplus或者ultraedit。 (然后请手工在第一行加入如“REGEDIT4”,并存为unicode格式,这步注意,要不然下一步生成报错) 以加入中文内核为例,简单介绍一下: 在注册表中任意位置(不过最好把类似的注册表放在一起,这样清晰些) 加入如下几行: [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontLink/SystemLink]   "Arial"="//windows//sunfon.ac3,SC_Song"   "Courier New"="//windows//sunfon.ac3,SC_Song"   "MS Sans Serif"="//windows//sunfon.ac3,SC_Song"   "Tahoma"="//windows//sunfon.ac3,SC_Song"   "Times New Roman"="//windows//sunfon.ac3,SC_Song"   "Kingsoft Phonetic Plain"="//windows//sunfon.ac3,SC_Song" 这样中文显示就有了。 加入: [HKEY_LOCAL_MACHINE/nls]   "LegacyLocaleMode"=dword:1   "SystemLCID"=dword:804   "DefaultLCID"=dword:804   "DefaultOCP"=dword:3a8   "DefaultACP"=dword:3a8 [HKEY_LOCAL_MACHINE/nls/overrides]   "LCID"=dword:804 这样中文区域就设置好了。 当然前提是要把sunfon.ac3中文字体和wince.nls中文区域文件拷到dump目录里去。 Tip:如果要使用其他字体也很容易,只要把上步的字体路径和字体名称修改成你想要的,并把相应字体文件拷入就可以了。        如:如想使用微软雅黑字体,因为字体太大,10M多,所以不可能在rom中集成,所以你就可以改成        "Tahoma"="//Storage Card//MSYH.TTF,/x6211/x7684/x6587/x6863"      然后你把字体拷入你的存储卡(存储卡名为Storage Card,和上面对应),后面四个字符表示微软雅黑的unicode码。你也可以给这字体改个英文名,就不用写这个unicode字符了。      当然,放在卡里可能还需要加些注册表,相关内容请参考 【1y】随心所欲--替换系统字体,何须修改注册表。(8月29日改善WM2005兼容性)      把相关的注册表文件写入。 Tip2:这个注册表转换工具不支持中文字符,所以涉及中文字符请一律用unicode字符。关于如何找中文的对应unicode字符,下面会详细介绍。 Tip3:硬起后开机自动安装extroom中的软件设置地方,请在注册表中找到 [HKEY_LOCAL_MACHINE/Comm]   "AutoRun"="//Storage Card//ExtROM//AutoRun.exe"   "AutoRunCFG"="//Storage Card//ExtROM//cfg.txt" 哈哈,看到了么,就是这个。你可以按照你的意愿修改了。当然autorun.exe中路径你也要修改一下。 好了,不多说了,这个留着帖子里交流。相应的autorun.exe和extroom的定制会在后面详细说明。 好了,修改完毕。运行 3.rgucomp -b   ;这样就把上步的boot.rgu转化成boot.hv,把boot.hv改名为default.hv,拷入rom定制中生成的dump目录中覆盖原来的,好了,输入你自己的注册表就OK了。 Tip:这步没有加文件名,所以如果第一步你不是转化成boot.rgu这个文件名,你这步就要改成标准的boot.rgu文件名了,其他不认。 4.initflashfiles.dat文件的处理 这个文件是刷完系统后自动生成文件和目录的重要文件。 rom定制过程中生成了dump目录,而放入dump内的文件都只会出现在ppc的windows的文件夹根目录下。 那开始菜单内的快捷图标哪里来的?programm files内的东西怎么来的? wm5的rom原理通过initflashfiles.dat文件来做到移动文件的。 initflashfiles.dat也是个文本,里面通过语句规定了硬启动后windows根目录下的文件如何自复制一个副本到指定的ppc其他目录内。 做一个示例: 文本里的语句 ; App Button default links Directory("/x005C/x0057/x0069/x006E/x0064/x006F/x0077/x0073/x005C/x0041/x0070/x0070/x0042/x0075/x0074/x0074/x006F/x006E/x0073"):-File("/x65E5/x5386/x002E/x006C/x006E/x006B","/Windows/calendar.lnk") 转成正常文字就是 Directory("/Windows/AppButtons"):-File("日历.lnk","/Windows/calendar.lnk") 其中 /x65E5 对应 日 /x5386 对应 历 /x002E 对应 . /x006C 对应 l /x006E 对应 n /x006B 对应 k 意思就是这个文件 /Windows/calendar.lnk 放到 Windows/AppButtons 目录下,显示名称为日历.lnk 这样的话日历硬件按钮对应的指令就是打开日历。知道这个的话就方便了,你就可以任意指定按键映射了。 里面的005c之类均为unicode,因为initflashfiles.dat这个文件不支持中文。如果你不用写中文,当然就不用这么麻烦了,可以直接写英文了。 附件1里为helmi AKU3.2 1.3.2中的initflashfiles.dat 附件2里为我的rom中修改成对应unicode中文的initflashfiles.dat 5。ROM的汉化 通过上面几步,你已经可以打造一个完美的中文内核了,下面的工作就是rom里面文字的汉化了。 这步其实没什么技术含量。 有两种方式 1。自己汉化 把那些对应的*.0409.mui用汉化软件自己汉化了,然后改称*.0804.mui 但是就是太繁琐了,因为文件太多,自己翻译太麻烦还不准。 Tip:如果没有找到对应的*.0409.mui,你也可以把对应的dll/exe文件用汉化软件汉化了,然后改成对应的*.dll.0804.mui/*.exe.0804.mui放到dump目录。 常用的汉化软件有Multilizer,ResHacker、eXeScope等,关于汉化软件的使用,不在本文讨论之内,可以在跟贴里探讨:) 2。找对应版本的中文原版汉化文件 比如我的rom是AKU3.2的,你可以找一个中文发行版本的rom,内核也为AKU3.2,这样你就可以把它的rom分解,把那些对应的*.0804.mui文件拷回来,然后把咱们rom里的那些*.0409.mui全部删掉,替换成0804的,然后重新生成rom。 Ok,你的中文界面中文内核rom出来了,赶紧刷机吧。 但是很不幸,还没有中文正式版本的基于AKU3.2的,这正是D700中文版本难产的重要原因。 我昨天找了半天,发现国内只有联想跟进的最快,它的et980现在最高版本是0818,但也还是基于AKU2.?,具体2点几版本我不太清楚。 但是我看到有3.0的中文版本测试图片出现,但此版本没找到,如果大家能搞到它的3.0中文版本,也可以了。 但即使有,它的版本也才刚到3.0,而我们的是3.2,呵呵,还是英文跟进的快呀。 这样,我们就可以先做个3.0的中文版本,不然只能做个AKU2的版本了。 了使你的mui文件生效,你需要在注册表(就是前一步的default.hv)中加入 [HKEY_LOCAL_MACHINE/Security/ColdInit] "Locale"=dword:00000804 "ColdInit2Done"=dword:00000001 "ColdInit1Done"=dword:00000001 [HKEY_LOCAL_MACHINE/MUI] "SysLang"=dword:00000804 "Enable"=dword:00000001 Tips:0804是简体中文的,0409是英文对应的代码。 对了,那个Multilizer 汉化版大家去汉化新世纪下吧,文件太大,将近12M。 4。initflashfiles.dat文件的处理(续) 给大家几个转换unicode-字符的小窍门。 1。字符 -〉unicode 其实java就带了一个很好的转换工具。转到java的bin路径,如C:/Program Files/Java/jdk1.5.0_07/bin 输入 native2ascii -encoding unicode d:/1.txt d:/2.txt (你现在d盘的1.txt里写入你要转换的中文字符,执行完之后你就可以在2.txt中找到它的对应unicode编码。) tips:转码后的unicode都是形如/u5fae/u8f6f/u96c5/u9ed1,把/u替换成/xj就可以了。 2。unicode->字符 其实微软输入法也带了一个很好的工具。打开微软输入法,选择辅助输入法-〉unicode码输入。 对应的输入法图标也变了 这时假设你输入5fae,输入完e系统就自动出来了“微”,输入8f6f,系统就自动出现"软" 再给大家一个小Tip: 集成软件的时候可以先找到对应软件的cab安装包,用WinCE CAB Manager打开,把里面的文件释放出来,放在dump目录,把对应的注册表文件集成到default.hv注册表中,完成rom,安装硬起后你的rom就有了这个软件了.呵呵. 关于用WinCE CAB Manager提取文件等用法以后会详细说明,今天没时间了. ps:早晨到现在一直在写此帖,还没开始工作呢,头估计在哭了,得赶紧工作去了,等有空的时候再更新好了. 希望大家都能够分享自己的经验,早日看到每个人自己的完美rom. 附上一个中文简体拼音和手写的输入法,大家可以把它集成到rom里面去,呵呵.这是前几天从一个日本鬼子网站淘的. Q表示是qvga屏幕的,还有一个vga屏幕的,如果大家需要,也可放上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值