我编写了一个 PCIe 设备驱动程序,但读/写功能无法正常工作。该设备有 3 个内存区域,从 0x10800000、0x0c000000 和 0x80000000 开始。仅出于测试目的,我在驱动程序中的读写函数打印出传递的地址并返回。如果我从用户空间应用程序调用 pread() 或 pwrite(),我会看到为前 2 个内存区域传递的地址,但如果我调用第三个内存区域,我什么也看不到,好像它没有t 甚至进入驱动程序读取或写入函数。
我的驱动程序在运行 linux 版本 2.6.32 的 64 位机器上运行良好。这台无法运行的机器是运行 linux 版本 2.6.25 的 32 位机器。我的想法是,也许 32 位不喜欢 0x80000000 地址,但如果是这种情况,我不知道如何验证或修复它。