mini2440之Linux驱动学习_4_LED设备驱动学习
LED是字符设备,可以根据字符设备驱动进行编写。字符设备驱动的编写首先是内核模块的框架,然后分析得到LED驱动需要实现的方法有打开设备,控制设备。
这就是编写LED驱动的分析流程。下面开始编写。
创建驱动文件led.c
1.首先编写内核模块
#include <linux/module.h>
#include <linux/init.h>
static int led_init()
{
return 0;
}
static void led_exit()
{
}
module_init(led_init);
module_exit(led_exit);
2.编写Makefile
obj -m := led.o
KDIR := /内核路径
all :
make -C $(KDIR) M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm
3.驱动的初始化
#include <linux/module.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/fs.h>
struct cdev cdev;//静态分配cdev
dev_t devno;
struct struct file_operations led_fops =
{
.open = led_open;
.unlocked_ioctl = led_ioctl;
}//file_operations 结构的定义
int led_open(struct inode *node, struct file *filp)
{
led_config = ioremap(LEDCON,4);
writel(0x11110000,led_config);
led_data = ioremap(LEDDAT,4);
return 0;
}
static int led_init()
{
cdev_init(&cdev,&led_fops);//初始化cdev
alloc_chrdev_region(&devno,0,1,myled);.//动态分配主设备号
cdev_add(&cdev,devno,1);//注册CDEV
return 0;
}
static void led_exit()
{
cdev_del(&cdev);//注销内核的cdev
unregiter_chrdev_region(devno,1);//注销设备号
}
module_init(led_init);
module_exit(led_exit);
4.实现控制命令
创建led.h文件
编写:
#defien MEM_MAGIC 'L'
#defien MEM_ON _IO(MEM_MAGIC,0)
#defien MEM_OFF _IO(MEM_MAGIC,1)
编写驱动文件
long led_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
switch (cmd)
{
case LED_ON:
writel(0x00,led_data);
return 0;
case LED_OFF:
writel(0xff,led_data);
return 0;
default:
return -EINVAL;
}
}
- 一步一步学习 Linux 驱动之字符设备 LED
- Linux学习:LED字符设备驱动
- 嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
- linux驱动开发--字符设备:通过cdd_cdev结构中的led变量区分是哪个节点,private_data使用
- 【原创】Linux设备驱动程序学习之初探驱动(一)
- linux 学习笔记--字符设备驱动相关数据结构
- Linux 驱动学习笔记05--字符驱动实例,实现一个共享内存设备的驱动
- Smart210学习记录----beep linux字符设备驱动
- 学习Linux-4.12内核网路协议栈(1.8)——网络设备驱动模块的加载
- linux学习笔记1:无操作系统时LED驱动
- mini2440在linux-2.6.34.2中添加LED驱动,并编写应用程序验证
- 学习笔记 --- LINUX I2C设备驱动的实现
- linux 参考学习博客--驱动 ,块设备等
- Linux设备驱动模型学习之基础中的基础篇
- Linux混杂设备驱动学习
- linux驱动学习--第九天:第五章 Linux 文件系统与设备文件系统(三) 之 file 结构体 和 inode 结构体
- linux 设备驱动开发学习笔记(一):并发控制
- linux设备驱动学习--proc文件系统
- [Linux驱动]字符设备驱动学习笔记(二)———实例
- Linux的I2C 设备驱动 -- mini2440 上i2c接口触摸屏驱动