《Linux Device Driver》这本书的却做的很好,对于一个初学者来说虽然有点难度,但是只要认真看,绝对是大有裨益的!
好了,昨天把ioctl的原理以及涉及到的代码贴了一下,今天就做了做实验,感觉还凑合,所以就贴出来!对自己也算是做个笔记吧!
今天这个实验主要就是通过ioctl来控制LED灯的亮灭,虽然有点简单,但是毕竟也是需要花费点时间的。
1、驱动程序
①、tiny6410_led_ioctl.c
#include <linux/module.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <linux/ioport.h>
#include <asm/io.h>
#include <linux/miscdevice.h>
#include <linux/device.h>
#include <linux/cdev.h>
#include <linux/ioctl.h>
#include "tiny6410_led_ioctl.h"
MODULE_LICENSE("GPL");
static struct cdev cdev;
static dev_t devno;
struct class *tiny6410_class;
static int major;
volatile unsigned long *gpkcon0 = NULL;
volatile unsigned long *gpkcon1 = NULL;
volatile unsigned long *gpkdat = NULL;
int led_open(struct inode *inode, struct file *filp)
{
/*