Дайте знать, если у вас появятся вопросы.

у драйвер устройства для доступа к памяти в FPGA на карте PCIe.
Карта загружается и проверяется / обнаруживается: -

/ Proc / iomem

80000000-840fffff : PCI Bus #03
  80000000-83ffffff : 0000:03:00.0
  84000000-840fffff : 0000:03:00.0

Поэтому, читая ldd / etc, я закодировал вызовrequest_mem_region на80000000и запросил указатель на него черезioremap_nocache

1) мне нужноrequest_mem_region также как иioremap_nocacheНе могу ли я использовать только последний?

/ proc / iomem Afterinsmod мой драйвер устройства: -

80000000-840fffff : PCI Bus #03
  80000000-83ffffff : 0000:03:00.0
    80000000-8003ffff : fp2
  84000000-840fffff : 0000:03:00.0

2) Мне не совсем подходит ...?

Во всяком случае, читает не работает(это не закодировано как ниже, у него есть проверки и т. д.): -

#define BAR_ADDR 0x80000000
void *base = ioremap_nocache(BAR_ADDR, 0x40000);
void *address = base + KNOWN_REG_LOCATION;
int data = ioread32(address);
printk("fp2: address:0x%08x, data:0x%08x\n", address, data);

Выходы: -

address:0xfd500000, data:0xffffffff

Я могу прочитатьx80000000+KNOWN_REG_LOCATION из пользовательского пространства mmap.

3) я пробовал__raw_readl/readl и без удачи.

4) Могу ли я просто прочитать по указанному в настоящее время адресуx80000000?

Ответы на вопрос(1)

Ваш ответ на вопрос