PCIe 카드의 FPGA 메모리에 액세스하는 장치 드라이버를 작성하고 있습니다.
카드 부츠와 발견/프로브입니다 : -PCIe Linux 장치 드라이버 구현 (커널 드라이버에서 카드 레지스터에 액세스하려는 경우)
/proc 디렉토리/iomem
80000000-840fffff : PCI Bus #03
80000000-83ffffff : 0000:03:00.0
84000000-840fffff : 0000:03:00.0
그래서 읽기 LDD/I는 80000000
에 request_mem_region
에 전화를 코딩하고,를 통해 포인터를 요청 등 ioremap_nocache
1) request_mem_region
과 ioremap_nocache
이 필요합니까? 후자 만 사용할 수 있습니까?
/proc 디렉토리/iomem insmod
후 장치 드라이버 : -
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
에서 읽을 수 있습니까?
.tar 파일에는 암호가 필요합니다. 코드를 검토하는 것이 도움이 될 것입니다. – PatrickM
귀하의 의견은 @willtake에게 전달되어야한다고 생각합니다. –