修改E2内核源码,更改roflash、mtd分区的方法

修改E2内核源码,更改roflash、mtd分区的方法

原创:catine_001

相关刷机包见:

摩托罗拉刷机包和固件下载地址:firmware.center

一:编译内核:

1:首先你要建立交叉编译环境。

(交叉编译环境的建立不在本文的谈论范围内。相关教程百度、google。)

2:下载E2、A1200、E6内核源码:

https://opensource.motorola.com/

https://sourceforge.net/motorola/wiki/Projects/

kernel-R564_G_12.00.40P-r1.tar.gz

3:解压得到linux-2.4.17文件夹,将3D辛苦自己做的ilove3d_kernel_v3.diff补丁复制到linux-2.4.17

文件夹里面。

在linux-2.4.17文件夹内打开命令终端,打补丁:patch -p1 ilove3d_kernel_v3.diff

4:用UE32编辑linux-2.4.17文件夹里面的Makefile,修改交叉编译的命令路径:

CROSS_COMPILE   = ****************为你自己的arm-linux-gcc所在的路径

5:在linux-2.4.17文件夹内打开命令终端,

./setup.sh PRODUCT=SUMATRA

make dep

make bzImage

生成的zImage在linux-2.4.17/arch/arm/boot里面

zImage开头补齐2048字节的FF,末尾补齐FF使zImage的大小为1048576字节(1M)

将zImage改名为CG33_0x000A0000.smg

替换sbf刷机包解开的CG33_0x000A0000.smg,打包新的sbf就拥有你自己编译的新内核了。

二:修改rofalsh、mtd分区

1:用SBFCodec.exe解开一个传统的刷机包,看各个smg子包的起始地址:


2:修改roflash分区
\linux-2.4.17\drivers\block\roflash\ezx_parts.c

这一段


对比smg的起始地址

删除data_resource所在的一段,目的是让系统取消这一部分内存的roflash格式

{
name:                "data_resource",  /* resource.img */
size:                0x00900000,
offset:                0x001A0000,
roflash_read:   cfi_intelext_read_roflash,
l_x_b:                ROFLASH_BLOCK,
phys_addr:      0xffffffff, // not use for block cramfs mount
},

(将
name:                "rootfs",
size:                0x019FF000,  /* rootfs size is 24MB for P2 barbados board */
offset:                0x00601000,


name:                "rootfs",
size:                0x019FF000,  /* rootfs size is 24MB for P2 barbados board */
offset:                0x00600000,

这样修改CG43生成的smg就不用再填开头4096字节的FF。)


3:修改mtd分区
\linux-2.4.17\drivers\mtd\maps\bulverde.c

这一段

                                       


},{
name:                "USERFS_DB",
size:                0x00600000,
offset:                0x00AA0000,
},{

修改为
                                               
},{
name:                "USERFS_DB",
size:                0x00F00000,
offset:                0x001A0000,
},{

目的是将上一步取消的CG34的内存部分合并到CG35里面

4:修改mtd读写地址
\linux-2.4.17\drivers\mtd\chips\cfi_cmdset_0001.c

这一段




},{
/* This partition contains "userfs_db"+"userfs_general" */
rw_start: 0x00AA0000,
rw_end:  0x018A0000,
},{

修改为

},{
/* This partition contains "userfs_db"+"userfs_general" */
rw_start: 0x001A0000,
rw_end:  0x018A0000,
},{

目的是修改mtd的读写起始地址,把合并的CG34部分也包括进去。

5:完成上面四小步,重复第一大部分的

make bzImage

得到的将是修改过内存分区的内核。

三:修改刷机包

1:将CG34的内容移到CG41或者CG43,修改CG43的/etc/init.d/mountfs.sh,取消CG34的挂载;

2:复制用SBFCodec.exe得到的CG35_0x00AA0000.smg出来,补齐FF使得新的CG35_0x00AA0000.smg的大小

为原来CG34+CG35的和。

3:将新的CG35_0x00AA0000.smg,替换旧的CG35_0x00AA0000.smg

4:复制用SBFCodec.exe得到的CG31_0x00060000.smg出来,

修改相应的各个smg的起始地址

如图:



十六进制23=十进制35,表示CG35;AA表示CG35原始的开始地址,FFFF0901表示CG35原始的结束地址。

根据第二大部分,删除CG34的描述部分,修改CG35的起始地址。(注意得到新的CG31_0x00060000.smg大

小要和原来的一样)

5:替换新的CG31_0x00060000.smg,替换第二大步得到的CG33_0x000A0000.smg,生成新的刷机包。

刷吧!

本帖最后由 catine_001 于 2008-7-6 11:47 编辑

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值