PCIeカード上のFPGAのメモリにアクセスするためのデバイスドライバを作成しています。
カードが起動し、プローブ/検出されます:-
/ proc / iomem
80000000-840fffff : PCI Bus #03
80000000-83ffffff : 0000:03:00.0
84000000-840fffff : 0000:03:00.0
request_mem_region
そこで、ldd / etcを読んで、での呼び出しをコーディングし、80000000
を介してそれへのポインタを要求しました。ioremap_nocache
1)必要がありますか、後者だけを使用することはできませんかrequest_mem_region
?ioremap_nocache
/ proc / iomeminsmod
デバイスドライバーの後:-
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
か?