gpt4 book ai didi

linux - 现有内核驱动程序应如何初始化为 PCI 内存映射?

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:50 25 4
gpt4 key购买 nike

现有的内核驱动程序如 xilinx 有特定的注册方式(作为 tty 设备),如果它们直接映射到 cpu 内存映射,就像这里使用设备树所做的那样: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842249/Uartlite+Driver

但在其他情况下,有一个 PCIe 设备(如具有 xilinx uart IP 的 FPGA)连接到 cpu。

使用PCIe设备时,如何让uart注册成功?

我尝试注册到 PCIe 的设备树是 uartlite 驱动程序: https://github.com/Xilinx/linux-xlnx/blob/master/drivers/tty/serial/uartlite.c

我认为我可能需要做的是:

  1. 编写自定义 pci 驱动程序。

  2. 需要准备 platform_device 结构,然后从 pci 驱动程序调用 uart 探测例程:

    ulite_probe(struct platform_device *pdev)

我已经看到其他人使用 FPGA 连接多个设备的相关问题,但似乎没有描述如何执行此操作的文档或教程。

欢迎任何评论、示例或文档。

最佳答案

那么像通过 PCIe 连接到 Artix FPGA 的 ARM CPU 对吧?

是的,您需要自定义 PCIe 驱动程序。必须映射 PCIe 配置和数据空间。查看 pci_resource_{start, len} 和 pci_remap_bar 函数。然后,您可以使用 pci_get_device 获取指向结构设备的指针并检索 PCIe 配置空间的虚拟地址。然后,UART 驱动程序可以使用结构设备指针,并且它的寄存器映射应该根据您的设计与 PCIe 配置空间的虚拟地址有一定的偏移量。您可以在自己的驱动中调用UARTlite IP驱动的probe call。

“现有的内核驱动程序(如 xilinx)具有特定的注册方式(作为 tty 设备),如果它们像此处使用设备树那样直接映射到 cpu 内存映射”。请注意,如果我们只谈论 tty 设备,这是正确的。 GPIO 外设 IP 不会公开为 tty,而是在/sys/class/gpio 中。

关于linux - 现有内核驱动程序应如何初始化为 PCI 内存映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com