NetFPGA驱动程序结构.pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
驱动程序的结构 作者: 关键字: 4.1 驱动程序的结构 驱动是什么? 一个与设备打交道的程序。 驱动如何与设备通信? 依赖于各种功能函数和系统调用。 4.1.1 驱动概述 作为一个 linux 设备驱动程序开发人员,你需要的是了解如 何与许多的内核子系统一起工作。 《LINUX 设备驱动程序》 Linux 设备驱动程序是 linux 操作系统的重要组成部分,玩 转驱动程序的前提是玩转操作系统,当然现在大家开发一般都 是用到什么看什么,这也学习驱动开发的捷径。 笔者将要阐述的是自己在二次开发过程中阅读和修改驱动 程序的一点笔记:Reference Router 已有的驱动程序架构、应用 方法以及对最初设计的一些猜想。在这里,笔者试图让读者能 够理解驱动上层的软件和下层的硬件设备是如何协同工作的。 我们都知道,驱动程序在操作系统中扮演了重要的角色, 它将硬件设备的各种细节隐藏起来,提炼出一个统一的接口面 对用户。一般来讲,至少应该提供如下几个入口函数: 引导过程调用的初始化函数 打开和释放函数 用于数据传输的读写函数 中断处理函数 I/O 控制函数 对于大多数开发人员来说,NetFPGA 已有的驱动程序完全 可以满足设计的需要,不过,熟悉驱动程序的工作方式对硬件 开发也是很有益处的。下图就是 NetFPGA 驱动程序和应用软件 的架构。 根据功能与权限的不同,操作系统空间划分为用户空间和 系统空间,我们的应用程序都运行在用户空间,操作系统内核 则运行在系统空间。驱动程序大多运行在系统 空间,直接控制 和操作硬件设备,在用户空间编写驱动程序的难度会低一些, 但有很多缺陷,比如中断不可用、内存映射后才能直接访问内 存、响应时间慢等,还有 用户空间不能直接处理网络接口等重 要设备。 NetFPGA 板卡通过 pci 接口与主机通信和交换 packets ,驱 动程序完成对板卡的控制以及数据传输。比如应用软件通过驱 动程序来配置板卡里面的寄存器,设定各种功能参数,通过 dma 传输来完成数据包的发送和异常包的接收。 4.1.2NetFPGA 驱动简介 NetFPGA 目前提供Linux 和 Windows 两个平台上的驱动, 笔者主要的工作都是在 Linux 平台上完成的,对 Windows 平台 也不熟悉,因此 将在本节详细阐述 NetFPGA Linux 驱动程序的 实现,介绍其工作原理以及程序中使用的关键函数。我们可以 在 NF/lib/C 目录下看到NetFPGA 驱动程序的源代码文件,打开 C 文件夹,如图所示。 各个文件夹的内容介绍如下: common 下是一些基于驱动程序的实用函数,上层应用软 件通过调用这些函数来操控硬件设备,包含的文件有 nf2util.c 、util.c 、reg_defines.h 及 nf2.h 等,在 节将会作 详细介绍。 kernel 下是驱动程序文件,包含的文件有 nf2main.c 、 nf2_control.c 、nf2_user.c 及 nf2util.c 等。 其 他文件夹下是一些与应用相关的 C 程序:download 中 的代码用于将配置文件下载到FPGA 中,有一个源码文件 nf2_download.c ;nic 中的代码用于统计NetFPGA 四个端 口的packets ,比如接收和丢弃的packets 数目、接收的 字节数目和 端口发送的 packets 数目等,有一个源码文 件 counterdump.c ;reg_access 下是读写寄存器的示例, 有两个源码文件 regread.c 和 regwrite.c ;router 下是一些

文档评论(0)

nnh91 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档