У меня есть задача написать драйвер PCI на основе KMDF для Windows. В основном цель состоит в том, чтобы записать данные в ОЗУ, которое находится на плате FGPGA (плата еще не существует). Интерфейс PCI на FPGA позволит напрямую считывать данные и записывать их в RAM FPGA.
Идея заключается в том, что необходимая информация об отображении памяти будет храниться в регистре BAR0. Тип дескриптора памяти будет CmResourceTypeMemory. Первым шагом будет чтение информации из регистра BAR0 и создание карты памяти.
Используя другую плату, я написал базовый драйвер, который выполняет описанное выше.
Однако, как только у меня есть адрес памяти (виртуальный), я хотел бы читать и писать из этой памяти. Я заметил, что в Windows есть API для чтения и записи в ПОРТЫ и РЕГИСТРЫ. Есть ли что-то эквивалентное для записи и чтения различных объемов данных по виртуальному адресу: - I.E. Копирование буфера данных по виртуальному адресу. Копирование напрямую кажется одним из вариантов, однако я подозреваю, что для этого может быть API.
Я просмотрел различные примеры github PCI, однако они, как правило, используют чтение и запись регистров и портов.