有一个基于FPGA的寄存器组(512字节),可以使用特殊协议进行读/写。我想编写一个设备驱动程序,使用户进程可以读取/写入这些寄存器,如内存(数组,指针),而不是read()/ write()函数或处理协议。
答案 0 :(得分:1)
mmap()
调用,这将允许您作为缓冲区访问内存区域。这在LDD3中有很好的描述。 答案 1 :(得分:0)
您需要一个实现mmap()的设备驱动程序,以便用户空间应用程序可以通过加载和存储指令访问寄存器。
您的驱动程序在映射寄存器时应禁用缓存,以便读取和写入始终与您的FPGA交互。可能您的驱动程序还需要禁用缓冲,以防您的硬件无法处理对寄存器的突发写入。
我的设计通常采用这种方式构建。我有一个通用设备驱动程序使应用程序能够mmap()控制逻辑。设备驱动程序还允许应用程序使用poll()等待硬件中断,以防需要。只是因为硬件已经改变而不必更新设备驱动程序就不那么令人头疼了。