Так что-то вроде процессора ARM, подключенного к Artix FPGA через PCIe, верно?
Да, вам нужен собственный драйвер PCIe. Конфигурация PCIe и пространства данных должны быть сопоставлены. Посмотрите на функции pci_resource_ {start, len} и pci_remap_bar. Затем вы можете использовать pci_get_device, чтобы получить указатель на устройство struct и получить виртуальный адрес пространства конфигурации PCIe. Драйвер UART может затем использовать указатель struct device, и его карта регистров должна быть с некоторым смещением относительно виртуального адреса пространства конфигурации PCIe в соответствии с вашим дизайном. Вы можете вызвать пробный вызов драйвера UARTlite в своем собственном драйвере.
«Существующие драйверы ядра, такие как xilinx, имеют особый способ регистрации (в качестве устройства tty), если они отображаются непосредственно на карту памяти процессора, как это сделано здесь с деревом устройств». Обратите внимание, что это верно, если мы говорим только о tty устройствах. Периферийный IP-адрес GPIO не будет отображаться как tty, но в /sys/class/gpio.