Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712768
  • 博文数量: 79
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1338
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-12 08:51
个人简介

XMU->九天揽月->五湖抓鳖->DSP->driver->kernel/OpenWRT->ISP/RTOS

文章分类

全部博文(79)

文章存档

2020年(2)

2018年(3)

2016年(7)

2015年(42)

2014年(25)

分类: LINUX

2014-09-18 12:00:42

接上:http://blog.chinaunix.net/uid-27057175-id-4479852.html

编译好的wvr300_factory.bin下载到路由器上,网络不能使用。

查看Rootfs根目录/etc/config/network当前使用的网络配置。

root@OpenWrt:/etc/config# cat /etc/config/network

 

config interface 'loopback'

        option ifname 'lo'

        option proto 'static'

        option ipaddr '127.0.0.1'

        option netmask '255.0.0.0'

 

config interface 'lan'

        option ifname 'eth0'

        option type 'bridge'

        option proto 'static'

        option ipaddr '192.168.1.1'

        option netmask '255.255.255.0'

 

config interface 'wan'

        option ifname 'eth1'

        option proto 'dhcp'

所以wvr300现在的网络配置:eth0被当作laneth1被当作wan了,br-lan桥接eth0。这样测试wan口有4个而lan口只有1个,恰好就把面板的顺序反过来了,实际上就是lan wan与eth 0 1的对应关系颠倒了。正确的配置应该是eth0waneth1lanbr-lan桥接eth1

所以得看lan wan和eth的配置是如何来的,/etc/config/network是如何生成的?

        openwrt工程下搜索 grep –Rn –exclude-dir=.svn “etc/config/network” ./

得到target/linux/ar71xx/base-files/etc /uci-defaults/network这个脚本创建network配置

 

[ -e /etc/config/network ]&& exit 0

touch /etc/config/network           #### 有则ret,无则创建 

. /lib/functions/uci-defaults.sh

. /lib/ar71xx.sh                    #### 引用脚本,定义了函数和变量

ucidef_set_interface_loopback       ###### loopback interface 

board=$(ar71xx_board_name)      

case "$board" in    /// 下面是枚举board,按board 配置 lan wan switch

tl-wr841n-v8)

         ucidef_set_interfaces_lan_wan "eth1" "eth0"

         ucidef_add_switch "switch0" "1" "1"

         ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4"

         ;;

所以根据board来分别配置lan wan

board 取自ar71xx_board_name()搜索ar71xx_board_name()定义来自 target/linux/ar71xx/base-files/lib/ar71xx.sh,并且依赖于/tmp/sysinfo/board_name,再依赖于ar71xx_board_detect()

ar71xx_board_detect()函数中/proc/cpuinfo中取出machine名称,再进行匹配即可得board_name,并把name存储到/tmp/sysinfo/board_name,根源到此,原生openwrt里面没有WVR300机型,故这里就只能用默认配置。

 

解决办法:

target/linux/ar71xx/base-files/lib/ar71xx.sh  

ar71xx_board_detect()新增

         *"TP-LINK TL-WVR300")

                   name="tl-wvr300"

                   ;;

 

target/linux/ar71xx/base-files/etc/uci-defaults/network 新增

tl-wvr300)

         ucidef_set_interfaces_lan_wan "eth1" "eth0"

         ucidef_add_switch "switch0" "1" "1"

         ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4"

         ;;

 

重新编译得到wvr300镜像,验证网络配置正确了。

阅读(8902) | 评论(6) | 转发(1) |
给主人留下些什么吧!~~

fep9lxmu2015-03-12 13:45:55

polejo:你是wvr300?
wvr300官方的系统是vxworks的。
所以你得先找个可用的wr841v8 uboot才行,这是得拆机串口下刷。

研究了下好复杂啊,主要是没设备,谢谢了

回复 | 举报

fep9lxmu2015-03-12 10:22:30

polejo:你是wvr300?
wvr300官方的系统是vxworks的。
所以你得先找个可用的wr841v8 uboot才行,这是得拆机串口下刷。

是的。。没有办法web刷吗?不懂硬件,不会拆。。

回复 | 举报

polejo2015-03-12 09:06:51

fep9lxmu:你好,我成功编译出了factory.bin,但是在官方固件web升级页面上传后提示"文件校验失败,升级失败",这个该怎么办?要拆机刷吗?谢谢

你是wvr300?
wvr300官方的系统是vxworks的。
所以你得先找个可用的wr841v8 uboot才行,这是得拆机串口下刷。

回复 | 举报

fep9lxmu2015-03-11 15:05:39

你好,我成功编译出了factory.bin,但是在官方固件web升级页面上传后提示"文件校验失败,升级失败",这个该怎么办?要拆机刷吗?谢谢

polejo2014-10-08 08:58:45

damcool:高手问下可有现成的bin文件分享也想刷WVR300,谢谢先!

我这里有限制的,发不了bin文件。
按照openWRT手札这三篇,修改openwrt的官方源码。就可以编译生成WVR300的bin了。

回复 | 举报