嵌入式软件分层的思想

文章目录

  • 一、分层的目的
  • 二、分层逻辑图
  • 三、分层的架构图
  • 四、分层的优缺点
  • 五、举例
  • 六、 优化

一、分层的目的

  “高内聚,低耦合的思想”,表示在设计和开发软件系统时,应该使模块之间的关系更加紧密,同时避免模块之间的依赖性过于紧密,以便更好地实现系统的可维护性,可扩展性和可重用性

二、分层逻辑图

在这里插入图片描述

三、分层的架构图

在这里插入图片描述

四、分层的优缺点

  • 优点
    • 易维护性:各层之间耦合度低,方便进行独立维护和修改。如果某一层发生故障,只需对该层进行修改,而不会影响到其他层。
    • 复用性:各层功能明确,可以独立地应用于不同的系统。例如,某一层的技术或算法经过验证后,可以在其他嵌入式系统中直接使用,无需从头开始开发。
    • 开放性:分层架构有利于标准化的实现。各层之间可以方便地进行替换和升级,提高了系统的可扩展性和可升级性。
    • 可移植性:由于各层相对独立,嵌入式系统可以方便地从一种硬件平台移植到另一种硬件平台,只需对相应层进行修改即可。
  • 缺点
    • 开发成本高:需要开发更多的代码,增加了开发时间和成本。
    • 性能开销大:分层架构需要处理更多的层级和接口,可能导致性能开销增大。
    • 通信开销大:各层之间需要进行数据传输和通信,可能导致较大的通信开销。
    • 跨层调用复杂:在分层架构中,跨层调用需要经过多个层级,可能导致复杂的逻辑和额外的性能开销。

因此,在选择是否采用嵌入式分层架构时,需要根据具体的应用场景和需求进行权衡。如果系统规模较大、复杂度高、需要高可维护性和可扩展性,分层架构是一个不错的选择;但如果系统规模较小、复杂度低、对性能要求较高,可能会更适合采用非分层架

五、举例

我需要获取一个ds18B20的数据然后上传到阿里云,使用的是STM32

  • 硬件层
    STM32的底层库函数
  • HAL库
    就是使用STM32的底层库函数疯转一个方便上层调用的函数,比如GPIO的翻转,拉高,拉低等等。
  • 驱动层
    使用HAL库写DS18B20的驱动
    4G的驱动
  • 中间层
    这里面没有用到中间层,如果上了FreeRTOS实时操作系统的话,中间层就有FreeRTOS
  • 逻辑层
    刚刚不是已经写好了传感器的驱动,限制逻辑层里面需要获取驱动的数据来操作。比如滤波,
  • 应用层
    这边拿到的是最终的数据,就要通过4G上传到阿里云了。肯定要有定时器了,定时器到了,就可以上传数,那么就有上传失败成功的情况,
    这边的应用层就做两个事:一是拿到最终数据,二是定时器。定时器到了,把标志位传给逻辑层区处理。

六、 优化

如果需要响应度很快的话,那么最少有三层。HAL层,驱动层,应用层。这样的话,系统的开销就小了。


文章是自己总结而记录,有些知识点没说明白的,请各位看官多多提意见,多多交流,欢迎大家留言
如果技术交流可以加以下群,方便沟通
QQ群:370278903
点击链接加入群聊【蜡笔小芯的嵌入式交流群】
![])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

目录 1. File 概述 1.1 File的属性 1.2 File的构造方法 1.3 File的方法 2.读文件 2.1 InputStream 概述 2.2 FileInputStream 概述 2.3 正确打开和关闭文件的方式 2.4 不同方式读取文件代码示例 2.4 另一种方法:利用 Scanner 进行字符读取 3.写文件 3.1 OutputStre…

如何在苹果手机上进行文件管理

摘要 苹果手机没有像安卓系统那样内置文件管理器,但是可以通过使用克魔开发助手来实现强大的文件管理功能。本文介绍了如何使用克魔开发助手在电脑上管理和传输苹果手机的文件。 引言 很多朋友都在使用苹果手机,但是当需要查看手机中的文件时&#xf…

解析链动2+1:从零到一助力企业快速增长

每天五分钟讲解商业模式,大家好我是模式策划啊浩 在数字化时代,引流已成为企业发展的重要基石。然而,传统的引流模式已难以满足现代企业的需求。此时,链动21商业模式以其独特的优势,成为了商业引流的新趋势。本文将深…

java常见面试题:如何使用Java进行Spring Boot框架开发?

Spring Boot是一个用于创建独立、生产级别的基于Spring的项目的框架。它简化了Spring应用的初始化和开发过程,提供了一个快速的启动和开发平台。 以下是使用Java进行Spring Boot框架开发的详细步骤: 添加Spring Boot依赖 首先,你需要在项目…

version-polling一款用于实时检测 web 应用更新的 JavaScript 库

为了解决后端部署之后,如何通知用户系统有新版本,并引导用户刷新页面以加载最新资源的问题。 实现原理 1.使用 Web Worker API 在浏览器后台轮询请求页面,不会影响主线程运行。 2.命中协商缓存,对比本地和服务器请求响应头etag字…

取消lodash.throttle中的默认执行完最后一次函数

我的场景: 我有一个列表,我考虑用户连续点击删除的情况,如果用户连续点击,可能会导致数据库中的数据被删除了,但是我还需要刷新数据列表才能反应到页面上,可是这时候用户又点击了同一条数据的删除按钮多次,导致发起了…

第二讲_HarmonyOS应用创建和运行

HarmonyOS应用创建和运行 1. 创建一个HarmonyOS应用2. 运行新项目2.1 创建本地模拟器2.2 启动本地模拟器2.3 在本地模拟器运行项目 1. 创建一个HarmonyOS应用 打开DevEco Studio,在欢迎页单击Create Project,创建一个新工程。 选择创建Application应用。…

spakr 提交任务

当前集群支持3中集群管理 Standalone&#xff08;spak框架自身拥有能力&#xff09;Apache Mesos Hadoop YARN Kubernetes 使用/spark-submit脚本提交任务&#xff0c;脚本后面可以接参数 ./bin/spark-submit \--class <main-class> \--master <master-url> \--de…

运用位运算管理状态标志—以SDWebImage为例

在看SDWebImage图片加载库的时候&#xff0c;看到了一个位运算的高级使用&#xff0c;之前对位运算深入了解只是在datalab中&#xff0c;但也只是处于“学会”的阶段&#xff0c;本篇介绍位运算在实践中管理状态的使用&#xff0c;希望能打开你的思路&#xff0c;对你有所帮助 …

服务器运维小技巧(一)——如何进行远程协助

服务器运维中经常会遇到一些疑难问题&#xff0c;需要安全工程师&#xff0c;或者其他大神远程协助。很多人会选择使用todesk或者向日葵等一些远控软件。但使用这些软件会存在诸多问题&#xff1a; 双方都需要安装软件&#xff0c;太麻烦需要把服务器的公钥/密码交给对方不知道…

【计算机硬件】2、指令系统、存储系统和缓存

文章目录 指令系统计算机指令的组成计算机指令执行过程指令的寻址方式&#xff08;怎么样找到操作数&#xff1f;&#xff09;1、顺序寻址2、跳跃寻址 指令操作数的寻址方式&#xff08;怎么样找到操作数&#xff1f;&#xff09;1、立即寻址方式2、直接寻址方式3、间接寻址方式…

Unity文字游戏开发日志(1)—— 打字机效果

作者是一名OIer,因为兴趣&#xff0c;想在寒假期间开发一款文字游戏的demo。 本博客仅用作记录&#xff0c;马蜂极度不符合规范。 但是&#xff0c;可以用来避坑。 1.等待功能——使用的是协程函数&#xff0c;且调用与常规调用函数不同。 private IEnumerator Sco(){isScoe…

鸿蒙开发-UI-布局-弹性布局

地方 鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 文章目录 前言 一、基本概念 二、布局方向 1、主轴为水平方向 2、主轴为垂直方向 三、布局换行 四、对齐方式 1、主轴对齐方式 2、交叉轴对齐方式 2.1、容器组件设置交叉轴对齐 2.2、子组件设置交叉…

常见框架漏洞

1.什么是框架 Web框架(Web framework)或者叫做Web应用框架(Web application framework)&#xff0c;是用于进行Web开发的一套软件架构。大多数的Web框架提供了一套开发和部署网站的方式。为Web的行为提供了一套支持的方法。使用Web框架&#xff0c;很多的业务逻辑外的功能不需…

RT-Thread 瑞萨 智能家居网络开发:RA6M3 HMI Board 以太网+GUI技术实践

以太网HMI线下培训-环境准备 R A 6 M 3 H M I − B o a r d \textcolor{#4183c4}{RA6M3 HMI-Board} RA6M3HMI−Board 本次培训将使用&#xff0c;由RT-Thread与瑞萨电子及LVGL官方合作推出的一款高性价比图形评估套件。它采用了瑞萨电子的高性能RA6M3芯片&#xff0c;具备2D的…

【C语言编程之旅 3】刷题篇-函数

第一题 解析 数组的下标是从0开始的。 需要注意的是D&#xff1a;int a[] {1,2,3},数组可以通过初始化确定大小。 第二题 解析 B,数组的大小必须是常量 第三题 解析 /* 解题思路&#xff1a;本题目主要是考察函数的声明定义&#xff0c;题目比较简单&#xff0c;请参考以…

c语言0基础笔记

目录 前言 第01章_C语言入门 1.1初识计算机语言 1.2初识C语言 1.3第一个c程序 1.4IDE使用 1.5注释 1.6第一个c程序剖析 1.7printf()输出格式 第02章_变量与进制 2.1关键字 2.2标识符 2.3变量 2.4基本数据类型的使用 2.5变量间的运算规则 2.6常量 2.7输入/输出函…

如何在Linux运行RStudio Server并实现Web浏览器远程访问

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. …

腊八节公益活动总结

春雨公益志愿服务队联合水城路社区红帆支部服务队于腊八节开展了公益活动&#xff0c;为环卫工人送上了热气腾腾的八宝粥以及新年福字。此次活动旨在为环卫工人营造温馨、充满爱心的氛围&#xff0c;让他们在冬日里感受到社会的温暖和关爱。 活动当天&#xff0c;志愿者们早早地…

el-table 内容过多自动换行

show-overflow-tooltip属性可以让内容过多时实现省略号&#xff0c;但是此时的需求是内容过多自动换行 <el-table-column prop"description" label"当前配置" width"200"><template v-slot:default"{ row }"><div styl…