linux之pcie驱动

此项目是linux之pcie驱动开发。pcie是INTEL提出的新一代的总线接口,目前普及的PCIE 3.0的传输速率为8GT/s。pcie插槽是可以向下兼容的,比如PCIE 1X接口可以插4X、8X、16X的插槽上。实现基本的pcie驱动程序,实现以下模块:初始化设备、设备打开、数据读写和控制、中断处理、设备释放、设备卸载。本程序适合pcie驱动开发通用调试的基本框架,对于具体pcie设备,需要配置相关寄存器才可以使用!

应用介绍

启动dma的读写(read和write函数).
static struct file_operations hello_fops = {
 .owner     =  THIS_MODULE,    
 .open     =  hello_open,     
 .release   =  hello_close,
 .unlocked_ioctl =  hello_unlocked_ioctl,
};
static int hello_drv_init(void)
{
 int ret;
 ret = pci_register_driver(&hello_driver);
 if (ret < 0) {
  printk("failed: pci_register_driver\n");
  return ret;
 }
 
 ret=alloc_chrdev_region(&my_device.devno,0,DEVICE_NUMBER,"hello");
 if (ret < 0) {
  printk("failed: register_chrdev_region\n");
  return ret;
 }
 cdev_init(&my_device.cdev, &hello_fops);
 ret = cdev_add(&my_device.cdev, my_device.devno, DEVICE_NUMBER);
 if (ret < 0) {
  printk("faield: cdev_add\n");
  return ret;
 }
 
 hello_class = class_create(THIS_MODULE, "hello_class");
 hello_class_dev = device_create(hello_class, NULL, my_device.devno, NULL, "hello_device"); 
 return 0;
}
static void hello_drv_exit(void)
{
 device_destroy(hello_class,my_device.devno);
 class_destroy(hello_class);
  
 cdev_del(&(my_device.cdev));
 unregister_chrdev_region(my_device.devno,DEVICE_NUMBER);
 pci_unregister_driver(&hello_driver);
}
module_init(hello_drv_init);
module_exit(hello_drv_exit);

文件列表(部分)

名称 大小 修改日期
pcie驱动0.00 KB2017-11-36
hello_pcie.c9.88 KB2017-11-38
hello_pcie.h0.05 KB2017-11-08
Makefile0.32 KB2017-11-02

立即下载

相关下载

[linux之pcie驱动] 此项目是linux之pcie驱动开发。pcie是INTEL提出的新一代的总线接口,目前普及的PCIE 3.0的传输速率为8GT/s。pcie插槽是可以向下兼容的,比如PCIE 1X接口可以插4X、8X、16X的插槽上。实现基本的pcie驱动程序,实现以下模块:初始化设备、设备打开、数据读写和控制、中断处理、设备释放、设备卸载。本程序适合pcie驱动开发通用调试的基本框架,对于具体pcie设备,需要配置相关寄存器才可以使用!

评论列表 共有 1 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部