现在的位置: 首页 > 综合 > 正文

EhterMux V4添加data VLAN功能

2013年06月24日 ⁄ 综合 ⁄ 共 883字 ⁄ 字号 评论关闭
 

EhterMux V4添加data VLAN功能
 在开发过程中遇到了很多问题,不光是设置VLAN本身的问题,还有添加了VLAN功能后连带出来的一系列问题。
 
首先是对5325E芯片VLAN功能的认识和理解。读写5325E芯片是通过串行总线(SPI接口)先传地址,然后再传数据,然后在读数据。采用串行总线的形式的优势就是节省地址空间。毕竟管脚是有限的嘛。
我这次发现要想完成功能最重要的就是要完全透彻的明白硬件的处理过程。例如VLAN的处理过程:
每个端口都有一个default ID 这个id用于当进来的帧没有tag时,就通过这个default id的低四位做为index去查vlan table,找到发送的端口进行发送。同时还可以配置其他寄存器来控制对于不同帧的处理,如可以丢弃没有tag的帧,自动学习功能,是否替换tag等功能。这些都需要仔细阅读芯片手册加上自己的实验才能彻底明白。
还有个实例说明如果对于硬件的操作过程不熟悉就无法发现问题,很多时候会把自己带入死胡同出不来。
当我在MII口打上SV数据的tag后,从uplink口抓包怎么都抓不到打有Sv vlan tag的包,想想arp包应该是rabbit发出来去寻找对方mac的包呀,为什么打不上tag呢?一直怀疑是不是对于vlan配置的理解不对,看是否配置正确,看其他很多寄存器是否有什么影响,查看了很长时间依然是打不上tag。甚至怀疑是否是硬件接口接错了。后来又做了其他实验发现从其他端口可以收到带tag的包,说明对于vlan 配置的理解是没有错的。错误在哪里呢?难道是通过uplink的口5325时又把tag给去掉啦?不可能呀,从来没有配置过uplink的5325呀。后来我通过uplink口访问Sv 抓到Sv发送出来的html包是有Sv tag 的,那为什么arp包没有tag呢?后来终于明白arp包不是rabbit发送出来的,而是FPGA发送出来的,所以就没有打tag包。
底层软件,跟硬件打交道,目的就是控制硬件,所有功能的最终动作都是由硬件来完成的,如果对于硬件的处理过程不是完全的明白的话,那软件再怎么调试也是无能为力的。

 

抱歉!评论已关闭.