UIO驱动
1, 设备文件/dev/uio0 , /dev/uio1
2, 通过文件映射到设备的寄存器,通过mmap实现。
3, 接下来访问设备寄存器变成了read、pread、write、pwrite的操作。
4, 比如读寄存器。
5,提到一个缺点:页表需要手动偏移,offset = N * getpagesize();
文章地址:The Userspace I/O HowTo
关于ARMV8的内存管理架构有一篇不错的文章:Address spaces in Armv8-A
1, 设备文件/dev/uio0 , /dev/uio1
2, 通过文件映射到设备的寄存器,通过mmap实现。
3, 接下来访问设备寄存器变成了read、pread、write、pwrite的操作。
4, 比如读寄存器。
5,提到一个缺点:页表需要手动偏移,offset = N * getpagesize();
文章地址:The Userspace I/O HowTo
关于ARMV8的内存管理架构有一篇不错的文章:Address spaces in Armv8-A