我使用mmap在pci设备上进行访问,但是我有一些疑问。
1)看到有关pci设备访问的各种示例,我注意到在相同情况下,mmap是使用/ dev / mem文件执行的,就像这样
if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) PRINT_ERROR;
map_base = mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, target_base);
,在其他情况下,使用类似这样的pci设备描述符
if((fd = open("file /sys/devices/pci0001:00/0001:00:07.0/resource0", O_RDWR | O_SYNC)) == -1) PRINT_ERROR;
map_base = mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, target_base);
有什么区别?
2)在我的嵌入式设备中,我没有/ dev / mem文件。为什么?取决于内核如何编译?
我尝试使用此命令手动创建一个
mknod -m 660 /dev/mem c 1 1
chown root:kmem /dev/mem;
,但是mmap命令不起作用。 我该如何解决?