OpenWRT编译-如何为3G300M编译一个16M的固件?
如题,请教各位大神,请指点。已经成功下载Openwrt Trunk版软件,成功编译Tenda 3G300M的4M固件,完全按照原来的设置。我已经更换成16M的闪存(W25Q128BV,16MB)现在想编译能容纳更多软件的固件,应该修改哪个地方呢?
CPU是Rt3052,SPI的闪存。
是不是修改这个文件,怎么修改?有没有这方面的教程可供参考啊。
我注意到了这个文件:
trunk/target/linux/ramips/image/Makefile
是不是修改这个文件就可以呢?这个文件的部分内容:
#
# RT305X Profiles
#
Image/Build/Profile/DIR610A1=$(call BuildFirmware/Seama/$(1),$(1),dir-610-a1,DIR-610-A1,wrgn59_dlob.hans_dir610,$(ralink_default_fw_size_4M))
edimax_3g6200n_mtd_size=3735552
Image/Build/Profile/3G6200N=$(call BuildFirmware/Edimax/$(1),$(1),3g-6200n,3G-6200N,$(edimax_3g6200n_mtd_size),CSYS,3G62,0x50000,0xc0000)
Image/Build/Profile/3G6200NL=$(call BuildFirmware/Edimax/$(1),$(1),3g-6200nl,3G-6200NL,$(edimax_3g6200n_mtd_size),CSYS,3G62,0x50000,0xc0000)
Image/Build/Profile/3G300M=$(call BuildFirmware/CustomFlashFactory/$(1),$(1),3g300m,3G300M,$(ralink_default_fw_size_4M),3G150M_SPI Kernel Image,factory)
Image/Build/Profile/AIR3GII=$(call BuildFirmware/Default4M/$(1),$(1),air3gii,AIR3GII)
define BuildFirmware/UIMAGE_8M
$(call MkCombineduImage,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_8M)),$(kernel_size_8M),$(rootfs_size_8M),$(7))
endef
define Image/Build/Profile/ALL02393G
$(call Image/Build/Template/$(image_type)/$(1),UIMAGE_8M,all0239-3g,ALL0239-3G,ttyS1,57600,phys)
endef
改造的帖子见:http://www.anywlan.com/thread-335830-1-1.html,
[路由改装]Di-524M B1改造 兼Rt3050F uboot
本帖最后由 sd007 于 2014-10-20 13:34 编辑
网上发了求教帖子,但是一直没有得到回复。
没有办法,只好自己从纷乱的信息中提取有效信息,分析猜测它的文件,最终成功编译了16M固件。
以下是要点和过程:
1.首先找到上面提到的trunk/target/linux/ramips/image/Makefile文件,将
Image/Build/Profile/3G300M=$(call BuildFirmware/CustomFlashFactory/$(1),$(1),3g300m,3G300M,$(ralink_default_fw_size_4M),3G150M_SPI Kernel Image,factory)
修改为:
Image/Build/Profile/3G300M=$(call BuildFirmware/CustomFlashFactory/$(1),$(1),3g300m,3G300M,$(ralink_default_fw_size_16M),3G150M_SPI Kernel Image,factory)
编译后下载到Di-524,设备不能正常运行,出现大量的
[ 5.310000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 。。。。
和
[ 5.650000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,5)
仔细观察TTL的输出信息,发现在这些出错信息之上有MTD分区信息,firmware和rootfs的长度有问题,很可能原因在此。于是在各个配置文件中查找,最终发现:
2.找到trunk/target/linux/ramips/dts/3G300M.dts,修改本文件,将Fiwmware的长度变长到整个Flash,然后再次编译,编译成功后下载到DI-524后成功,所有功能正常。仔细看了DI-524的PCB,没找到这个板子的USB接口,现在固件成功了,自然就想利用它的USB接口做离线下载了。
palmbus@10000000 {
spi@b00 {
status = "okay";
m25p80@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "w25q128";
reg = <0 0>;
linux,modalias = "m25p80", "mx25l3205d";
spi-max-frequency = <10000000>;
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
read-only;
};
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
label = "firmware";
reg = <0x50000 0xfb0000>;
};
};
};
};
仔细看了DI-524的PCB,没找到这个板子的USB接口,现在固件成功了,自然就想利用它的USB接口做离线下载了。
页:
[1]