Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2985665
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: 嵌入式

2014-08-13 16:53:19

基础概念:PHY芯片与Switch芯片
1.PHY芯片:即网卡芯片,PHY芯片一端与CPU相连一端与网络变压器相连,网络变压器与网口相连
(MT5350等路由芯片内置PHY芯片功能,一般CPU直接与网络变压器相连即可)。
2.LAN Switch芯片:不用Lan Switch芯片则WAN口过来的数据需要CPU软转发给各LAN口;Wan口过来的数据CPU直接扔给LAN Switch芯片,
由该芯片负责转发给各Lan口(一般交换机中才会这么用)。
3.MT7620A除了集成无线芯片功能外(WLAN接收和发射天线),还集成swith芯片功能(2GE+4FE即千兆网口和百兆网口)

在openWRT平台下添加一个新的单板

1.target/linux/ramips/dts目录下新建XXX_board.dts文件
2.在target/linux/ramips/image/Makefile末尾处添加如下内容:
Image/Build/Profile/XXX_board=$(call BuildFirmware/Default8M/$(1),$(1),XXX_board,XXX_board)
ifeq ($(SUBTARGET),mt7620a)
define Image/Build/Profile/Default
$(call Image/Build/Profile/XXX_board,$(1))
3.make后即可在/bin/ramips目录下生成基于MT7620a芯片的新单板XXX_board(dts文件中自定义新单板的led等外设所用的GPIO口等单板硬件配置信息).

切记,从代码库Git出代码后做开发,以后不要运行./scripts/feeds update -a或./scripts/feeds install -a,否则工程中开发的内容会被覆盖掉。
移植openWRT官方源码到RT5350(由于默认开通DHCP、PPPOE功能,故只需自行移植luci配置页面,便可在配置页面上设置wan口为PPPOE拨号上网及上网账号密码,Lan口直接接pc即可上网)。
1.menuconfig后选择target及subtarget
2.Base Systems-->选中uci;LuCI--->Collections--->选中luci即可;
3.由于单板的以太网口改了,故需要修改dts文件中的Ethernet@节点下的内容,否则物理上CPU的发送接收与WAN/LAN口不通。
4.编译烧写到单板,vim /etc/config/network修改eth0.1的ip地址(即路由器上的br-lan,另eth0.2即是路由器上的WAN口,说白了路由器上的4个LAN口和WAN口物理上是相通的都是eth0,上层协议为这些端口设置不同的IP等等就区分开各不同端口);路由器只引出一个物理端口但ifconfig后会显示br-lan的IP地址为192.168.188.1(该路由器br_lan口的IP),eth0.2的IP地址为192.168.1.33(路由器WAN口的IP),若此时将该物理端口连接到另一路由器(路由器组建局域网的IP192.168.1.1)的LAN口且PC也接该路由器LAN口,则PC与此该单板是可以通信的。----最后/etc/init.d/network restart使修改生效。
5.iptable -F关闭防火墙即可访问单板的路由器LuCI配置界面(iptables --help查看该命令)。
6.1若想使用中文LuCI配置界面,则menuconfig时选中LuCI-->translations-->Chinese和English,然后进入web配置界面-->系统-->语言和界面设置即可设置中文
(打开/tmp/.config-package.in搜索Chinese即可搜到在何处配置添加中文包的选项)
6.2openWRT/package/luci目录下的文件均为链接文件,链接到feeds/luci,故开发时一般都在feeds/luci目录下开发。
6.3openWRT/package目录下包含内核.ko形态的BSP驱动,如LED控制灯驱动。
6.4menuconfig配置完luci后,先make  package/luci/clean然后再make。
br_lan为内核虚拟的接口桥接口,该接口下挂着eth0.1和eth0.2。


openWRT根文件系统:build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\root-ramips
openWRT根文件系统:build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\linux-ramips_mt7620a
pppoe应用源码:build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\ppp-default
pppoe应用的脚本及配置文件:openwrt_wlzigbee_7620\package\network\services
pppoe源码下载地址及如何整合到rootfs中:详见Makefile目录package\network\services\ppp\Makefile

==============================================================================================
diff -Nur 2/ 3/ > a.patch(将2和3目录中的文件差异补丁输出到a.patch)
find查找函数调用位置:find . -name "*.c" | xargs grep 'eth_send'查找当前目录中所有.c文件并
抓取函数eth_send的调用位置。
==============================================================================================
Uboot网口驱动:
net目录eth_initialize()--->dm9000_initialize()
board.c文件board_init_r()或start_armboot()--->eth_initialize()
若依旧ping不通换台电脑试试;或加个路由器组建局域网,设置局域网的IP地址为192.168.1.1(即局域网网关的IP),若使用路由器的DHCP功能则路由器会
自动为连在LAN口的各设备分配网段内的IP进而使各设备间可互相访问, 若不想用路由器的DHCP则也可在192.168.199.网段内设置静态ip---->此时设置WAN口即可上网了(在家
设置PPPOE及上网账号,在公司由于公司网关未每个人分配静态ip上网故WAN口设置为静态ip及子网掩码等即可上网)。

编译错误can't remove /include/asm及asm-arm/arch:直接手动将这两个目录手动删除即可,
make xx_config时会自动重新生成。

另外256M的flash烧写时nand write.yaffs必须是(512+16)的整数倍,故可为20000*528然后转换成16进制(表示20000页的大小)。














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