
PCIe驱动开发
danylin
这个作者很懒,什么都没留下…
展开
-
PCIe驱动开发-BOIS
BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作(当然,也包括我们的PCI设备),由于商业上的原因,Phoenix等厂商的BIOS代码需要授权协议,在此,我们以另外一个款开源BIOS(openbios)为例,来剖析BIOS中,我们的PCIe设备是如何被找到以及初始化的。PCI设备的扫描是基于深度优先搜索算法(DFS:Depth Firs转载 2013-10-09 13:56:59 · 2773 阅读 · 0 评论 -
PCIe驱动开发-驱动加载
上篇中,我们探讨了PCIe设备是如何在Bios中被初始化的,Bios中各种准备工作做好后,就开始引导装载操作系统,系统的控制权移交给操作系统,操作系统中也要对系统中各PCI设备进行扫描以及初始化(和上文中提到的Bios对PCI设备的枚举和配置一样),事实上,早期的操作系统也是通过Bios调用的方式来获取系统PCI设备信息的,只不过现在变成亲自动手了。总体来说,操作系统对PCI的枚举以及初始化的过程转载 2013-10-09 13:58:49 · 3000 阅读 · 0 评论 -
PCIe驱动开发-设备打开/关闭
上篇中,我们从驱动层面上探讨了系统是如何为我们PCIe设备分配资源以及如何启动它的。现在的问题是,我们的上层软件如何才能对我们的设备进行访问呢。这其中首先涉及的就是设备的开打与关闭。1:设备打开针对本次PCI设备,上层程序打开设备函数的具体代码如下。[cpp] view plaincopyprint?/**********************转载 2013-10-09 14:01:05 · 3413 阅读 · 0 评论 -
PCIe驱动开发-寄存器读写
2014年1月微软MVP申请开始啦! 优快云社区中秋晒福利活动正式开始啦! 专访钟声:Java程序员,上班那点事儿 独一无二的职位:开源社区经理 “说说家乡的互联网”主题有奖征文 PCIe设备漫游记----寄存器读写篇分类: PCIe设备漫游记 2012-07-16 00:06 1033人阅读 评论(6)转载 2013-10-09 14:01:55 · 3968 阅读 · 0 评论 -
利用WinDriver开发PCI设备驱动程序
摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。WinDriver是一套设备驱动程序开发组件,它的目的就是方原创 2013-10-12 12:00:30 · 6565 阅读 · 1 评论 -
基于FPGA的PCIE总线扩展卡的设计
PCIe(PCI express)是用来互联诸如计算机和通信平台应用中外围设备的第三代高性能I/0总线。PCIE体系结构继承了第二代总线体系结构最有用的特点,采用与PCI相同的使用模型和读/写通信模型,支持各种常见的事务。其存储器、I/0和配置地址空间与PCI的地址空间相同。由于地址空间模型没有变化,所以现有的OS和驱动软件无需进行修改就可以在PCIE系统上运行。 PCIE是串行协议,与原有原创 2013-10-26 12:05:40 · 3820 阅读 · 0 评论 -
PCI设备的配置空间
在一个具体的处理器应用中,PCI设备通常将PCI配置信息存放在E2PROM中。PCI设备进行上电初始化时,将E2PROM中的信息读到PCI设备的配置空间中作为初始值。这个过程由硬件逻辑完成,绝大多数PCI设备使用这种方式初始化其配置空间。读者可能会对这种机制产生一个疑问,如果系统软件在PCI设备将E2PROM中的信息读到配置空间之前,就开始操作配置空间,会不会带来问题?因为此时PCI设备的初始原创 2013-10-21 12:06:42 · 2566 阅读 · 0 评论 -
WinDriver高级编程
WinDriver高级编程1、DMA 传输 使用DMA传输有两种方式:连续缓冲DMA 、离散DMA。离散DMA的效率比连续DMA 高,这种方式下Pci设备可以直接从不同的地址拷贝内存块,物理内存存在碎片,虚拟内存连续就可以和用户的缓冲区进行数据的交换。如果你的设备不支持离散DMA ,你就必须分配连续的物理内存给DMA 传输,然后再拷贝到你的数据缓冲区。不同的PCI设备,DMA 编程原创 2013-10-22 14:53:16 · 4562 阅读 · 0 评论