接上一篇介绍UIO机制: https://blog.csdn.net/hpu11/article/details/109395820
uio驱动详解
为了用最简单的例子说明问题,我们在我们uio驱动的内核部分只映射了一块1024字节的
逻辑内存。没有申请中断。
这样加载上我们的驱动后,将会在/sys/class/uio/uio0/maps/map0中看到
addr name offset size。他们分别是映射内存的起始地址, 映射内存的名字,起始地址的页内偏移,
映射内存 的大小。 在uio驱动的用户空间部分,我们将打开addr, size以便使用映射好的内存。
//simple.c
/**
* This is a simple demon of uio driver.
* Last modified by
09-05-2011 Joseph Yang(Yang Honggang)<ganggexiongqi@gmail.com>
*
* Compile:
* Save this file name it simple.c
* # echo "obj-m := simple.o" > Makefile
* # make -Wall -C /lib/modules/`uname -r`/build M=`pwd` modules
* Load the module:
* #modprobe uio
* #insmod simple.ko
*/
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/uio_driver.h>
#include <linux/slab.h> /* kmalloc, kfree */
struct uio_info kpart_info = {
.name = "kpart",
.version = "0.1",
.irq = UIO_IRQ_NONE,
};
static int drv_kpart_probe(struct device *dev);
static int drv_kpart_remove(struct device *dev);
static struct device_dri