摘要: BLCR技术到底是什么技术?我没空和你乱扯,自己去看该官方网站的介绍:http://crd.lbl.gov/groups-depts/ftg/projects/current-projects/BLCR首先要下载BLCR的源代码,可以在上面提到的官网上下载,现在最新版本是0.8.5的,目前已经有RP... 阅读全文
posted @ 2014-07-24 15:31 一维 阅读(2129) 评论(0) 推荐(0) 编辑
摘要: 在makefile中查看变量的取值是多少应该是一个比较麻烦的问题,但是本大神自己研究出一个十分方便的方法.这个方法十分简单。现在介绍如下如果在一个十分复杂庞大的makefile文件中,有个地方用到一个变量SRC_FILE,你很想知道makefile运行到此处的时候这个变量的值为多少。那么你可以在... 阅读全文
posted @ 2014-07-18 14:42 一维 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 这篇是最终章了,结束这一章后,对于platform平台总线驱动的使用方法应该是能够无压力掌握。但是这一章涉及的内容会比前面两章多一些。 我们会一步一步地来完善上一章的例子。完善的目的是能够在应用层去控制我们写的这个驱动接口。 第一步,我们得先建立设备节点。看过ldd3(linux设备驱动程序 第三版)的人都知道设备节点是建立在/dev目录下的,但其实在/sys目录下也可以建立设备节点。我们接下来写的驱动使用后者的方法。sys文件系统是一个动态的文件系统,所谓动态即表明该文件系统的所有内容都是保存在内存里面而不是硬盘里面,所以该文件系统里面的内容不能永久保存,断电即消失。 在sys目录... 阅读全文
posted @ 2013-11-02 14:25 一维 阅读(1150) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include static struct kobject * parent; static struct kobject *child; static struct kset *c_kset; static unsigned long flag= 1; static ssize_t att_show(struct kobject *kobj,struct attribute *attr,char *buf) { size_t count = 0; count += sprintf(... 阅读全文
posted @ 2013-09-22 11:17 一维 阅读(5123) 评论(0) 推荐(0) 编辑
摘要: 上回说到,platform_match是驱动和设备之间的媒人婆,那么platform_match是如何匹配驱动和设备的呢?platform总线定义的匹配条件很简单,主要就是查看驱动结构体和设备结构体的name成员变量是否相同,不同总线定义的匹配条件都不同的,例如USB总线的匹配条件就异常复杂,USB总线我们迟点会具体分析的。 现在我们把驱动和设备分开来讲,首先会讲驱动,在最后我们会以一个实际的例子来说明,当然这个例子是没有任何的实际意义的,主要是拿来学习。在后面我们还会回过头来完善这个例子的。 我们先看看platform总线定义的驱动结构,如下所示 struct platform_d... 阅读全文
posted @ 2013-09-22 00:03 一维 阅读(1824) 评论(0) 推荐(0) 编辑
摘要: 说在前面的话 : 设备驱动模型系列的文章主要依据的内核版本是2.6.32的,因为我装的Linux系统差不多就是这个版本的(实际上我用的fedora 14的内核版本是2.6.35.13的。) 今天是今年的第256天,换句话来说,每年的第256天被定为——程序员节。本来我懒得再写东西的了,但是今天好歹是个节日,所以在这时写点东西是有些意义的。 linux设备驱动模型本身就极具复杂性,所以第一次接触这个东西的伙伴们千万不要惊呆、不要气馁。这方面的资料网上还是有很多的,但是真正写的明白的其实很少,因为很多文章的作者自己也是对这个东西理不妥的。所以我们只能在这成堆的资料里面耐心地去寻找正确的指路... 阅读全文
posted @ 2013-09-21 22:56 一维 阅读(4238) 评论(0) 推荐(0) 编辑
摘要: 上回说今回要讲的是do_page_fault,所以呢我们今回就不讲do_page_fault了。是的,不讲这个了。这有点不按常理出牌,但是我这样做有我的理由,你们不要有任何的猜忌,just believe me! 有些话要说在前头,我写这些文章的目的不是为了和大家交流学习心得更不是想传授什么知识给读者,我写这些东西完全是为了聊以自慰,打发一下无聊的时光,在这个网速常常只有几K的环境下,应了那句老话:寂寞难耐。 在现代操作系统中有一个很重要很重要的概念,就是进程空间和系统空间,貌似这是两个概念。。。。。。如果你能在脑海里面很清楚的把进程空间和系统空间给描绘出来,那么你在linux内核上就... 阅读全文
posted @ 2013-09-21 22:54 一维 阅读(1338) 评论(0) 推荐(0) 编辑
摘要: 真后悔开了这个内核专场,linux内核里面每个函数和结构体都是变态的,正如fudan_abc大虾说的那样,写内核的那些人没有哪个不是变态的。我为什么要趟这趟浑水呢?可能是开《龙门镖局》看多了,被他们同化了,变成了一个脑残,俺信了你的邪呀!有时间看内核还不如多撸几局LOL,提高一下操作水平,以后还可以去打职业竞争呢。 我本来看内核就有三个原则,第一:万不得已的情况下绝不接触内核内存管理机制;第二:打死我也不看文件系统的底层实现;第三:挨千刀也不纠结kobject和kset那一套。 为什么我会有这三个原则,因为我都曾经被他们无情地蹂躏过,所以在我脆弱的心灵里留下了不可磨灭的伤痕,过去的事情... 阅读全文
posted @ 2013-09-21 22:51 一维 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 今天本人十分靠谱地下载了linux 内核的3.10.5版本,这个版本是最新的稳定版。 听路飞大虾(哪个路飞?就是那个戴草帽的橡胶小伙,航海很多时候都很空闲的,于是最近他也开始研读linux 内核了。)说3.10.5版本的内核是LTS(long term support)版本的,以后很多公司都会用这个版本,所以学习她是很有实际价值的。 既然已经下载了,就不能浪费了这些网络宽带。让我们高呼一声:let's read the linux-3.10.5 source code(说英语真费劲) 说完英语后自信心爆棚了,于是决定开一个Linux 内核3.10.5 专场。走进该版本内核的大观园,看. 阅读全文
posted @ 2013-09-21 22:50 一维 阅读(262) 评论(0) 推荐(0) 编辑
摘要: //device_create的定义如下struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...){ va_list vargs; struct device *dev; va_start(vargs, fmt); dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs); ... 阅读全文
posted @ 2013-07-27 18:10 一维 阅读(4270) 评论(0) 推荐(0) 编辑