title: PCI Express BAR memory mapping basic understanding
body: <p>I am trying to understand how PCI Express works so i can write a windows driver that can read and write to a custom PCI Express device with no on-board memory.</p>
  
  <p>I understand that the Base Address Registers (BAR) in the PCIE configuration space hold the memory address that the PCI Express should respond to / is allowed to write to. (Is that correct understood?)</p>
  
  <p>My questions are the following:</p>
  
  <ul>
  <li>What is a "bus-specific address" compared to physical address when talking about PCIE?</li>
  <li>When and how is the BAR populated with addresses? Is the driver responsible for allocating memory and  writing the address to the peripheral BAR? </li>
  <li>Is DMA used when transferring data from peripheral to host memory?</li>
  </ul>
  
  <p>I appreciate your time.</p>
  
  <p>Best regards,</p>