驱动设计思想(机制策略分离分层)

Posted 正在起飞的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了驱动设计思想(机制策略分离分层)相关的知识,希望对你有一定的参考价值。

1、机制和策略

(1)机制就是提供什么功能,策略就是怎么使用这些功能。在编写驱动时需要在编程时间和驱动的灵活性之间取一个可接受的折中,驱动提供机制,尽量不提供策略,策略让上层应用去做。
(2)机制和策略的分离使得驱动有更好的移植性。同一个硬件可能在不同的环境和不同功能的设备里使用,当机制和策略分离时,同一个硬件就只需要修改策略不需要修改机制。比如硬盘的驱动,
会将硬盘初始化并提供读写接口,但是谁有权访问、什么时候读写、每次读写多少数据都是上层去控制。这优点类似RISC架构,只提供基础操作,功能要上层开发人员去做。

2、分离思想

(1)操作方法和数据分离。操作方法指的是这款硬件的操作时序,数据是怎么配置、初始化硬件。同一款硬件无论用在什么地方,操作时序是不变的,时序是和具体硬件挂钩的,但是不同的产品使用
硬件时时会有差异的,产品会根据自己的需求来配置硬件,使得硬件有不同的特性。比如DM9000网卡芯片,有16bit模式和8bit模式,开发人员可以根据需要去配置,DM9000网卡信息也提供了机制
程序员去配置,但不管是哪种模式网卡芯片收发数据的逻辑流程是一样的。
(2)分离的好处:移植驱动代码时,只需要根据硬件的接线方式,去配置相应的参数(也就是数据),不用修改代码(操作方法)。

3、分层思想

(1)分层思想:将同功能硬件的共性抽离出来形成一个软件层,将差异保留在硬件的具体驱动代码中,这样可以屏蔽硬件差异,当硬件发生改变时,上层代码不用改变。
(2)比如SD卡,不论哪款SD卡都需要提供初始化接口、读接口、写接口,我们可以把接口抽象成函数指针,用函数指针去实现操作SD卡的流程。在移植SD卡驱动时,就是把
函数指针具象化成SD卡驱动里实现的对应接口。这类似协议,满足统一协议的硬件,对上层的程序员来说几乎一样,只有一些细微差别,协议就是这些硬件的共性,但是不同的
硬件实现这些协议的方式有差别。

4、总结:

(1)机制和策略思想:简化驱动编写的难度,给上层保留尽可能多的灵活性;
(2)分离思想:移植驱动代码时,只需要改动配置参数,不需要改动驱动源码,降低驱动的移植难度;
(3)分层思想:当替换同功能不同款的硬件时,不用改动上层代码;

以上是关于驱动设计思想(机制策略分离分层)的主要内容,如果未能解决你的问题,请参考以下文章

驱动思想之机制和策略

《驱动设计的思想:面向对象—分层—分离》

《驱动学习 - platform机制实现驱动层分离》

驱动程序的角色

14.linux-platform机制实现驱动层分离(详解)

S3C2440 驱动分层概念