摘要: 对于Linux系统中,一般字符设备和驱动之间的函数调用关系如下图所示 上图描述了用户空间应用程序通过系统调用来调用程序的过程。一般而言在驱动程序的设计中,会关系 struct file 和 struct inode 这两个结构体。 用户空间使用open()系统调用函数打开一个字符设备时( int f 阅读全文
posted @ 2016-12-14 22:56 GreenHand# 阅读(20098) 评论(2) 推荐(8) 编辑
摘要: struct _file_operations struct _file_operations在Fs.h这个文件里面被定义的,如下所示: Linux使用file_operations结构访问驱动程序的函数,这个结构的每一个成员的名字都对应着一个调用。 用户进程利用在对设备文件进行诸如read/wri 阅读全文
posted @ 2016-12-14 22:18 GreenHand# 阅读(23079) 评论(0) 推荐(3) 编辑
摘要: 第一种是使用mknod手工创建:# mknod <devfilename> <devtype> <major> <minor> 第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置。 具体udev相关知识这里不详细阐述, 阅读全文
posted @ 2016-12-13 21:09 GreenHand# 阅读(5564) 评论(0) 推荐(0) 编辑
摘要: 一、字符设备基础 字符设备 二、字符设备驱动与用户空间访问该设备的程序三者之间的关系 三、字符设备模型 1、Linux内核中,使用 struct cdev 来描述一个字符设备 动态申请(构造)cdev内存(设备对象) 初始化cdev的成员,并建立cdev和file_operations之间关联起来 阅读全文
posted @ 2016-12-13 20:26 GreenHand# 阅读(25617) 评论(2) 推荐(6) 编辑
摘要: 1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽 阅读全文
posted @ 2016-12-10 15:50 GreenHand# 阅读(2335) 评论(0) 推荐(0) 编辑
摘要: 头文件目录中总共有32个.h头文件。其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。这些头文件各自的功能如下: 1、主目录 <a.out.h>:a.out头文件,定义了a.out执行文件格式和一些宏。<const.h>:常数符号头文件,目前仅定义了i节点 阅读全文
posted @ 2016-12-08 19:32 GreenHand# 阅读(3784) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念 二、中断屏蔽 三、原子操作 四、自旋锁 五、信号量 六、互斥体 七、自旋锁与信号量的比较 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,即使是经验丰富的驱动工程师也常常设计出包含并发问题的bug驱动程序。 Linux提供了多种解决竞态问题的 阅读全文
posted @ 2016-12-06 22:55 GreenHand# 阅读(4834) 评论(0) 推荐(0) 编辑
摘要: 1、什么是内核模块? 内核模块是Linux提供的一种机制,允许在内核运行时动态加载进内核中,具有两个特点: 1)内核模块本身不编译入内核映像,有效控制缩减内核镜像大小 2)内核模块一旦被加载,他就和内核中的其他部分完全一样 2、为什么需要内核模块? 如果在内核编译时把所有的功能都编译进去,就会导致内 阅读全文
posted @ 2016-12-03 13:33 GreenHand# 阅读(4905) 评论(1) 推荐(2) 编辑
摘要: 转自:http://www.lupaworld.com/forum.php?mod=viewthread&tid=61425 原名:内核与ramdisk到底是什么关系? 个人Notes: (1)有这个必要吗? --相当有!不然内核太大!不符“内核”原则。 (2)作用:“既要内核小,又要内核不带草”, 阅读全文
posted @ 2016-11-30 22:04 GreenHand# 阅读(7138) 评论(0) 推荐(1) 编辑
摘要: 首先引用一句 wiki 上的定义来开篇: Mounting takes place before a computer can use any kind of storage device (such as a hard drive, CD-ROM, or network share). The u 阅读全文
posted @ 2016-11-30 19:45 GreenHand# 阅读(2876) 评论(0) 推荐(2) 编辑