linux – PCIe驱动程序 – 用户空间如何访问它?

linux – PCIe驱动程序 – 用户空间如何访问它?,第1张

概述我正在为 Linux编写PCIe驱动程序,目前没有DMA,并且需要知道从用户空间启用后如何读取和写入PCIe设备. 在驱动程序中,我在probe()中执行基础知识: pci_enable_device();pci_request_regions();pci_iomap(); 但是,如何从用户空间访问此内存以进行读写?我是否将文件 *** 作添加到PCIe驱动程序?来自pci_iomap的内存是否显示用 我正在为 Linux编写PCIE驱动程序,目前没有DMA,并且需要知道从用户空间启用后如何读取和写入PCIE设备.

在驱动程序中,我在probe()中执行基础知识:

pci_enable_device();pci_request_regions();pci_iomap();

但是,如何从用户空间访问此内存以进行读写?我是否将文件 *** 作添加到PCIE驱动程序?来自pci_iomap的内存是否显示用户空间代码可以调用的位置:

open('mapped memory location');mmap(...);

如果是的话那么位置是什么?

注意:PCIE设备不会插入任何linux子系统,如音频,以太网等.

解决方法 您可以使用 register_chrdevdevice_create等功能注册设备.请考虑 kernel source for /dev/null and /dev/mem:

static int __init chr_dev_init(voID){    int minor;    if (register_chrdev(MEM_MAJOR,"mem",&memory_fops))        printk("unable to get major %d for memory devs\n",MEM_MAJOR);    mem_class = class_create(THIS_MODulE,"mem");    if (IS_ERR(mem_class))        return PTR_ERR(mem_class);    mem_class->devnode = mem_devnode;    for (minor = 1; minor < ARRAY_SIZE(devList); minor++) {        if (!devList[minor].name)            continue;        /*         * Create /dev/port?         */        if ((minor == DEVPORT_MInor) && !arch_has_dev_port())            continue;        device_create(mem_class,NulL,MKDEV(MEM_MAJOR,minor),devList[minor].name);    }    return tty_init();}fs_initcall(chr_dev_init);
总结

以上是内存溢出为你收集整理的linux – PCIe驱动程序 – 用户空间如何访问它?全部内容,希望文章能够帮你解决linux – PCIe驱动程序 – 用户空间如何访问它?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1032552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存