2011年8月24日

PCI Express设备驱动 (9,用户态API)

摘要: 提供给用户态程序使用的API函数:/******* api.h *******/#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <fcntl.h>#define u32 unsigned intint PcieOpen();u32 PcieWrite(int fd, void* src_addr, u32 ddr2_offset, u32 num_bytes);u32 PcieRead(int fd, void* dst_addr, u32 ddr2_of 阅读全文

posted @ 2011-08-24 19:54 zzwworld 阅读(1591) 评论(0) 推荐(1)

PCI Express设备驱动 (8,驱动的编译、安装、卸载)

摘要: 1、编译obj-m := card_driver.oKERNELDIR := /lib/modules/2.6.35.6-45.fc14.i686/build //Linux内核函数头文件或者内核源码所在文件PWD := $(shell pwd)all: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean编译生成的以.ko为后缀的文件,是驱动模块。2、加载驱动模块sudo insmod card_driver.ko 所有已经注册(即已经加载了驱动程序)的硬件设备... 阅读全文

posted @ 2011-08-24 17:16 zzwworld 阅读(2454) 评论(0) 推荐(0)

PCI Express设备驱动 (7,linux对于多个MSI中断向量的支持)

摘要: 从Linux2.6.30内核版本开始,Linux增加了对于请求多个MSI中断向量号的支持。下面的代码来自Linux2.6.38内核。(不同的cpu对MSI多中断的支持不尽相同,通过下面对Linux2.6.38内核源码的追溯分析,最终可以看到X86处理器不支持MSI多中断!!!)申请多个多个MSI中断向量号的函数为int pci_enable_msi_block(struct pci_dev *dev, unsigned int nvec);下面没有标志出处的源码都出自文件linux-2.6.38.6\drivers\pci\msi.c/** * pci_enable_msi_block - c 阅读全文

posted @ 2011-08-24 12:32 zzwworld 阅读(4284) 评论(0) 推荐(0)

导航