broadcom Knet 功能调试记录

来源:互联网 发布:大连住电软件 编辑:程序博客网 时间:2024/06/15 14:50

                       broadcom  Knet 功能调试记录

broadcom部分交换芯片集成了CPU,CPU模块和交换模块通过DMA通道进行数据的通信,broadcom把该通道通过knet虚接口的方式提供CPU的网口功能,和sdk提供的rxtx模块功能有下面区别:

  rxtx功能只是一种发送和接收报文的处理方式,最终仍是调用驱动层面的发送和接收接口。Knet虚接口相当于底层驱动,把DMA通道封装成一个接口的形式,屏蔽上层应用感知底层DMA方式实现收发包。

 

Knet在应用上需要在make.local文件中定义FEATURE_LIST=KNET,把knet功能开关打开,KNET驱动的实现在sdk的kernel层,源码路径:\systems\linux\kernel\modules\bcm-knet\bcm-knet.c

对于BCM 534XX的greyhound系列芯片,在\systems\linux\user\iproc-3\下进行编译,编译结果会生成linux-kernel-bde.ko,linux-user-bde.ko, linux-uk-proxy.ko, linux-bcm-knet.ko这几个ko文件和bcm.user执行文件;

生成的几个ko文件和bcm.user文件加载到目标板中,在linux系统命令行下先对几个模块使用mknod添加相应的字符设备文件;然后进行insmod,处理如下:

 

mknod /dev/linux-kernel-bde c 125 0

mknod /dev/linux-user-bde c 125 0

mknod /dev/linux-uk-proxy. c 125 0

mknod /dev/linux-kernel-bde c 125 0

 

insmod linux-kernel-bde.ko

insmod linux-user-bde.ko

insmod linux-uk-proxy.ko

insmod linux-bcm-knet.ko use_rx_skb=”1” num_rx_prio=”2” mac_addr=”00:11:22:33:44:55”rx_buffer_size=”9238” rcpu_mode=”1” rcpu_dmac=”00:01:02:03:04:05” rcpu_smac=”00:00:33:44:55:66”rcpu_ethertype=”de08” rcpu_vlan=”4094”

 

安装好驱动模块后,运行应用程序,如bcm.user;

在bcm shell命令行界面下执行下面命令:

sc arprequersttocpu=1   //设置arp请求报文送cpu处理

sc arpreplytocpu=1      //设置arp应答报文送cpu处理

sc l3egressmode=1      //启用三层出接口管理

l3 intf add vlan=1 mac=00:11:22:33:44:55 intf=3  //三层出接口封装信息

l3 egrss add intf=3 copytocpu=true   //三层接口object信息创建

l3 l3table add ip 192.168.4.10 intf=$egr_object_id  //添加一条静态表项

knet netif create type=mete vlan=0 ifname=vintf0 rcpu=yes //创建knet虚接口

knet fileter create desttype=netif destid=1 prio=127 striptag=no //创建knet虚接口

 

使用bcm  提供的rx /tx应用验证收发包,使用pc连接网口进行ping验证收发包;

 

需要注意的是不同支持knet的芯片对应的cpu报文头格式可能是不相同的,移植代码时要注意;

原创粉丝点击