一种嵌入式系统中虚拟多个以太网控制器的方法

文档序号:7998297阅读:272来源:国知局
一种嵌入式系统中虚拟多个以太网控制器的方法
【专利摘要】本发明公开一种嵌入式系统中虚拟多个以太网控制器的方法,步骤是:将交换芯片设置为管理模式,使所有来自于交换芯片LAN端口的报文转发至IMP端口;使能交换芯片的IEEE802.1Q?VLAN功能,设置VLAN学习模式为基于MAC和PVID的学习模式;设置交换芯片的单播查找失败转发模式为向LAN端口转发;对于具有N个LAN端口的交换芯片,在交换芯片内部划分N个IEEE802.1Q?VLAN,每个LAN端口分别和IMP端口位于同一个VLAN,其中,N为自然数:将这N个LAN端口的对应的以太网控制器的MAC地址添加到交换芯片的静态地址表中。此方法可降低以太网控制器与CPU之间接口电路设计的复杂度和硬件成本,减少以太网驱动程序设计的难度和时间成本。
【专利说明】-种嵌入式系统中虚拟多个以太网控制器的方法

【技术领域】
[0001] 本发明涉及一种嵌入式系统中使用单个管理型以太网交换芯片虚拟多个以太网 控制器的方法。

【背景技术】
[0002] 对于面向网络应用的嵌入式系统,为了增加网络处理能力,系统一般都配置了多 个独立的以太网控制器,每个以太网控制器通过独立的驱动程序和协议栈进行交互。这种 设计方案在硬件和软件上都有不足之处,具体体现在:
[0003] ( 1)在硬件上,需要考虑每个以太网控制器和CPU之间的电路接口,接口电路复 杂,硬件成本高;
[0004] (2)在软件上,需要为每一个以太网控制器编写驱动程序,如果这些以太网控制器 型号相同,驱动程序代码可以重用,如果型号不同,就必须编写不同的驱动程序,加大了软 件设计的难度和时间成本。


【发明内容】

[0005] 本发明的目的,在于提供一种嵌入式系统中虚拟多个以太网控制器的方法,其虚 拟出的以太网控制器从行为上等同于独立的以太网控制器,降低以太网控制器与CPU之间 接口电路设计的复杂度和硬件成本,减少以太网驱动程序设计的难度和时间成本。
[0006] 为了达成上述目的,本发明的解决方案是:
[0007] -种嵌入式系统中虚拟多个以太网控制器的方法,包括如下步骤:
[0008] ( 1)将交换芯片设置为管理模式,使所有来自于交换芯片LAN端口的报文转发至 MP 端口;
[0009] (2)使能交换芯片的IEEE802. IQ VLAN功能,设置VLAN学习模式为基于MAC和 PVID的学习模式;
[0010] (3)设置交换芯片的单播查找失败转发模式为向LAN端口转发;
[0011] (4)对于具有N个LAN端口的交换芯片,在交换芯片内部划分N个IEEE802. 1Q VLAN,每个LAN端口分别和IMP端口位于同一个VLAN,其中,N为自然数:
[0012] (5)将这N个LAN端口的对应的以太网控制器的MAC地址添加到交换芯片的静态 地址表中。
[0013] 嵌入式系统中的以太网控制器接收到来自IMP端口的以太网报文,根据报文中的 VLAN标签将报文转发给同LAN端口对应的虚拟以太网控制器的驱动程序,具体包括如下内容:
[0014] (a)在操作系统中添加多个以太网设备驱动程序,每个驱动程序和交换芯片的 一个端口相对应;驱动的发送策略为:将协议栈送来的报文打上端口所对应IEEE802. 1Q VLAN的VLAN标签,然后转发给系统原有的以太网控制器驱动程序;驱动的接收策略为:将 系统原有以太网控制器驱动程序转发来的报文去掉IEEE802. IQ VLAN标签后送入协议栈;
[0015] (b)修改系统原有以太网控制器驱动程序的接收策略为:收到的报文不再送入协 议栈,而是根据VLAN标签转发给相应的虚拟以太网控制器驱动程序。
[0016] 采用上述方案后,本发明通过对交换芯片进行适当的配置以及在嵌入式系统中添 加虚拟以太网驱动程序,从嵌入式系统的外部以及从嵌入式系统的角度来看,以太网交换 芯片的端口从行为上等同于独立的以太网控制器,降低以太网控制器与CPU之间接口电路 设计的复杂度和硬件成本,减少以太网驱动程序设计的难度和时间成本。

【专利附图】

【附图说明】
[0017] 图1是本发明中VLAN的划分方法示意图;
[0018] 图2是本发明实施例的系统硬件设计图;
[0019] 图3是本发明的流程图。

【具体实施方式】
[0020] 本发明提供一种嵌入式系统中虚拟多个以太网控制器的方法,包括如下步骤:
[0021] (1)将交换芯片设置为管理模式,使所有来自于交换芯片LAN端口的报文转发至 IMP (Inband Management Port)端口;
[0022] (2)使能交换芯片的IEEE802. IQ VLAN功能,设置VLAN学习模式为基于MAC和 PVID的学习模式,此为现有技术,不再详述;
[0023] (3)设置交换芯片的单播查找失败转发模式为向LAN端口转发;
[0024] (4)对于具有N (N为自然数)个LAN端口的交换芯片,在交换芯片内部划分N个 IEEE802. IQ VLAN,使得每个LAN端口分别和MP端口位于同一个VLAN,LAN端口之间相互 隔尚,VLAN的划分方法可参看图1所不;
[0025] (5)将这N个LAN端口的对应的以太网控制器的MAC地址添加到交换芯片的静态 地址表中。
[0026] 嵌入式系统中的以太网控制器接收到来自MP端口的以太网报文,根据报文中的 VLAN标签将报文转发给同LAN端口对应的虚拟以太网控制器的驱动程序。由于交换芯片 在内部划分了 IEEE802. IQ VLAN,以太网报文在从LAN端口转发至MP端口进入CPU的过 程中会被交换芯片打上IEEE802. IQ VLAN标签,这种报文若想被协议栈正确识别,必须去 掉VLAN标签。同样地,操作系统若想通过MP端口向LAN port转发报文,也必须添加相应 VLAN的标签。这就需要修改系统中原有的以太网驱动程序,同时添加虚拟以太网驱动程序, 具体做法如下(如图3所示):
[0027] (1)在操作系统中添加多个以太网设备驱动程序,每个驱动程序和交换芯片的一 个端口相对应。驱动的发送策略(协议栈通过驱动程序将以太网报文送出系统称为发送 策略)为:将协议栈送来的报文打上端口所对应IEEE802. IQ VLAN的VLAN标签,然后转发 给系统原有的以太网控制器驱动程序。驱动的接收策略(以太网控制器收到报文,将报文 传递给驱动程序称为接收策略)为:将系统原有以太网控制器驱动程序转发来的报文去掉 IEEE802. IQ VLAN标签后送入协议栈。
[0028] (2)修改系统原有以太网控制器驱动程序的接收策略为:收到的报文不再送入协 议栈,而是根据VLAN标签转发给相应的虚拟以太网控制器驱动程序。
[0029] 下面以一个具体的嵌入式系统为例子来说明整个实施过程。该嵌入式系统的CPU 采用freescale公司的P1020芯片,交换芯片采用fcoadcom公司的BCM53101M芯片,操作 系统采用linux操作系统,系统硬件设计图如图2。在本系统中,BCM53101M交换芯片将被 虚拟成6个独立的以太网控制器。
[0030] 1、以下对交换芯片进行相关设置的具体步骤进行说明。步骤1 :复位交换芯片,复 位后交换芯片的设置都被置为默认设置。步骤2:将MP端口速率设置为1000Mbps。由于 端口 0-端口 5的端口速率均为100Mbps,这6个端口的报文转发到MP端口会导致MP端 口的速率达到600Mbps,因此必须将MP端口速率设置为1000Mbps才能匹配速率。步骤3 : 在交换芯片内部划分6个独立的IEEE802. IQ VLAN,每个LAN端口和MP端口位于一个VLAN 域内,实现LAN端口之间的隔离。步骤4 :设置交换芯片单播查找失败的转发模式为向LAN 端口转发,添加6个端口的MAC地址到交换芯片静态地址表中,解决了交换芯片内部MAC地 址老化后学习不到端口 0-端口 5的MAC地址导致报文无法转发的问题。
[0031] 2、下面具体说明系统中原有的以太网驱动程序的接收策略如何修改,添加的虚拟 以太网驱动程序如何工作。
[0032] 系统中原有的以太网驱动程序的接收策略为:
[0033] (1) eTSEC收到以太网报文;
[0034] (2)判断报文是否合法,如果合法,转到(3),不合法转到(4);
[0035] (3 )将报文传递给上层协议栈;
[0036] (4)结束。
[0037] 系统中原有的以太网驱动程序修改后的接收策略为:
[0038] (1) eTSEC收到以太网报文;
[0039] (2)判断报文是否带有IEEE802. IQ VLAN标签,如果是,根据VLAN ID将报文转发 给相应的虚拟设备驱动程序,转到(5);如果不是,转到(3);
[0040] (3)判断报文是否合法,如果合法,转到(4),不合法转到(5);
[0041] (4)将报文传递给上层协议栈;
[0042] (5)结束。
[0043] 虚拟以太网控制器驱动程序的接收策略为:
[0044] (1)虚拟以太网控制器收到eTSEC转发来的以太网报文;
[0045] (2)去掉报文中的IEEE802. IQ VLAN标签;
[0046] (3)判断报文是否合法,如果合法,转到(4),不合法转到(5);
[0047] (4)将报文传递给上层协议栈;
[0048] (5)结束。
[0049] 虚拟以太网控制器驱动程序的发送策略为:
[0050] (1)虚拟以太网控制器收到上层协议栈发来的报文;
[0051] (2)给报文加上虚拟以太网控制器对应VLAN域的IEEE802. IQ VLAN标签;
[0052] (3)将报文转发给以太网控制器eTSEC ;
[0053] (4)结束。
[0054] 以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是 按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围 之内。
【权利要求】
1. 一种嵌入式系统中虚拟多个以太网控制器的方法,其特征在于包括如下步骤: (1) 将交换芯片设置为管理模式,使所有来自于交换芯片LAN端口的报文转发至MP端 Π ; (2) 使能交换芯片的IEEE802. IQ VLAN功能,设置VLAN学习模式为基于MAC和PVID的 学习模式; (3) 设置交换芯片的单播查找失败转发模式为向LAN端口转发; (4) 对于具有N个LAN端口的交换芯片,在交换芯片内部划分N个IEEE802. IQ VLAN, 每个LAN端口分别和IMP端口位于同一个VLAN,其中,N为自然数: (5) 将这N个LAN端口的对应的以太网控制器的MAC地址添加到交换芯片的静态地址 表中。
2. 如权利要求1所述的一种嵌入式系统中虚拟多个以太网控制器的方法,其特征在 于:嵌入式系统中的以太网控制器接收到来自MP端口的以太网报文,根据报文中的VLAN 标签将报文转发给同LAN端口对应的虚拟以太网控制器的驱动程序,具体包括如下内容: (a) 在操作系统中添加多个以太网设备驱动程序,每个驱动程序和交换芯片的一个端 口相对应;驱动的发送策略为:将协议栈送来的报文打上端口所对应IEEE802. IQ VLAN的 VLAN标签,然后转发给系统原有的以太网控制器驱动程序;驱动的接收策略为:将系统原 有以太网控制器驱动程序转发来的报文去掉IEEE802. IQ VLAN标签后送入协议栈; (b) 修改系统原有以太网控制器驱动程序的接收策略为:收到的报文不再送入协议栈, 而是根据VLAN标签转发给相应的虚拟以太网控制器驱动程序。
【文档编号】H04L12/02GK104104518SQ201310127678
【公开日】2014年10月15日 申请日期:2013年4月12日 优先权日:2013年4月12日
【发明者】姜晓光, 胡绍谦, 王文龙, 林青, 尤小明, 张玉健, 代小翔, 丁浩川, 李大鹏, 杨梅强, 陈雄, 程夏 申请人:南京南瑞继保电气有限公司, 南京南瑞继保工程技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1