Linux UIO驱动实例介绍

本文详细介绍了Linux UIO驱动的工作原理,通过一个简单的例子展示了如何映射1024字节的逻辑内存,并未使用中断。文章还阐述了uio_info结构的初始化和uio_device的注册过程,以及为何选择平台驱动来模拟没有实际硬件的设备。最后,提供了加载和测试UIO驱动的步骤。
摘要由CSDN通过智能技术生成

接上一篇介绍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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值