您的位置:首页 > 运维架构

Openwrt修改flash大小

2016-06-27 17:05 489 查看
前言:在我们编辑固件选择软件包的时候会使固件逐渐变大,但是要符合你使用的型号,所以就修改固件大小来改变它。由于openwrt下默认一些固件大小是8M,所以在此来修改成16M,来支持我们的使用。

在新的版本中,已经加了对16M的支持,openwrt/tools/firmware-utils/src/mktplinkfw.c

代码如下

static struct flash_layout layouts[] = {
{
.id     = "4M",
.fw_max_len = 0x3c0000,
.kernel_la  = 0x80060000,
.kernel_ep  = 0x80060000,
.rootfs_ofs = 0x140000,
}, {
.id     = "4Mlzma",
.fw_max_len = 0x3c0000,
.kernel_la  = 0x80060000,
.kernel_ep  = 0x80060000,
.rootfs_ofs = 0x100000,
}, {
.id     = "8M",
.fw_max_len = 0x7c0000,
.kernel_la  = 0x80060000,
.kernel_ep  = 0x80060000,
.rootfs_ofs = 0x140000,
}, {
.id     = "8Mlzma",
.fw_max_len = 0x7c0000,
.kernel_la  = 0x80060000,
.kernel_ep  = 0x80060000,
.rootfs_ofs = 0x100000,
}, {
.id     = "16M",
.fw_max_len = 0xf80000,
.kernel_la  = 0x80060000,
.kernel_ep  = 0x80060000,
.rootfs_ofs = 0x140000,
}, {
.id     = "16Mlzma",
.fw_max_len = 0xf80000,
.kernel_la  = 0x80060000,
.kernel_ep  = 0x80060000,
.rootfs_ofs = 0x100000,
}, {
.id     = "16Mppc",
.fw_max_len = 0xf80000,
.kernel_la  = 0x00000000,
.kernel_ep  = 0xc0000000,
.rootfs_ofs = 0x2a0000,
}, {
/* terminating entry */
}
};


所以这里就不进行修改了

1.修改dts

文件目录:openwrt/target/linux/ramips/dts,在该目录下找到自己想要修改的dts文件,这里以mt7620a_mt7610e做示例

修改处dts代码展示:

partition@50000 {
label = "firmware";
reg = <0x50000 0xfb0000>;
};


值得一提的是,7b=8M fb=16M

2.修改Makefile

文件目录:openwrt/target/linux/ramips/image,由于我刚刚修改的是mt7620a_mt7610e,所以找到相关代码

Image/Build/Profile/MT7620a_MT7610e=$(call BuildFirmware/Default16M/$(1),$(1),mt7620a_mt7610e,MT7620a_MT7610e)


注意,这里是我修改之后的,以前是Default8M,现在改成16M,修改完之后编译,就可以看到你之前由于固件大于8M从而没有被编译出来的固件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: