내 애플리케이션 용 단일 커널 모듈 드라이버를 만들고 싶습니다. 이것은 프로그래밍 가능한 로직의 AXIS FIFO와 인터페이스하며, 할당 된 메모리의 물리적 주소를이 장치에 보내어 프로그래머블 로직에서 사용해야합니다.kmalloc 메모리를 사용자 공간에 매핑
내 플랫폼 드라이버가 AXIS FIFO 장치를 인식하고 mmap을 사용하면 해당 레지스터를 내 사용자 공간 앱에서 사용할 수 있습니다. (previous post of mine)
또한 프로그래머블 로직에서 사용할 메모리를 할당하고 주어진 크기를 가진 kmalloc을 인수로 사용하는 IOCTL 명령을 사용하여 이렇게하십시오. 물리 주소를 사용하고자하므로 __pa (x)를 사용하여 실제 주소를 얻습니다.
이 할당 된 메모리에 액세스하여 올바른 정보가 RAM에 저장되었는지 확인하려면 어떻게해야합니까? Through
fd = open("/dev/mem", ...)
va = mmap (phys_address, ....)
내가 가지고있는 문제는 내가 잘못해서는 안되는 메모리 부분에 여전히 부당하게 액세스 할 수 있다는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
감사합니다.