现在的位置: 首页 > 综合 > 正文

linux驱动开发教程1

2013年09月16日 ⁄ 综合 ⁄ 共 919字 ⁄ 字号 评论关闭

从前天开始学习驱动,感觉不到驱动的精髓。不过随着时间的流逝我将搞定他。

因为我不是特别动如果我写的不到位的地方希望大家指正,共同进步

 

设备驱动

 

驱动框架:

驱动和普通程序的区别在于他是事件驱动
的,也就是说他不是像普通程序那样从main()执行,从main()结束。因为驱动是以模块的形式“融合”入系统的,系统是不会结束的所以驱动也谈不上“结束”,但是它是有返回的。正是由于它是事件驱动所以,他也不用main()。

 

驱动程序的特色:

1.事件驱动

2.“融合”入内核

3.不会结束

 

那么,这些特色会在以后的学习中体现出来。

首先是我解释一下“事件驱动”:

这个词语可以用,事件使能去解释,这是为了避免碰上“驱动”这个词语,我们写的是驱动为什么还在说事件驱动呢?如果你接触过面向对象编程听这个词语应该很耳熟,其实事件驱动在C语言就可以实现了,根本不用更高级语言。那么,事件驱动的本质是“轮询”,就是常说的“死循环”,这个循环是内核在做的操作。通过分时响应各各进程让我们可以同时进行多个应用。这样你看电脑的时候才感觉它不是“死”的。

 

再说“融入”:

这个词语是我自己发明的,之所以这样描述是因为我们将自己写好的“模块”(驱动),插入内核后,不会对内核效率造成影响。其实这一点,可以用“事件驱动”去理解,为什么呢?“驱动程序”是事件使能的,没事儿不会执行,不会被加到加载的流程中。所以,它对效率的破坏很低。

 

不会结束:

这个概念比较复杂,在这里,有三层含义,一是,驱动本身是不执行的所以说谈不上结束,二是,它是[被调用,返回]的过程,而不是一定要执行的过程。三是,不会结束也就是不会被重新生成代码。

第三层含义是这样的:

     这个程序代码段(驱动)是不会死亡的,所以也不用再生。

例如:

我们有一个程序a.out在我们的主目录中,现有两个终端一起执行她,那么系统会分别复制2份这个程序的代码段到内存中,交给两个终端执行,无论是程序中的局部变量,还是,全局变量,都互相不一致。

而在驱动中,无论有多少用户调用某一设备时,都将产生,多个进程,但是每个进程的全局数据区保持一致性。

 

这些是我现在从学习驱动开始的感悟,希望对大家有所帮助。我会继续将具体的操作一点一点的写出来。

抱歉!评论已关闭.