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

2023-05-16

1、机制和策略

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

2、分离思想

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

3、分层思想

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

4、总结:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

驱动设计思想(机制、策略、分离、分层) 的相关文章

  • C++智能指针总结(面试常问)

    C 43 43 智能指针总结 xff08 面试常问 xff09 1 智能指针的实现原理2 C 43 43 11四种智能指针总结2 1 auto ptr xff1a 2 2 unique ptr 2 3 share ptr 2 4 weak
  • C++可重入函数和不可重入函数

    C 43 43 可重入函数和不可重入函数 可重入函数是指能够被多个线程 同时 调用的函数 xff0c 并且能保证函数结果正确不必担心数据错误的函数 不可重入函数是指不能运行在多任务环境下 xff0c 除非能保证互斥的函数 由于使用了未受保护
  • STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)

    STM32单片机中WIFI模块数据传输问题 xff08 float gt u32 gt u8 u8 gt u32 gt float xff09 最近在做毕业设计 xff0c 在做wifi数据传输与接收时 xff0c 涉及到了STM32单片机
  • Windows10忘记用户密码?怎么打开电脑?

    Windows10忘记用户密码 xff1f 怎么打开电脑 xff1f 首先在输入密码的登录界面连续敲5次shift按键进入cmd命令行 输入net user查看用户 现在是自己创建的用户忘记密码 xff08 我的是Sunrise用户 xff
  • java --向上转型和向下转型

    一 简述 Java 转型主要是用在继承和接口实现的场景 xff0c Java 转型可分为向上转型和向下转型 xff0c 区别如下 xff1a 向上转型 xff1a 通过子类对象实例化父类对象 xff0c 这属于自动转换 向下转型 xff1a
  • docker

    docker 背景 环境配置的难题 软件开发最大的麻烦事之一 就是环境配置 用户计算机的环境都不相同如果某些老旧的模块与当前环境不兼容 那就麻烦了环境配置如此麻烦 换一台机器 就要重来一次 旷日费时能不能从根本上解决问题 软件可以带环境安装
  • 6.2 能控性

    能控性和能观性是线性系统学习中非常重要的部分 xff0c 它们是研究控制问题和滤波问题所必需的 今儿先来说能控性 一 能控性是啥 xff1f 定义6 1 若对任意初始状态 x 0 61
  • 计算机网络精选20道题

    1 现有一个公司需要创建内部的网络 xff0c 该公司包括工程技术部 市场部 财务部和办公室4个部门 xff0c 每个部门约有20 xff5e 30台计算机 试问 xff1a xff08 1 xff09 若要将几个部门从网络上进行分开 如果
  • “四旋翼”无人机“X模式”飞行原理

    文章目录 摘要飞行器分类四旋翼 X模式 飞行原理四旋翼 十模式 飞行原理参考资料 摘要 简单的介绍了四旋翼无人机的两种模式的飞行原理 飞行器分类
  • PID控制器原理及模块化的源码

    文章目录 摘要PID原理概述比例环节积分环节微分环节 串级双闭环PID控制外环内环 模块化的源码主函数硬件初始化PID复位定义私有变量计算串级PIDPID计算公式源码LIMIT范围控制宏定义思维导图 摘要 小飞机由于飞手的技术和外部环境因素
  • 用驱动精灵和手动更新方式安装 Arduino mega 2560 驱动失败的解决方案

    文章目录 摘要安装步骤 下载安装包 安装地面站 安装驱动 驱动安装失败 补充知识 注意事项总结思考 摘要 硬件环境 xff1a AMP飞控 固件采用的3 2 1软件环境 xff1a Win7 xff0c 地面站采用MissionPlanne
  • 使用条件类型实现TypeScript中的函数重载

    假设有这样的一个函数 xff0c 你会怎么来声明他的类型呢 xff1f function add a b return a 43 b add函数可能有两种情况 参数a b为number类型 xff0c 返回值为number类型参数a b为s
  • 【星海出品】openstack LVM后端

    LVM后端创建 LVM的Red Hat 管理介绍 xff1a https access redhat com documentation zh cn red hat enterprise linux 7 html logical volum
  • xshell连接ubuntu虚拟机失败的2个问题

    问题1 xff1a 虚拟机查看ip失败 xff0c 只显示lo xff0c 不显示ens33 解决方法 xff1a 一句代码 sudo dhclient ens33 成功 xff01 问题2 xff1a xshell连接虚拟机ip地址失败
  • Ubuntu20.10 成功安装搜狗输入法的教程(图文详解)

    1 首先安装fcitx 在终端 xff08 Ctrl 43 Alt 43 T打开 xff09 输入 sudo apt get install fcitx 2 在搜狗输入法网页选择linux版本 https pinyin sogou com
  • (七)springcloud Oauth2授权-Spring Cloud Oauth2

    spring security oauth2 客户端四种授权模式 xff1a 授权码模式 xff08 authorization code xff09 xff1a 第三方应用先申请一个授权码 xff0c 然后再用该码获取令牌 简化模式 xf
  • ROS_Dynamic Reconfig 动态参数调节

    创建功能包 package cd catkin ws src catkin create pkg dynamic refg roscpp dynamic reconfigure cd catkin make 向功能包添加动态重配置文件 cf

随机推荐

  • BGA“焊点”虚焊原因分析及控制方法

    电路板调试过程中 xff0c 会出现 BGA器件外力按压有信号 xff0c 否则没有信号 的现象 xff0c 我们称之为 虚焊 本文通过对这种典型缺陷进行原因分析认为 xff1a 焊接温度曲线 焊膏量 器件及PCB板焊盘表面情况以及印制板设
  • Python中的列表(清晰易懂)

    列表是用来存放数据的 Python中的列表关键字是list 我们来定义一个列表 lista 61 34 a 34 34 b 34 34 c 34 666 34 a 34 可以看到列表lista中 有字符型数据 34 a 34 34 b 34
  • VR技术类毕业论文文献有哪些?

    本文是为大家整理的VR技术主题相关的10篇毕业论文文献 xff0c 包括5篇期刊论文和5篇学位论文 xff0c 为VR技术选题相关人员撰写毕业论文提供参考 1 期刊论文 运动炫科技 智慧赢未来 VR技术在体育领域内的应用与展望 期刊 xff
  • Haar特征类有哪些最新发表的毕业论文呢?

    一 总体简介 Haar特征的相关文献在2006年到2020年内共计132篇 xff0c 主要集中在自动化技术 计算机技术 无线电电子学 电信技术 公路运输 等领域 xff0c 其中期刊论文100篇 会议论文4篇 专利文献28篇 xff1b
  • 查阅国外文献的网站有哪些?

    毕业季不知道小伙伴们有没有为了论文感到头秃 xff0c 参考文献在我们的论文中有着举足轻重的作用 xff0c 每年这个时候都有大批小伙伴为这个寻找参考文献发愁 有些专业的小伙伴由于专业的特殊性很多需要的文献还是外文文献 xff0c 对他们来
  • 使用Python和C++的写数据结构和算法

    使用Python和C 43 43 的写数据结构和算法 1 数据结构和算法简介2 数据结构2 1 堆栈2 2 队列2 3 散列表2 4 二叉树2 5 线性搜索2 6 二进制搜索2 7 递归2 8 递归二进制搜索2 9 QuickSort2 1
  • Hive与Hbase的区别与联系

    一 概念 1 xff0c Hive hive是基于Hadoop的一个数据仓库工具 xff0c 用来进行数据提取 转化 加载 xff0c 这是一种可以存储 查询和分析存储在Hadoop中的大规模数据的机制 hive数据仓库工具能将结构化的数据
  • ros 命名空间

    文章目录 全局命名空间相对名称私有名称节点命名空间 全局命名空间 rosout前面的反斜杠 表明该节点名称属于全局命名空间 之所以叫做全局名称因为它们在任何地方 xff08 包括代码 命令行工具 图形界面工具等的任何地方 xff09 都可以
  • DenseNet及torchvision中的实现

    ResNets Highway Networks Stochastic depth DenseNet他们的共同的特点是 They create short paths from early layers to later layers 他们
  • Xmanager5用Xstart连接CentOS7

    今天安装了Xmanager5 xff0c 原本已经有了Xshell5 xff0c 没有冲突 xff0c 测试Xftp Xshell使用上均无问题 到了Xstart却出错了 xff0c 客户端设置完后点击运行 xff0c 出现报错 查找了许多
  • CAN总线入门学习(一)

    今天带着大家学习 xff0c CAN总线 1 概要 本资料是面向 CAN 总线初学者的 CAN 入门 对 CAN 是什么 CAN 的特征 标准规格下的位置分布等 CAN 的概要及 CAN 的协议进行了说明 2 使用注意事项 本资料对博世 B
  • java调用接口

    long dateStr 61 System currentTimeMillis 1000 String url 61 34 34 创建参数 JSONObject jsonObject 61 new JSONObject jsonObjec
  • 英特尔NUC 11板载USB3.0座子接口定义

    规格书没有座子PIN定义 xff0c 于是我找技术支持提供了定义
  • 宝塔配置Workerman

    map span class token variable http upgrade span span class token variable connection upgrade span span class token punct
  • px4飞控和机载电脑通信:机载电脑接收飞控的自定义px4消息

    机载电脑接收飞控的自定义px4消息 mavros功能包能够实现px4飞控和机载电脑之间的实时通信 而对于大部分的消息通信mavros都已经有相应接口可以调用 xff0c 例如 xff1a 位置 期望位置 速度 四元素等消息都可以通过C 43
  • px4飞控和机载电脑通信:飞控接收机载电脑的自定义mavlink消息

    前面一篇讲了机载电脑怎么接受飞控的px4消息 这一篇讲解如何飞控怎么接收从机载电脑传过来的消息 分成两部分 机载电脑发送消息 飞控接收消息 pixhawk版本 pixhawk4 px4版本 1 11 2 ros版本 1 14 10 机载电脑
  • 多无人机通信-路由器实现

    多无人机通信 多无人机之间相互通信是实现编队飞行的基础 而想要实现通信就需要组建网络 在网络之间实现数据信息的互相传输 按结构分成两大类 中心节点网络和无中心节点网络 我们这里所用的路由器就是中心节点网络 所有的数据的传输都要经过中心节点
  • js做文件分片上传

    js做文件分片上传 分片上传视频 xff0c 图片 xff0c 音频 xff0c 转base64 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt meta name
  • 锐捷交换机基本配置命令

    锐捷交换机基本配置命令 锐捷交换机 xff0c 忘记colsole口的en密码 xff0c 重启交换机 xff0c 立即按ctrl 43 c xff0c 进入bootloader 菜单 xff0c 再按ctrl 43 q xff0c 然后输
  • 驱动设计思想(机制、策略、分离、分层)

    1 机制和策略 1 机制就是提供什么功能 xff0c 策略就是怎么使用这些功能 在编写驱动时需要在编程时间和驱动的灵活性之间取一个可接受的折中 xff0c 驱动提供机制 xff0c 尽量不提供策略 xff0c 策略让上层应用去做 2 机制和