文档章节

分离与分层

xiaocui911
 xiaocui911
发布于 2016/04/28 20:23
字数 629
阅读 70
收藏 5
点赞 1
评论 1

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

        所谓分离与分层,就是把驱动和设备分开来写,设备驱动只关心与之相关的寄存器、内存等设置,驱动只关心与上层系统的接口等问题,那么两者是如何联系起来的呢?这就需要一个媒介了,而总线驱动是再好不过了,设备通过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
博文 15
码字总数 14765
作品 0
深圳
程序员
加载中

评论(1)

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

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

王清培 ⋅ 2011/05/04 ⋅ 0

.NET简谈分层架构思想(彻底分离每个层)

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

王清培 ⋅ 2011/05/04 ⋅ 0

互联网分层架构系列之一: 分层的本质

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

wqhlmark64 ⋅ 04/12 ⋅ 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

互联网分层架构的本质

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

bjweimengshu ⋅ 2017/11/28 ⋅ 0

输入子系统

输入子系统,顾名思义这本身是大神撸的一个系统。这个系统它不仅把输入设备底层驱动的共性部分(比如注册设备,open、write等)编写成一个大集合 以供调用,而且把与底层相匹配的处理事件程序...

xiaocui911 ⋅ 2016/05/22 ⋅ 0

selenium webdriver (4) -- page object

page object 是一种分层的思想,用户并不关心是如何找到元素的,用户只是进行输入,提交这些操作而已,如何让代码进行合理的分层,使得更加接近用户的行为,而隐藏掉一些定位的细节,更参数化...

terry_hding ⋅ 2016/07/21 ⋅ 0

企业应用架构模式学习(一):分层设计

在分解复杂的软件系统时,设计者用的最多的技术之一就是分层。 为什么要分层,分层有哪些优点? 优点:1、复杂问题分解简单化,每一层负责自己的实现,并向外提供服务。 2、职责分离,复杂的...

大风起兮 ⋅ 2013/05/24 ⋅ 0

基于NodeJS的全栈式开发

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本。为了提升开发效率,前后端分...

唐僧他大叔 ⋅ 2015/02/21 ⋅ 0

前后端分离方案交流,大家发表一下看法

基于NodeJS的前后端分离(此文章来自淘宝) 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异。痛定思痛,今天我们重新思考...

Koala_考拉 ⋅ 2014/05/26 ⋅ 12

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 5分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 13分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 31分钟前 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 46分钟前 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 48分钟前 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 48分钟前 ⋅ 0

centos7下创建新用户并授权

1、创建新用户 创建一个用户名为:test adduser test 创建初始密码: passwd test 2、授予root权限 个人用户的权限只可以在/home/test下有完整权限,其他目录要看别人授权。而经常需要roo...

xixingzhe ⋅ 52分钟前 ⋅ 0

求助:TiledMap如何旋转对象呢?

比如我要旋转一个梯子的角度,单纯在TiledMap旋转角度好像没有效果。那是要用代码来控制角度,还是说只能通过导入相对应的斜的图片才可以呢?

花谢自相惜 ⋅ 53分钟前 ⋅ 0

Micronaut 之HelloWorld!

小试一下Micronaut,按照官方文档跑了一下helloworld 第一步克隆,按照官方文档是: git clone git@github.com:micronaut-projects/micronaut-core.git 结果怎么是这样?? 换个方法吧 git ...

桂哥 ⋅ 今天 ⋅ 0

pom文件

Aeroever ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部