NetFPGA软件小结(v1.0)

上层软件小结
V1.0
版本号V 1.0
日期2009.9.28
起草人王明明
信息简单介绍了软件各个组成部分。通过
一些简单的实验了解用户编程程序的
使用,实现对寄存器的读写控制,对
各个端口发包收包的控制;路由器工
作需要的相关协议软件部分的功能的
简单介绍;JAVA界面的简单介绍。修改人
修改信息
目录
一.概述 (4)
二.具体的软件功能介绍 (4)
2.1.用户编程C语言部分 (4)
英译中
2.1.1.kernel (4)
2.1.2mon (5)
2.1.3 .用户编程程序 (5)
2.2.SCONE(Software Component Of NetFPGA) 部分 (10)
2.3. 上层java图形界面部分 (11)
三.还存在的问题 (12)
一.概述
上层软件主要是上层的用户对pci设备(即NetFPGA)的读写操作,路由协议部分(即SCONE软件部分)和路由器的监控配置软件(即使java所写的路由器监控界面部分)三个部分。PCI设备读写操作主要包括对各个端口的发包收包控制,硬件上寄存器的读写操作。上层路由协议软件部分包括各种路由器件通讯的相关协议。java编写的程序部分对路由器的工作情况的监控和对路由器的配置操作。
二.具体的软件功能介绍
2.1.用户编程C语言部分
上层的软件中主要的用户编程C语言部分在目录/NF2/lib/C下
它主要有以下几个目录,主要分了两大类
底层的支持函数:
|common
|kernel
用户编程的程序大同大学工学院
|download
|nic
|reg_access
|reg_lib
|tools
|router
|switch
2.1.1.kernel
kernel部分是底层驱动部分,直接编译到了系统内核模块中去,这个部分我们作为用户编程,直接对PCI设备作读写操作,在对底层的CPCI芯片电路部分不做修改的前提下,可以不用去修改这个部分的代码,只需要在顶层的用户层次对PCI设备(即NetFPGA网卡设备)作读写操作即可。读写操作包括
对寄存器的读写操作,还有收包发包这两大类的操作。
针对内核模块的编程,在前期的项目开发期间是不需要作大的改动的,先期的调试过程中可能会根据需要加一些例如打印某些字符串这样的简单操作。
2.1.2mon
common这个部分主要是针对用户编程提供一些基本的支持。
主要有下面几个函数:
static int readRegNet(struct nf2device *nf2, unsigned reg, unsigned *val);
static int readRegFile(struct nf2device *nf2, unsigned reg, unsigned *val);
北大投毒static int writeRegNet(struct nf2device *nf2, unsigned reg, unsigned val);
static int writeRegFile(struct nf2device *nf2, unsigned reg, unsigned val);
通过调用ioctl()函数完成对寄存器的读写操作。
这一部分的代码也不需要作修改,可以调用完成对寄存器的读写操作即可。
2.1.3 .用户编程程序
可以查看到主要的几个用户态的main()(在vim编辑器下使用命令 tag main查看)主要有:
# pri kind tag              文件
1 F  f    main              download/nf2_download.c
int main(int argc, char **argv) {
2 F    f main nic/counterdump.c
int main(int argc, char *argv[])
3 F  f    main              reg_access/regread.c
int main(int argc, char *argv[])
4 F  f    main              reg_access/regwrite.c
int main(int argc, char *argv[])
新疆基础教育资源公共服务平台
5 F  f    main              reg_lib/client_test.c
外包培训
int main(int argc, char *argv[])
6 F    f main reg_lib/reg_proxy_server.c
南猴王int main(int argc, char** argv) {
7 F    f main router/cli.c
int main(int argc, char *argv[])
8 F    f main router/regdump.c
int main(int argc, char *argv[])
9 F    f main router/show_stats.c
int main(int argc, char *argv[])
10 F    f main switch/regdump.c
int main(int argc, char *argv[])
11 F    f main switch/show_stats.c
int main(int argc, char *argv[])
12 F    f main tools/nf2_info/nf2_info.c
int main(int argc, char *argv[])
13 F    f main tools/send_pkts/send_pkts.c
int main(int argc, char *argv[])
主要在由以下几个部分构成,这些文件夹下的各个程序都有自己独立的main()函数,可以独立的编译运行。
(1).download
download部分是作电路的下载使用的程序。该程序使用来将*.bin或者*.bit文件下载到NetFPGA板子上的CNET或者是CPCI芯片中去(CNET是Virtex 2 Pro,CPCI 是 Spartan 2)。
(2).nic
nic部分是用来读取4个mac口的一些发包收包等信息
代码内部主要就是做寄存器的读操作,然后打印显示,典型的代码段如下所示。
readReg(&nf2, RX_QUEUE_3_NUM_PKTS_STORED_REG, &val);
printf("Num pkts received on port 3:          %u\n", val);
这个程序执行的时候就是
[root@localhost nic]# make
[root@localhost nic]# ./counterdump
执行的结果就是显示各个端口的发包收包相关信息:

本文发布于:2024-09-21 16:44:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/349580.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:部分   用户   编程   软件   读写操作   程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议