linux-kernel – 实现PCIe Linux设备驱动程序(想从内核驱动程序访问我的卡寄存器)

linux-kernel – 实现PCIe Linux设备驱动程序(想从内核驱动程序访问我的卡寄存器),第1张

概述我正在编写一个设备驱动程序来访问PCIe卡上FPGA中的内存. 卡片启动并被探测/发现: – 的/ proc / IOMEM 80000000-840fffff : PCI Bus #03 80000000-83ffffff : 0000:03:00.0 84000000-840fffff : 0000:03:00.0 所以读取ldd / etc我在80000000编写了对request_ 我正在编写一个设备驱动程序来访问PCIE卡上FPGA中的内存.
卡片启动并被探测/发现: –

的/ proc / IOMEM

80000000-840fffff : PCI Bus #03  80000000-83ffffff : 0000:03:00.0  84000000-840fffff : 0000:03:00.0

所以读取ldd / etc我在80000000编写了对request_mem_region的调用,并通过ioremap_nocache请求指向它的指针

1)我是否需要request_mem_region以及ioremap_nocache,我不能只使用后者?

/ proc / iomem insmod我的设备驱动程序后: –

80000000-840fffff : PCI Bus #03  80000000-83ffffff : 0000:03:00.0    80000000-8003ffff : fp2  84000000-840fffff : 0000:03:00.0

2)对我来说看起来不太合适……?

无论如何,读取不起作用(它没有编码如下,它有检查等): –

#define bar_ADDR 0x80000000voID *base = ioremap_nocache(bar_ADDR,0x40000);voID *address = base + KNowN_REG_LOCATION;int data = ioread32(address);printk("fp2: address:0x%08x,data:0x%08x\n",address,data);

产出: –

address:0xfd500000,data:0xffffffff

我可以从mmap用户空间读取x80000000 KNowN_REG_LOCATION.

3)我已经尝试了__raw_readl / readl也没有运气.

4)我可以只读取当前映射的地址x80000000吗?

解决方法 伊恩

我为设备编写了一个PCI驱动程序(full source).寄存器空间的映射应该是相同的.我就是这样做的.

dm7820_device->pci[region].virt_addr = ioremap_nocache(address,length);if (dm7820_device->pci[region].virt_addr == NulL) {    printk(KERN_ERR "%s: ERROR: bar%u remapPing Failed\n",&((dm7820_device->device_name)[0]),region);    dm7820_release_resources();    return -ENOMEM;}if (request_mem_region(address,length,&((dm7820_device->device_name)[0])) == NulL) {    printk(KERN_ERR "%s: ERROR: I/O memory range %#lx-%#lx allocation Failed\n",(address + length - 1));    dm7820_release_resources();    return -EBUSY;}

地址和长度值从pci_resource_start()和pci_resource_length()调用返回.

然后你可以使用imad32()使用dm7820_device-> pci [region] .virt_addr< register offset>来访问它.

如果您有任何疑问,请告诉我.

总结

以上是内存溢出为你收集整理的linux-kernel – 实现PCIe Linux设备驱动程序(想从内核驱动程序访问我的卡寄存器)全部内容,希望文章能够帮你解决linux-kernel – 实现PCIe Linux设备驱动程序(想从内核驱动程序访问我的卡寄存器)所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/yw/1025010.html

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

发表评论

登录后才能评论

评论列表(0条)

保存