|
本帖最后由 dato 于 2016-2-19 21:14 编辑
花了3天时间终于搞定这事,以前都爱好用ImageBuilder生成自定义版本。据说MT7620默认支持24bit(3byte)的spi地址模式,而要支持32M以上的spi flash,则必须切换到32bit(4byte)地址模式.在soft reset的时候,spi停留在了32bit模式,没有切换回默认的24bit模式,导致reset后,MT7620在默认的24bit模式,无法和32bit模式的spi通讯,系统死机。所以这次非得从源码开始编译,还得添加路由宝的配置文件,想到上次编译3天3夜各种错心里都有点后怕。
1.安装openwrt编译环境
系统使用的是debian 7 64位,安装下面的包
apt-get install -y subversion make gcc g++ libncurses5-dev libghc-zlib-dev libreadline-dev libssl-dev gawk bzip2 patch xz-utils sudo
apt-get install -y binutils flex bison autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev asciidoc libz-dev
apt-get install -y gettext git
apt-get install libncurses5-dev zlib1g-dev gawk flex libssl-dev sdcc-nf
2.获得和在线版本相同的源码 CHAOS CALMER (15.05, r46767)
mkdir /openwrt;cd /openwrt
svn co --revision=46767 svn://svn.openwrt.org/openwrt/trunk/ #下载官网的源码
#git clone git://git.openwrt.org/15.05/openwrt.git
#不要操作这两步,上次3天3夜都不成功就是因为编译了大量的包,越是多各种依赖问题越是严重
#./scripts/feeds update -a #更新所有软件包
#./scripts/feeds install -a #安装所有软件包
#更新luci
vi /openwrt/trunk/feeds.conf.default
#修改成下面的内容
src-git luci https://github.com/openwrt/luci.git;luci-0.12
cd /openwrt/trunk
scripts/feeds update luci
scripts/feeds install -a -p luci
#导入配置模板
wget -O .config https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/config.diff
#根据 add support for Youku YK1 覆盖相应文件
补丁包文件
cp -a target /openwrt/trunk #覆盖有关 路由宝 设备的描述文件
#cd trunk
#rm -rf tmp
touch target/linux/*/Makefile #让 路由宝的描述 出现在make menuconfig
make defconfig #会根据本地package添加新选项到.config
make menuconfig #进入定制界面 选择Target Profile (YOUKU-YK1)
#重要:编译器指定uClibc,和在线版本一致
make menuconfig 中的 Advanced configuration options (for developers) > Toolchain Options (NEW)> C Library >C Library implementation (Use musl) > Use uClibc
#看是否包含这些选项
cat .config|grep luci
cat .config|grep YOUKU
cat .config|grep uClibc
make prereq
#定义本地下载源,如果以前已经下载过相应文件
#CONFIG_LOCALMIRROR="file:///openwrt/dl"
make V=s #漫长的等待,可能vps cpu受限,每次都差不多要4小时。。。
回头一看,怎么好像没什么内容好写,总算加深了一次编译过程的认识。
资源下载
请大家注意,这里的包目前有问题,仅供测试用途,测试硬件是 YK-L1 黑色 32M 版本,可能有部分是16M的千万别刷
1,指示灯不亮
2,刷新时必须通过breed进行更新,不能通过web页面
3,更新完成以后也不能通过web页面更新其它固件,必须通过breed,可能情况还是补丁或者哪里还有坑,发现用imagebuild生成的 联想 y1 web更新部分都正常的
如果没有openwrt备份经验建议别刷这个问题版本。
The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform.
所以这仅仅是个测试固件,希望你有一定解决问题的能力,新手千万别弄,刷挂了别怪我。。。
注意一定要先刷breed
#测试的话下载这个就够了。
http://144.168.58.60/openwrt-15.05-ramips-mt7620-youku-yk1-squashfs-sysupgrade.bin
make image PROFILE=YOUKU-YK1 PACKAGES="wipefs kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev" FILES=files/
http://144.168.58.60/OpenWrt-ImageBuilder-15.05-ramips-mt7620.Linux-x86_64.tar.bz2
http://144.168.58.60/ykpatch.tar.gz #相关补丁包
md5sum较验软件下载 http://www.nirsoft.net/utils/hash_my_files.html
2f035f846dd2f5c1bdef5b95f0c173a9 openwrt-15.05-ramips-mt7620-youku-yk1-squashfs-sysupgrade.bin
21e40a78e468e6d51b9e8a875157874e OpenWrt-ImageBuilder-15.05-ramips-mt7620.Linux-x86_64.tar.bz2
88cab2de7e3d51ffa848fe31eab135b5 ykpatch.tar.gz
trunk/target/linux/ramips
mt7620/profiles/youku.mk
base-files/etc/board.d/01_leds
base-files/etc/board.d/02_network
base-files/lib/ramips.sh
base-files/lib/upgrade/platform.sh
dts/YOUKU-YK1.dts
image/Makefile
其它问题
1.目前还没解决led指示灯
参考文档
感谢各位大神的补丁文件,让菜鸟玩openwrt才有乐趣,谢谢大家的无私提供。
让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法
http://blog.csdn.net/manfeel/article/details/43530817
针对3.18.20的补丁 /openwrt/trunk/target/linux/ramips/patches-3.18/0064-reset-m25p80-when-shutdown.patch
- --- a/drivers/mtd/devices/m25p80.c
- +++ b/drivers/mtd/devices/m25p80.c
- @@ -256,6 +256,16 @@
- {
- struct m25p *flash = spi_get_drvdata(spi);
- + if ((&flash->spi_nor)->addr_width > 3) {
- + printk(KERN_INFO "m25p80: exit 4-byte address mode\n");
- + flash->command[0] = SPINOR_OP_EX4B; // exit 4-byte address mode: 0xe9
- + spi_write(flash->spi, flash->command, 1);
- + flash->command[0] = 0x66; // enable reset
- + spi_write(flash->spi, flash->command, 1);
- + flash->command[0] = 0x99; // reset
- + spi_write(flash->spi, flash->command, 1);
- + }
- +
- /* Clean up MTD stuff. */
- return mtd_device_unregister(&flash->mtd);
- }
- @@ -319,6 +329,7 @@
- .id_table = m25p_ids,
- .probe = m25p_probe,
- .remove = m25p_remove,
- + .shutdown = m25p_remove, // add shutdown method to reset spi flash
- /* REVISIT: many of these chips have deep power-down modes, which
- * should clearly be entered on suspend() to minimize power use.
复制代码
[OpenWrt-Devel] [PATCH] ramips: reset m25p80 when shutdown
http://patchwork.ozlabs.org/patch/545092/
https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg35104.html
Adding new device support
https://wiki.openwrt.org/doc/devel/add.new.device
add support for Youku YK1
https://dev.openwrt.org/changeset/47617
[12.7更新ufsd]优酷路由宝openwrt.cc版固件[32M+128M]S-S多播等
https://www.right.com.cn/forum/thread-178330-6-1.html
为路由宝OPENWRT CC版本添加tf卡驱动支持
https://www.right.com.cn/forum/thread-178218-1-1.html
Luci feed
https://wiki.openwrt.org/doc/howto/buildroot.exigence
https://github.com/openwrt/luci/wiki/Download
* 2016年01月22日星期五
- 生成文档
|
|