文档章节

分离与分层

xiaocui911
 xiaocui911
发布于 2016/04/28 20:23
字数 629
阅读 78
收藏 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
2018/04/12
0
0
读张逸的领域驱动设计之应对软件复杂度笔记

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

克虏伯
2018/09/09
78
0
互联网分层架构的本质

本文转载自公众号 架构师之路 作者:沈剑 58同城首席架构师 上图是一个典型的互联网分层架构: 客户端层:典型调用方是browser或者APP 站点应用层:实现核心业务逻辑,从下游获取数据,对上游...

bjweimengshu
2017/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
6分钟前
5
0
读书笔记:深入理解ES6 (八)

第八章 迭代器(Iterator)与生成器(Generator) 第1节 循环语句的问题   在循环、多重循环中,通过变量来跟踪数组索引的行为容易导致程序出错。迭代器的出现旨在消除这种复杂性,并减少循...

张森ZS
6分钟前
2
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
11分钟前
3
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
20分钟前
4
0
重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

导读:2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM...

阿里云官方博客
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部