Я пытаюсь понять, как работает PCI Express, поэтому я могу написать драйвер для Windows, который может читать и записывать на пользовательское устройство PCI Express без встроенной памяти.
Я понимаю, что регистры базового адреса (BAR) в пространстве конфигурации PCIE содержат адрес памяти, на который PCI Express должен отвечать / на который разрешена запись. (Это правильно?)
Мои вопросы следующие:
- Что такое «адрес конкретной шины» по сравнению с физическим адресом, когда речь идет о PCIE?
- Когда и как BAR заполняется адресами? Отвечает ли драйвер за выделение памяти и запись адреса на периферийный BAR?
- Используется ли DMA при передаче данных из периферийного устройства в память хоста?
Я ценю ваше время.
С наилучшими пожеланиями,