无聊的光棍
百度空间 | 百度首页 
 
文章列表
 
2008-07-09 10:47
1:用Winhex打开Os.nb 设置镜像为磁盘
   如下图, Os.nb 格式相当于硬盘,
   Os.nb=启动扇区+分区1+ 分区2+分区3
   60.0 MB (62,914,560 字节) =(1024字节)+5.31 MB (5,569,536 字节)+2.87 MB (3,014,656 字节)51.8 MB (54,329,344 字节)
   分区1是XIP第一部分,我们表示为XIP1   ,分区2是XIP第二部分,我们表示为XIP2, 分区3为Dump的imgfs_raw_data.bin,包含了系统文件
   (实际上用PREPARE_IMGFS %1 -nosplit 生成的 imgfs_raw_data.bin 大小51.7MB,跟分区3(51.8M)只少了后面64KB的空字节)





2:修改分区表,从“分区表模板”进入




从下图我们可以看到

分区1 开始扇区 从1 ----10878   分区1扇区大小10878 ,换成字节就是10878*512=5569536字节/1024=5439kb/1024=5.31MB
分区2 开始扇区从10880     分区2扇区大小 5888 ,换成字节就是5888*512=3014656 字节/1024=2944kb/1024=2.875MB
分区3 开始扇区从16768     分区3扇区大小 106112, 换成字节就是106112*512=54329344字节/1024=53056kb/1024=51.8125MB

================================================================================

PPC的XIP大都有3.5M以上,而石墨XIP2最高只有2.87M,,如果要移植PPC的XIP 必须要扩大XIP2,
为什么我们不扩大XIP1呢?
因为XIP1作用暂不明晰,而且XIP的NK.exe文件都是放在XIP2里面. 通常我们所说的移植XIP,操作部分是指XIP2
首先OS.nb的大小是固定的,相对的扩大XIP2 必须减小XIP1的容量,
因为我们从XIP1里看到结尾有2.8M多的零字节和FFFF空字节,如果缩小XIP1容量(缩小的部分是零字节和空字节),扩大XIP2容量,让石墨
XIP2有2.87M+2.8M=5.6M,这样移植PPC的XIP不再为XIP容量所烦恼了

PS:通过研究1210的ROM后发现,1210的XIP2有3.1M,分区3 imgfs_raw_data.bin 有51.2M
                                                            石墨的XIP2有2.87M,分区3 imgfs_raw_data.bin   有51.7M

骗子兄说缩小XIP1扩大XIP2后无法开机,或许我们可以缩小分区3,不知行不行得通?

如下图,XIP2原始5888扇区 ,如果要扩大1024KB容量=2048扇区 ,就把5888修改为7936
相应的 XIP1 原始扇区 10878就要减去2048 ,10872-2048=8830






附加:石墨ROM结构跟P525差不多一样,在研究P525NB0_Kitchen后好像提到
系统会把XIP1也放到RAM中,如果删除或减小XIP1可以带来更多内存可用量,
把XIP1减小的部分分配到imgfs_raw_data.bin ,用户可用硬盘空间又加大一些。
所以我们在P525上经常看到
[08年1月3日]华硕手机之家P525简体中文5.6版发布.大存储.大内存版
“ROM空间增加到64M.程序内存增加到52.02M,开机剩余内存33M多点.”

不知道我理解的对不对??

另外P525 的NK.EXE 里可以调节CPU超频,把P525 PPC 的NK.EXE 移植到石墨上,不知道有问题不?

 
2008-07-09 10:43
一、准备工具
需要用到的工具有XIPPort、mreloc、Hex Workshop和Rommaster2.4
二、ROM操作、提XIP
Atom和Atom Exec的ROM是NB0格式的文件,文件名是diskimage_Ver.nb0
1、从ROM中提取出XIP.bin:
将工具放到C:\Temp目录下,把diskimage_Ver.nb0复制到C:\Temp下面
执行以下命令:
   RomMaster.exe diskimage_ver.nb0 -w 5 -b 0x0018000c -x -o xip.bin
   会自动在C:\Temp目录下生成名为xip.bin的文件,这就是xip部分

一般最新内核都出现在HTC机型上,这里以NB格式的ROM来提取XIP
把NB文件命名为NK.NB并复制到C:\Scoter Kitchen\Utilities\TOOLS\SRPX tools
RomMaster.exe -x -w 5 nk.nb -o xip.bin

三、借想要的XIP
1.准备好想要移植的XIP,采用上面提取的方法得到xip.bin文件和你自己的xip.bin文件,放在两个不同的目录A和B,分别将XIPPort.exe放到A和B目录下,运行xipport单击“dump xip.bin”按钮;
2.分别执行write maps,可以在out目录得到MAP.physical.txt和MAP.txt,复制到其他地方备用;
3.分别执行make pkgs,out目录被重新非配,将要移植的XIP下面的\OUT\MODULES\MSXIPKernel目录下的文件复制到自己的XIP的\OUT\MODULES\MSXIPKernel目录,将要移植的XIP下面的\OUT\FILES\MSXIPKernel目录下的文件复制到自己的XIP的\OUT\FILES\MSXIPKernel目录,替换相同的文件。(此处注意,仅仅替换module形式的exe和dll,还有同名的txt文件,nk.exe, cecompr, ceddk, fsdspy等文件不要替换,如果有的话,OEMXIPKernel的目录更不能替换!!。)
4 、在自己的XIP的目录下操作:执行Undo操作
四、重新分配地址,在自己的XIP目录下操作
1.执行Relocate P'操作
2.执行write maps,得到新的MAP.physical.txt和MAP.txtR
首先查找旧的 ROMHDR offset,在你自己的旧的 MAP.txt 文件有类似的一行:
80768b30 - 80768b84 L00000054 rom_00 header: dlls=01fa01fe-02000000 phys=80600000-808ff47c, 23 modules, 10 files, 1 copyentries ext=8060283c   ram=80900000-84000000 cputype=000001c2,告诉你这个XIP中含有23 个modules, 10个 files, 1个copyentries ,你见到 - 80768b30- 它是你的旧offset - 在 nk.exe 的 S000 部份查找这hex 数值,在 hex 中这一个数值 30 8B 76 80, 修正它为你的新 romhdr offset,新的romhdr offset你可以在上面2中产生的 MAP.txt 文件中找到,如果相同就不用找了
五、生成新的xip.bin文件
1.打开新产生的的MAP.txt文件,如果没有哪一行出现“!!!!!!”那么证明地址没有冲突基本成功了
2.执行build xip_out.bin,会在你的目录来新产生一个xip_out.bin的文件
六、问题解决
1.如果在first dll....和last dll之间发现有“!!!!!!”,则要参考被移植的XIP的MAP.TXT文件,用mreloc.exe对相应的模块的地址按被移植XIP的MAP.TXT文件的顺序进行修改,同时要对每个模块的imageinfo.txt文件做修改。
2、如果是在类似这样的地址80000000 - 80000000 L00000000 Start: first physical address的这一行到80276358 - 80276358 L00000000 End: highest physical address之间的地址出现“!!!!!!”
说明新装进来的文件在调入RAM时他们的地址和其他的东西有冲突了,你必须要调他们的地址,地址重复的地址长度在这一行的LXXXXXXXX中,,查看前后行的LXXXXXXXX值,看看他们的地址长度是多少,再查找有NUL的行,它的LXXXXXXXX代表那里有相应的空的地址,如果空出的长度能装下出现“!!!!!!”的上行或下行的地址长度+“!!!!!!”行的地址长度,你要做的是将那一行的数据移到空的地方!!移动完一个数据段的数据,再做一下write maps,再重新查看MAP.TXT文件,如此重复,直到不再有“!!!!!!”出现为止!
这样再做上面的第五步就可以了
3、数据段的移动方法:查看当前要移动的那一行的第一个数据,它是个地址值,如:80243fd8 - ,在OUT\MODULES对应的文件目录中imageinfo.txt中查找它,它可能是P+某个值或是D+某个值,P或D的值可以在OUT里面的ROMHDR.txt中看到,修改imageinfo.txt的这个数据使其+P或+D的值等于你移动数据的目标NUL那一行的地址值,因为imageinfo.bin和imageinfo.TXT的值是一一对应的,用Hex Workshop修改对应的数据,保存! 呵呵!这个是个细心量大的手工活,没有耐心的就不要做了
七、合成新ROM
把XIP.bin写入diskimage_Ver.nb0,在xipport的文件名中输入:diskimage_Ver.nb0,在地址栏中输入:0018000C,然后单击“Write xip_out.bin to”按钮,即替换了新的XIP。
 
     
 
 
个人档案
 
无聊的光棍2008
男, 25岁
江苏 苏州 
上次登录:
2008年 7月
加为好友
 
   
 
文章分类
 
 
 
     
 
最新评论
 
文章评论|照片评论

     
 
好友最新文章
 
     
 
最近访客
 
 

cooldly

感悟人生路2008

高木志郎

ztpc1113

du掌柜
     
 
背景音乐
 
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     


©2009 Baidu