
Linux驱动
征途开始
骡子
展开
-
i2c驱动之at24c08(1)
/**该驱动为new style方式*驱动安装后,输入命令创建设备节点:mknod /dev/at24c08 c 250 1*需在内核中的mach-mini2440.c中添加板级信息注册这个i2c设备,*且注册的设备名必须和本文件中id_table的设备名一致;在mach-mini2440.c中添加如下代码,并重新编译内核0x50为at24c08设备的地址,"at24c08"为在板级信原创 2013-05-06 22:29:16 · 2281 阅读 · 0 评论 -
Kset和Kobject
/** * struct bus_type_private - structure to hold the private to the driver core portions of the bus_type structure. * * @subsys - the struct kset that defines this bus. This is the main kobjec原创 2014-10-27 21:44:22 · 914 阅读 · 0 评论 -
Linux输入子系统框架分析(1)
在Linux下的输入设备键盘、触摸屏、鼠标等都可以用输入子系统来实现驱动。输入子系统分为三层,核心层和设备驱动层,事件层。核心层和事件层由Linux输入子系统本身实现,设备驱动层由我们实现。我们在设备驱动层将输入事件上报给核心层input.c,核心层找到匹配的事件层,将事件交给事件层处理,事件层处理完后传递到用户空间。我们最终要搞清楚的是在用户空间调用open和read最终在内核中是怎样处理的原创 2014-07-08 11:06:10 · 1446 阅读 · 0 评论 -
Linux设备驱动模型(2)
Linux设备驱动模型包含三个关键部分:总线,设备和驱动。原创 2014-07-03 10:38:34 · 812 阅读 · 0 评论 -
Linux设备驱动模型(1)
在Linux内核的说明文档里有一些关于驱动模型的说明文件,首先解读一下第一个文件bus.txt:struct bus_type { char * name; structsubsystem subsys; structkset drivers; structkset原创 2013-08-03 20:44:31 · 947 阅读 · 0 评论 -
Linux平台设备驱动(1)
首先来解释下平台设备驱动所涉及的一些结构:struct resource { resource_size_t start; //该平台设备所占用的资源起始地址 resource_size_t end; //结束地址 const char *name; //名字 unsigned long flags; //资源类型 struct resource *pare原创 2013-08-05 20:23:17 · 1234 阅读 · 0 评论 -
Makefile的静态模式
在makefile中,多个目标可以共用一个规则,静态模式可以更容易的定义多目标规则。语法格式如下: : : 例子:objects = foo.o bar.o all: $(objects) $(objects): %.o: %.c $(CC) -c $$(objects)即为foo.o bar.o;%.o为所有.o文原创 2013-08-02 20:50:32 · 1199 阅读 · 0 评论 -
Linux的温湿度传感器DHT11驱动
今天写了个DHT11的驱动,实现了温湿度的测量,最终测的当时的温度为26摄氏度,80%的湿度,但根据天气预报当时的温度为22摄氏度,可能误差有点大。往传感器呵气,温度会上升到33度,但是上升的很慢。感觉传感器不灵敏。 源码迟点会发布。原创 2013-05-08 20:30:50 · 3710 阅读 · 4 评论 -
linux的i2c驱动中的函数和数据结构的分析
在i2c驱动中有很多函数和数据结构,很多一时难以理解,所以写下本文共同学习。一、i2c_set_clientdata函数 在probe方式的I2C驱动中的probe函数中经常出现i2c_set_clientdata函数,一直很不解这个函数什么意思,后来查看内核源码,发现了一点大家都知道的秘密。这是某个I2C设备驱动中的probe函数,选取了部分代码:struct i2原创 2013-05-07 19:11:34 · 6615 阅读 · 0 评论 -
i2c驱动中的传输函数
I2C设备驱动编写中要用到信息传输的函数,有很多种,以下以写消息为例。一、i2c_smbus_write_byte_data 这是在内核中拷贝的该函数的实现代码,value为字节数据,将value写如client代表的设备。函数中的i2c_smbus_xfer最终调用了smbus_xfer函数进行消息的写入。每次传送均为一个字节。/** * i2c_smbus_writ原创 2013-05-07 15:56:18 · 3847 阅读 · 0 评论 -
list_head数据结构分析
1、list_head结构体的定义struct list_head { struct list_head *next, *prev;};list_head结构包含两个指针成员,一个用于指向前一个节点,next用于指向下一个节点。2、LIST_HEAD_INIT宏定义#define LIST_HEAD_INIT(name) { &(name), &(name) }原创 2016-06-05 19:39:34 · 973 阅读 · 0 评论