文档章节

分离与分层

xiaocui911
 xiaocui911
发布于 2016/04/28 20:23
字数 629
阅读 73
收藏 5

        我在写大多数驱动的时候一般喜欢用输入子系统,这样不仅可以省去很多麻烦(直接设置),而且很容易嵌入到内核中,很是方便。但是后来遇到一个问题,就是在修改寄存器的值得时候,不仅需要很麻烦去找寄存器映射所在位置,而且容易牵一发而动全身。这就不是我想要的了。不过好像大神们也遇到过这样的情况,所以就有开发出一个很溜的模型--分离分层

        所谓分离与分层,就是把驱动和设备分开来写,设备驱动只关心与之相关的寄存器、内存等设置,驱动只关心与上层系统的接口等问题,那么两者是如何联系起来的呢?这就需要一个媒介了,而总线驱动是再好不过了,设备通过device_add将设备挂接到总线链表中,驱动通过driver_register将驱动挂接到总线的另一个链表中,而恰好总线驱动又提供一个match函数:int bus_match(struct device * dev, struct device_driver * drv),完成了从设备到驱动的匹配。在设备程序中我们注册一个platform_device,里面有一个id可以设置,在驱动程序中同时注册一个platform_driver结构体,他的id成员必须要与platform_device的id一致,这样match函数通过匹配id就能连接起来了。

       驱动程序只是实现与软件有关的函数,而设备程序只实现与硬件相关的程序,这样我在修改硬件寄存器器时,驱动程序就不需要大幅改动了。当我们实现多设备多驱动时这种模型的优势就不言而喻了。

下面是基于ARM335XD的触摸屏驱动。

http://www.oschina.net/code/snippet_2241389_55796

 

       

© 著作权归作者所有

共有 人打赏支持
上一篇: 输入子系统
下一篇: 正则表达式
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

xiaocui911
xiaocui911
0
.NET简谈分层架构思想(彻底分离每个层)——后补

先给大家说声不好意思,在本人的".net简谈分层架构思想(彻底分离每个层)"文章中由于缺乏示例代码,所以给大家理解带来不便,小弟先赔礼;这篇文章我补充所有实现彻底分层的全部代码。 彻底分...

王清培
2011/05/04
0
0
.NET简谈分层架构思想(彻底分离每个层)

提到分层,我就想起一句图灵奖获得者说过的话:计算机科学领域任何问题,都可以间接的通过添加一个中间层来解决;当初看到这句话的时候还不能深刻的体会到这句话的真正灵魂是什么。之所以要写...

王清培
2011/05/04
0
0
互联网分层架构系列之一: 分层的本质

上图是一个典型的互联网分层架构: 客户端层:典型调用方是browser或者APP 站点应用层:实现核心业务逻辑,从下游获取数据,对上游返回html或者json 数据-缓存层:加速访问存储 数据-数据库层...

wqhlmark64
04/12
0
0
读张逸的领域驱动设计之应对软件复杂度笔记

张逸的《领域驱动战略设计实战》地址,付费的,价格¥59,还能接受。 Eric Evans认为"很多应用程序最主要的复杂度并不是技术上,而是来自域本身、用户的活动或业务"。最终决定的因素还是因为...

克虏伯
09/09
0
0
分享《Linux设备驱动开发详解》第2版高清电子版

新浪微博:@宋宝华Barry 在@微盘 分享了《linux设备驱动开发详解》第2版1080P电子版,拟升级为第3版,3.6内核,Cortex-A9 SMP,Device tree, DVFS, suspend/hibernation, big.LITTLE, CMA,分...

21cnbao
2012/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《碎玉投珠》的读后感想法心得范文3800字

《碎玉投珠》的读后感想法心得范文3800字: 《碎玉投珠》是晋江作者北南2018年的作品,内容主要讲述了其17年的《两小无嫌猜》中副cp师父师叔的爱情故事。 个人并没有看过北南其他的作品,这篇...

原创小博客
28分钟前
0
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
40分钟前
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
6
0
Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
昨天
11
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部