- 博客(13)
- 资源 (17)
- 收藏
- 关注
原创 基于FPGA的PCIE总线扩展卡的设计
PCIe(PCI express)是用来互联诸如计算机和通信平台应用中外围设备的第三代高性能I/0总线。PCIE体系结构继承了第二代总线体系结构最有用的特点,采用与PCI相同的使用模型和读/写通信模型,支持各种常见的事务。其存储器、I/0和配置地址空间与PCI的地址空间相同。由于地址空间模型没有变化,所以现有的OS和驱动软件无需进行修改就可以在PCIE系统上运行。 PCIE是串行协议,与原有
2013-10-26 12:05:40 3680
原创 WinDriver高级编程
WinDriver高级编程1、DMA 传输 使用DMA传输有两种方式:连续缓冲DMA 、离散DMA。离散DMA的效率比连续DMA 高,这种方式下Pci设备可以直接从不同的地址拷贝内存块,物理内存存在碎片,虚拟内存连续就可以和用户的缓冲区进行数据的交换。如果你的设备不支持离散DMA ,你就必须分配连续的物理内存给DMA 传输,然后再拷贝到你的数据缓冲区。不同的PCI设备,DMA 编程
2013-10-22 14:53:16 4427
原创 PCI设备的配置空间
在一个具体的处理器应用中,PCI设备通常将PCI配置信息存放在E2PROM中。PCI设备进行上电初始化时,将E2PROM中的信息读到PCI设备的配置空间中作为初始值。这个过程由硬件逻辑完成,绝大多数PCI设备使用这种方式初始化其配置空间。读者可能会对这种机制产生一个疑问,如果系统软件在PCI设备将E2PROM中的信息读到配置空间之前,就开始操作配置空间,会不会带来问题?因为此时PCI设备的初始
2013-10-21 12:06:42 2482
原创 利用WinDriver开发PCI设备驱动程序
摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。WinDriver是一套设备驱动程序开发组件,它的目的就是方
2013-10-12 12:00:30 6434 1
原创 QT小知识
一、QT调用动态库1.修改QT项目.pro文件,添加 LIBS+ = -L /opt/wanrcv/usr/lib -lgif (库路径 + 库名)2.在源码添加库头文件,ok,可以调用GIF编码库函数了。
2013-10-12 11:36:01 797
原创 Linux下静态库编译
Linux下动态库文件的扩展名为".so"(Shared Object)。按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号)。这样,线程函数库被称作libthread.so。静态库的文件名形式是libname.a。共享archive的文件名形式是libname.sa。共享archive只是一种过渡形式,帮助人们从静态库转变到动态库。 本文仅以简单的例子介
2013-10-11 12:04:41 1505
转载 PCIe驱动开发-寄存器读写
2014年1月微软MVP申请开始啦! CSDN社区中秋晒福利活动正式开始啦! 专访钟声:Java程序员,上班那点事儿 独一无二的职位:开源社区经理 “说说家乡的互联网”主题有奖征文 PCIe设备漫游记----寄存器读写篇分类: PCIe设备漫游记 2012-07-16 00:06 1033人阅读 评论(6)
2013-10-09 14:01:55 3850
转载 PCIe驱动开发-设备打开/关闭
上篇中,我们从驱动层面上探讨了系统是如何为我们PCIe设备分配资源以及如何启动它的。现在的问题是,我们的上层软件如何才能对我们的设备进行访问呢。这其中首先涉及的就是设备的开打与关闭。1:设备打开针对本次PCI设备,上层程序打开设备函数的具体代码如下。[cpp] view plaincopyprint?/**********************
2013-10-09 14:01:05 3294
转载 PCIe驱动开发-驱动加载
上篇中,我们探讨了PCIe设备是如何在Bios中被初始化的,Bios中各种准备工作做好后,就开始引导装载操作系统,系统的控制权移交给操作系统,操作系统中也要对系统中各PCI设备进行扫描以及初始化(和上文中提到的Bios对PCI设备的枚举和配置一样),事实上,早期的操作系统也是通过Bios调用的方式来获取系统PCI设备信息的,只不过现在变成亲自动手了。总体来说,操作系统对PCI的枚举以及初始化的过程
2013-10-09 13:58:49 2957
转载 PCIe驱动开发-BOIS
BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作(当然,也包括我们的PCI设备),由于商业上的原因,Phoenix等厂商的BIOS代码需要授权协议,在此,我们以另外一个款开源BIOS(openbios)为例,来剖析BIOS中,我们的PCIe设备是如何被找到以及初始化的。PCI设备的扫描是基于深度优先搜索算法(DFS:Depth Firs
2013-10-09 13:56:59 2744
原创 FPGA开发PCIe
一、PCIe简介PciE是pci express的简称,是为了解决pci带宽限制而开发的新技术。并行信号由于受信号串扰的影响,带宽做到pcix 64bit位宽x133M基本已经到了瓶颈了,要进一步提高总线带宽一种新技术迫在眉睫,PCIE就是在这种背景下提出的。pcie发展到今天已经有了三个版本,分别被称为gen1,gen2,gen3即一代,二代,三代。截至目前二代pcie已经在计算
2013-10-08 17:42:30 9629 2
转载 PCI设备驱动知识点
一、PCI简介 PCI是一种外设总线规范。我们先来看一下什么是总线:总线是一种传输信号的路径或信道。典型情况是,总线是连接于一个或多个导体的电气连线,总线上连接的所有设备可在同一时间收到所有的传输内容。总线由电气接口和编程接口组成。本文讨论Linux 下的设备驱动,所以,重点关注编程接口。 PCI是Peripheral Component Interconnect(外围设备互联
2013-10-08 15:21:33 1843
转载 PCI驱动的注册和初始化
1. 总线、设备和驱动1.1 简单介绍 Linux设备模型中三个很重要的概念就是总线、设备和驱动,即bus,device和driver。它们分别对应的数据结构分别为struct bus_type,struct device和struct device_driver。 总线是处理器与一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连。在最底层,Lin
2013-10-08 14:53:23 3028
linux驱动开发中文版
2013-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人