添加设备树:
设备文件:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/mod_devicetable.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include<linux/fs.h>
#include<linux/uaccess.h>
#include<linux/io.h>
#include<linux/device.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/wait.h>
struct resource *res;
unsigned int irqno;
struct gpio_desc *gpiono1;
struct gpio_desc *gpiono2;
struct gpio_desc *gpiono3;
struct cdev *cdev;
unsigned int minor=0;
dev_t devno;
#if 0
unsigned int major=0;
#else
unsigned int major=500;
#endif
struct class *cls;
struct device *dev;
char kbuf[128];
//定义等待队列头
wait_queue_head_t wq_head;
int mycdev_open (struct inode *inode, struct file *file)
{
return 0;
}
ssize_t mycdev_read (struct file *file, char __user *user, size_t size, loff_t *lof)
{
return 0;
}
ssize_t mycdev_write (struct file *file, const char __user *user, size_t size, loff_t *lof)
{
unsigned long ret;
if(size>sizeof(kbuf)){
size=sizeof(kbuf);
}
ret=copy_from_user(kbuf,user,size);
if(r