我正在为我的 FPGA 中的设备编写 petalinux 驱动程序,并且我已经实现了 mmap 功能以控制用户空间中的设备。我的问题是,如果我正在使用
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
在用户应用程序的 mmap 函数和MAP_SHARED
标志中,似乎启用了缓存。
我所做的测试是向我的映射设备的特定寄存器写入一个值(比如 5),该寄存器实际上只存储来自 AXI 总线的数据的最低有效位。如果我在写入操作后立即读取,我希望读取 1(在 Microblaze 上使用裸机应用程序时发生这种情况),而不是读取 5。但是,该值已正确写入寄存器,因为必须发生什么...... ..发生。
提前致谢。