在之前我们介绍了如何实现一个简单的字符设备驱动,并介绍了简单的open,close,read,write等驱动提供的基本功能。但是一个真正的设备驱动往往提供了比简单读写更高级的功能。这一篇我们就来介绍一些驱动动中使用的一些高级的操作的实现。大部分驱动除了提供对设备的读写操作外,还需要提供对硬件控制的...
分类:
系统相关 时间:
2015-07-24 16:06:37
阅读次数:
148
对与应用层的每个系统调用,驱动程序都有一个与之对应的函数.对于字符设备驱动程序,这些函数集合在一个file_operations类型的数据结构中,该结构体在Linux内核的include/linux/fs.h文件中定义.struct file_operations { struct module ....
分类:
其他好文 时间:
2015-07-23 17:37:13
阅读次数:
129
引:我们知道每一个字符设备在内核中都有一个cdev结构来描述之,而这个结构比较重要的一个成员就是const struct file_operations *ops;该结构的作用是将用户程序中的系统调用和驱动程序中的具体实现函数一一对应起来。当在用户程序中对一个字符设备文件调用某一系统调用时,就知.....
分类:
其他好文 时间:
2015-07-20 22:49:10
阅读次数:
114
一、设备的分类及特点1、字符设备字符设备是面向数据流的设备,没有请求缓冲区,对设备的存取只能按顺序按字节的存取而不能随机访问。Linux下的大多设备都是字符设备。应用程序是通过字符设备节点来访问字符设备的。通常至少需要实现open,close,read,和write等系统调用。设备节..
分类:
系统相关 时间:
2015-07-16 22:38:38
阅读次数:
258
本文是嵌入式企鹅圈开篇--《linux字符设备驱动剖析》的姐妹篇,在上述文章里面我们详细描述了字符设备驱动框架涉及的驱动注册、通过设备文件来访问驱动等知识,并明确通过device_create接口并结合mdev来创建设备文件,但没有展开这个知识点。本文将从代码级去理解Linux设备类和设备文件的创建过程。通过这两篇文章,我们将可以对linux字符设备驱动的机制和脉络有全面的认识。...
分类:
系统相关 时间:
2015-07-06 12:22:10
阅读次数:
257
字符设备不得不说的那些事:一: 设备号:主设备号,次设备号: 数据类型 dev_t(unsigned int) 定义设备号 高12位主设备号 低20位次设备号;二: 设备号的作用: 应用程序通过主设备号找到驱动程序;三:如何分配设备号: ①:静态分配: 1: cat /proc/devi...
分类:
其他好文 时间:
2015-06-28 18:47:39
阅读次数:
185
在kernel包中有几个重要的文件夹和文件,他们各司其职,处理着有关内核的一些功能操作。其中文件夹有三个:blk_drv(块设备驱动),chr_drv(字符设备驱动),math(数学协处理器) 文件中asm.s fork.c mktime.c panic.c printk.c sched.c sig...
分类:
系统相关 时间:
2015-06-15 18:12:39
阅读次数:
440
为什么阻塞?在阻塞方式下,写没有足够的空间或读时候没有数据。※ 阻塞方式是文件读写的默认方式。没有空间或者读时没有数据返回错误。※残留问题:驱动程序中全局变量 在不同进程间是共享的吗?阻塞型设备驱动程序 驱动代码: 1 #ifndef _MEMDEV_H_ 2 #define _MEMDEV_H_....
分类:
其他好文 时间:
2015-06-04 00:46:07
阅读次数:
186
SRAM,SDRAM,网卡有地址总线,由cpu统一编址。 NAND flash没有地址总线。 因 此有这两者寻址方式不同。
字符设备驱动程序的框架。
驱动程序 1.有led.read,led.write,led.open 这些函数,2.定义了—个结构体fileoperation,这个结构体包含指向led.read的.read 函数,包含指向led.write的.write函数,包含指向...
分类:
其他好文 时间:
2015-06-03 17:48:33
阅读次数:
183