小白一枚:
记录一下自己的学习过程
驱动程序:
/* WRJ
* 2020/04/18
* 程序描述:利用次设备号分别点亮LED
* LED1->GPF4
LED2->GPF5
LED3->GPF6
* 注意,使用copy_to_user/copy_from_user时,
* 用户空间定义的变量类型和驱动中定义的变量类型应该一致
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/arch/regs-gpio.h>
#include <asm/hardware.h>
static struct class *seconddrv_class;
static struct class_device *seconddrv_class_dev[4];
volatile unsigned long *gpfcon = NULL;
volatile unsigned long *gpfdat = NULL;
static int second_drv_open(struct inode *inode, struct file *file)
{
int minor = MINOR(inode->i_rdev);//获取次设备号
printk("Second_drv_open!\n");
/* 配置GPF4,5,6为输出 */
if(0 == minor)//若次设备号为0&