7.5 二层交换机代码实现
推荐给好友
打印
加入收藏
更新于2008-10-10 10:48:21

本节我们就具体来实现二层交换机。阅读本章后,读者将更强烈的意识到任何嵌入式设备的开发(包括通信设备),其实就是读写目标芯片的寄存器的内容(更直接一点就是读写片上内存的数据)。也就是硬件厂商为我们留出的编程接口。以ZL50408为例,读者不必关心某种机制(QoS,流控等)是如何实现的,我们要做的只是读或写ZL50408的寄存器,来时这种机制执行或关闭。就像开关一样,要么打开这项功能,要么关闭这项功能。真正要理解二层交换机各种算法、机制和功能的实现,读者要去看芯片的核的实现(假设是众多VHDL或Verilog代码)。
7.5.1基本数据结构和功能函数实现

/*****************************************************************

/*函数名称:hw_read_regU32

/*函数功能:读取指定寄存器的无符号32位数

/*参数:addr16位地址

/*           pData:指向存储读出的32位数据的指针

/*返回值:无

/*作者:李朋铜

/*完成时间:2008-4

/*****************************************************************/

void hw_read_regU32 (U16 addr, PU32 pData)

{

    //禁中断,防止数据使用前被破坏

     CriticalEnter();

     //选取低8地址

     RegAddrLow = (U8)(addr);

    //选取高8地址

     CpuRegAddrHi = (U8)(addr >> 8);

    //读第byte 1

    *((PU8)pData) = *gCpuRegcon;

// 读第byte 2

 

/*****************************************************************

/*相应的从寄存器读取8位、16位无符号数只需分别读取1byte2byte即可

/*****************************************************************/

 

    *((PU8)pData + 1) = *gCpuRegcon;

    //读第byte 3

    *((PU8)pData + 2) = *gCpuRegcon;

    //读第byte 4

    *((PU8)pData + 3) = *gCpuRegcon;

  //使能中断 

     CriticalExit();

}

7.5.2总体初始化流程

         

主函数的实现

void main (void)

{

    //初始化二层交换设置

    g_pfnLinkChangeFunc = FailOver_PROTECT;

 

//板卡启动

BoardBoot();

         

          while (1) {

        if (Login()) {

               goShowLogin();

        }

    }

}

 

7.5.3   链路失效转移配置
链路变化失效转移在许多以太网交换机中是非常必要的。侦听到链路失效并且将交换机的链路倒换到冗余链路,这样可以降低丢包率和链路down的时间。ZL50408提供了硬件机制来侦测链路失效和恢复链路。
链路失效在微秒级就能被ZL50408侦测到。ZL50408提供了自动安全链路失效转移。如果在trunk group中的一个端口down掉,ZL50408能够将流量平均到其他端口上。
7.5.3.1 Link Heart Beat机制

ZL50408提供LINK HERT BEAT(LHB)机制。它在两个MAC之间传送。时间参数会在发送端和接收端配置。在发送端,MAC将会监视发送过程。如果在发送包的过程中,无应答时间超过set period的一半,一个LHB包将会送到它的链路的另一端的设备上。在接收端,MAC将会监视接收过程。如果接收包的过程中,同样的如果无应答时间超过set period的一半,他将会向向CPU发出告警。如果链路正常工作并且链路的另一端的设备的LHB协议开启,且计时器没有超过set period的一半,接收端MAC会将LHB包丢弃。LHB包的格式如下所示:



<<上一节   下一节>>

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.