我想为我的应用程序创建一个内核模块驱动程序。 它与可编程逻辑中的AXIS FIFO接口,我需要将分配的存储器的物理地址发送到该器件,以用于可编程逻辑。
我的平台驱动程序识别AXIS FIFO设备,并使用mmap使其寄存器可用于我的用户空间应用程序。 (previous post of mine)
我还想分配可编程逻辑使用的内存,并通过使用和IOCTL命令来执行此操作,该命令调用具有给定大小的kmalloc作为参数。由于我想使用物理地址 - 我使用__pa(x)获得物理地址。
如果我想访问此分配的内存以验证正确的信息是否存储在RAM中,我该怎么做?通过
fd = open("/dev/mem", ...)
va = mmap (phys_address, ....)
我遇到的问题是我仍然可以错误地访问我不应该访问的部分内存。有更好的方法吗?
感谢。
答案 0 :(得分:0)
我认为最好的方法是创建一个映射到已分配内存的/proc
设备文件。您的内核模块kmalloc是内存,创建proc
设备,并为设备的所有I / O调用提供服务。您的用户空间程序读取和写入此设备,或者可能mmap
到它(如果这将起作用,我不确定......)。