关于简单驱动的一般流程及自己的思考2

    通过一段时间的学习逐步接触了几个简单的驱动,包括:字符型led、字符型按键以及它们在中断、同步、互斥、阻塞要求下的操作,从类型上说,前面的两个驱动都是IO类的驱动,从理论上说,逐渐接触了中断、同步、互斥、阻塞等的知识,在接触驱动的过程中发现其实写驱动和写单片机程序很相似,同样是操作寄存器,同样会用到一些专有的函数,在单片机的写法中我们可以直接用寄存器而避免库函数,但是这里我们无法避免,因为此时的库函数是和内核以及用户层相连接的,内核具有较为完整和苛刻的运行方式,因此我们为了避免错误也不得不避免使用相关内核或者用户层的函数,因而我们可以这样说,相比单片机来说,基于操作系统的编程更加注重对操作系统相关知识,而硬件操作变成了基础,我们更多考虑当把一个程序“驱动”加入内核后会发生什么,我们怎么使用它,有多少人会使用他,在多人使用的时候我们应该怎么协调不同用户,以及当该种数据传递时我们需要做一些什么工作。

    将最近的一些学习过程同单片机及自己以前的一些经验比较得出了以下几点关于驱动的学习规律:

    1.注重概念

    比如休眠与唤醒,比如队列,比如更为复杂的一些结合,从某种程度上来说更加偏向于计算机,因此我们可以将这一学习过程描述为对某种计算机结构操作的熟悉以及对整个计算知识的学习。

    2.变量

    发现最常见的操作就是传递变量,在数组中,在结构体中,指针的各种使用,结构体指针的各种杂糅,可以能是以前没接触过这么规范以及严瑾的C语言写作方法,受益匪浅,同样,这些知识仍然和内核和用户结合起来了,参数在同一空间传递,在不同空间传递,将这一学习过程描述为更加深刻的C语言学习以及加深C在linux整个系统中的使用。

    3.分析方法

    基本是先找参考、找说明文档,对比得出一个比较简单的架构,然后根据需要填充;而理解的过程比较倚靠时间轴,谁先执行,什么时候执行,什么时候退出等等,当然这一过程也更加宏大了,因为当多用户多需求时还涉及其他方面知识。

总而言之,要写好驱动我觉得一方面是不断敲代码熟悉各种驱动的一般结构和常用写法,一方面是注重操作系统的知识学习为今后改良驱动打好基础,两者都是基础,一个是基本功(量变),一个是编写能力的飞跃(质变),诸君共勉!

posted @ 2016-10-03 14:41  达达kiki  阅读(87)  评论(0)    收藏  举报