1. 适用范围

本方法适用于SylixOS AMP下配置有虚拟网络设备的跨网段通信。内核版本:1.7.3,硬件平台:TMDSEVM6678LE。

  1. 背景

在近期构建的DSP6678工程中,0核运行SylixOS lite版,1-7核运行SylixOS动态加载版。其中只有0核能够使用有线网络,1-7核无法使用,使得无法通过网络调试和动态加载应用程序。然而每个核配置了虚拟网络,该虚拟网络基于共享内存实现。此时,需要配置网络,使得PC端能够通过DSP板卡上的有线网口与所有核通信。

  1. 网络拓扑图

图 3‑1是PC与TMS320C6678的网络拓扑图

SylixOS AMP下跨网段通信

 

                                                                                              图 3‑1 网络拓扑图

TMS320C6678:

虚拟网卡se1: ip=192.168.3.201

虚拟网卡se2: ip=192.168.3.200

物理网卡en1: ip=192.168.1.230

PC:

物理网卡enet1: ip=192.168.1.200

 

  1. 网络配置

总体来说只需要设置两种配置即可:

  1. 配置网关;
  2. 开启CORE0转发。

详细配置如下:

  1. PC端:

enet1配置网关为en1 ip=192.168.1.230;

此时可以ping通se2。如果pc端存在同时使用多网卡且其他网卡设置了网关,此时会造成网络冲突。可以手工添加一条永久路由:route -p add 192.168.3.0 mask 255.255.255.0 192.168.1.230 metric 3 (删除:route delete 192.168.3.0)

                                                     SylixOS AMP下跨网段通信

                                                                                            图 4‑1 pc ping se2

 

  1. CORE0:

ipforward 1

使能core0转发,当网卡收到目的地址非本网卡的报文后,将找到合适路由转发报文。如果此时只配置了网关,pc端enet1的报文只能到达se2,无法到达se1。

  1. CORE1:

ifconfig se1 gateway 192.168.3.200

配置se1的网关,将其配置成se2的ip:192.168.3.200 这样,当SylixOS_1需要上PC发报文时,它就会先将报文发送给se2。

route add default dev se1

core1上,需要设置默认设备,只有设置好默认网络设备后,默认网关才会开启,否则,ping的时候会一直报主机不可达错误。

 

配置完成后,通过PC端可以ping通C6678 CORE1-CORE7的虚拟网卡se1,也可以通过telnet登录。

                                                       SylixOS AMP下跨网段通信

                                                                                   图 4‑2 pc ping se1

值得注意的是1.7.3内核虚拟网卡驱动代码中修改netdev的校验和的标志位。即NETDEV_CHKSUM_ENABLE_ALL   0x00ff改为0xffff,从而可以产生IPICMPTCP等协议的头部校验和,实现与外部设备通信。

相关文章: