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