先把代码贴出来:
#include <linux/crypto.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/device.h>
#include <linux/bitops.h>
#include <asm/unaligned.h>
#include <asm/io.h>
static struct class *led_drv_class;
static struct device *led_drv_class_devs;
volatile unsigned long *PA_BASE_ADDR = NULL;
volatile unsigned long *PA_cfg1 = NULL;
volatile unsigned long *PA_dat = NULL;
static unsigned char kernel_buf[4];
static int led_drv_open(struct inode *inode, struct file *file)
{
//PA11 设置输出模式
*PA_cfg1 &= ~(7 << 12);
*PA_cfg1 |= (1 << 12);
return 0;
}
static ssize_t led_drv_write(struct file *filep, const char __user *buf, size_t count, loff_t *ppos)
{
int ret = 0;
int val = 0;
// 返回错误个数,正确返回0
if (copy_from_user((int *)&val, buf, count)) {
ret = -EFAULT;
} else {
*ppos += cou