自己写驱动之Linux设备驱动开发详解———设备驱动概述
之前就学习过Linux设备驱动开发详解,可是看得云山雾绕的,现在使用JZ2440开发板将近6个月左右,基础应该还不错,所以决定再重新认认真真地学习一遍Linux设备驱动开发详解。
例子:Linux系统下的LED驱动
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <linux/irq.h>
#include <asm/io.h>
#include <mach/regs-gpio.h>
#include <mach/hardware.h>
#include <mach/irqs.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/gpio.h>
#include <linux/device.h>
#include <linux/input.h>
#include <linux/platform_device.h>
#include <linux/errno.h>
#include <linux/fb.h>
#include <mach/fb.h>
#include <mach/regs-lcd.h>
#include <linux/dma-mapping.h>
//#include <linux/pm.h> //POWER Manager
#include <asm/gpio.h>
#include <linux/clk.h>
#include <asm/irq.h>
#include <plat/ts.h>
#include <plat/regs-adc.h>
#include <linux/serio.h>
#include <linux/slab.h>
#include <linux/usb/input.h>
#include <linux/hid.h>
#define LIGHT_ON 0
#define LIGHT_OFF 1
#define LIGHT_MAJOR 251
//设备结构体
struct light_dev
{
struct cdev cdev; //字符设备cdev 结构体,具体见注释1
unsigned char value; //LED亮时为1,熄灭时为0,用户可以读写此值
};
struct light_dev *light_devp;
int light_major = LIGHT_MAJOR;
void
light_on(
void
)
{
__gpio_set_pin(GPIO_LED_PIN);
}