Я пытаюсь понять, как работает PCI Express, чтобы я мог написать драйвер Windows, который может читать и записывать на пользовательское устройство PCI Express без встроенной памяти.

Я понимаю, что регистры базовых адресов (BAR) в пространстве конфигурации PCIE содержат адрес памяти, на который PCI Express должен отвечать / которому разрешено выполнять запись. (Это правильно понял?)

Мои вопросы следующие:

  • Что такое «специфичный для шины адрес» по сравнению с физическим адресом, когда речь идет о PCIE?
  • Когда и как BAR заполняется адресами? Отвечает ли драйвер за распределение памяти и запись адреса на периферийный BAR?
  • Можно ли изменить адреса в BAR во время выполнения?
  • Используется ли DMA при передаче данных с периферийного устройства в память хоста?

Я ценю ваше время.

С наилучшими пожеланиями,

0