OpenWrt添加新Flash支持
本文主要基于MT7628的mtk-openwrt-sdk-20160324-8f8e4f1e.tar.bz2
SDK。部分新的Flash在旧的OpenWrt内核中并不支持,需要自行添加Flash型号来使用,否则在OpenWrt启动时会系统自行分配一款Flash芯片,则很可能导致系统运行出现BUG。添加新Flash支持有两种办法,一种是直接修改dl文件夹下的Linux内核,另一种是修改build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.10.14/drivers/mtd/ralink/ralink_spi.c
文件和build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.10.14/drivers/mtd/ralink/ralink_bbu_spi.c
文件,但该方法在make clean后会清除,需要注意。也可以使用quilt生成内核补丁来添加新Flash的支持。
修改Linux内核
- 解压
openwrt-sdk/dl/linux-3.10.14.tar.xz
,tar.xz的解压方法参考Linux实用记录(1)–Linux命令行下的压缩文件及解压中tar.xz的解压及压缩方法。得到openwrt-sdk/dl/linux-3.10.14
文件夹。 - 打开
openwrt-sdk/dl/linux-3.10.14/drivers/mtd/ralink/ralink_bbu_spi.c
文件。在static struct chip_info chips_data
数组中添加新的Flash型号,该数组与Uboot中的Flash型号数组结构相同,所以添加方式参考MT7628开发(1)–Uboot添加新Flash支持即可。 - 打开
openwrt-sdk/dl/linux-3.10.14/drivers/mtd/ralink/ralink_spi.c
文件。修改方式与上一步的ralink_bbu_spi.c
文件相同。 - 将
openwrt-sdk/dl/linux-3.10.14
文件夹重新压缩为linux-3.10.14.tar.xz
,在openwrt-sdk/dl
文件夹目录下使用命令md5sum linux-3.10.14.tar.xz
计算得到新的linux-3.10.14.tar.xz的md5值。修改openwrt-sdk/dl/linux-3.10.14.md5
文件,将文件中的MD5数值替换为新的linux-3.10.14.tar.xz的md5值。 - 重新编译openwrt即可,重新编译完成后可到
build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.10.14/drivers/mtd/ralink/ralink_bbu_spi.c
和build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.10.14/drivers/mtd/ralink/ralink_spi.c
文件中检查确认是否有新添加的Flash型号。
添加64M大小的固件
打开target/linux/ramips/image/Makefile
,找到ralink_default_fw_size_32M=33554432
,按如下方式修改makefile文件
ralink_default_fw_size_32M=33554432
BuildFirmware/Default32M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_32M),$(4))
BuildFirmware/Default32M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))
#新增对64M固件的支持
ralink_default_fw_size_64M=67108864
BuildFirmware/Default64M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_64M),$(4))
BuildFirmware/Default64M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))
修改编译固件支持的flash大小
在同一个makefile下,找到要修改的编译板子内容,格式为:
#Image/Build/Profile/MyMT7628=$(call BuildFirmware/Default64M/$(1),$(1),rg-m28,RG-M28)
#固定开头 编译的板子名称 配置为多大的固件 ,固件包名,作用还不确定
Image/Build/Profile/MT7628=$(call BuildFirmware/Default8M/$(1),$(1),rg-m28,RG-M28)