前言:在我们编辑固件选择软件包的时候会使固件逐渐变大,但是要符合你使用的型号,所以就修改固件大小来改变它。由于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从而没有被编译出来的固件了。