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);
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: [email protected] 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » linux之pcie驱动
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
pcie驱动 | 0.00 KB | 2017-11-36 |
hello_pcie.c | 9.88 KB | 2017-11-38 |
hello_pcie.h | 0.05 KB | 2017-11-08 |
Makefile | 0.32 KB | 2017-11-02 |
发表评论 取消回复