1. 适用范围
    本方法适用于SylixOS AMP下配置有虚拟网络设备的跨网段通信。内核版本:1.7.3,硬件平台:TMDSEVM6678LE。
  2. 背景
    在近期构建的DSP6678工程中,0核运行SylixOS lite版,1-7核运行SylixOS动态加载版。其中只有0核能够使用有线网络,1-7核无法使用,使得无法通过网络调试和动态加载应用程序。然而每个核配置了虚拟网络,该虚拟网络基于共享内存实现。此时,需要配置网络,使得PC端能够通过DSP板卡上的有线网口与所有核通信。
  3. 网络拓扑图
    图 3 1是PC与TMS320C6678的网络拓扑图
    SylixOS AMP下跨网段通信_第1张图片
    图 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

  4. 网络配置
    总体来说只需要设置两种配置即可:
    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下跨网段通信_第2张图片
    图 4 1 pc ping se2

2、 CORE0:
ipforward 1
使能core0转发,当网卡收到目的地址非本网卡的报文后,将找到合适路由转发报文。如果此时只配置了网关,pc端enet1的报文只能到达se2,无法到达se1。
3、 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下跨网段通信_第3张图片

                                 4 2 pc ping se1

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