0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

不能独立开发,是因为你不懂软件架构

朱老师物联网大讲堂 2024-03-15 08:09 次阅读

嵌入式软件架构设计一般采用分层思想,称为“分层架构”。

part1

一、什么是分层架构?

分层架构(Layered Architecture)是一种将系统分为互相隔离的层,每一层完成特定功能的设计方式。这种架构有助于提高代码的可管理性和可维护性。在嵌入式系统中,分层架构常常如下划分:

物理硬件层:这是系统最底层,包括微处理器、存储设备、传感器、执行器等具体的物理硬件。

硬件抽象层(HAL):提供一个与硬件通信的统一API,使上层软件不用关心硬件的具体实现细节。HAL定义了一组标准的函数或指令集,用于访问接口硬件。

低级驱动层:包括直接与硬件组件如GPIO、ADCUART等进行通信的驱动程序。这些驱动封装了对硬件的访问,供高级应用使用。

操作系统层:如果嵌入式系统采用了操作系统(如LinuxRTOS等),则该层负责管理硬件资源、任务调度、内存管理、设备管理等。

中间件层:提供一种抽象层,协助开发者处理如通信协议、数据格式转换、设备配置、系统服务等复杂的功能。

应用层:该层包含用于执行特定任务的应用程序。它使用下层提供的服务,并通过用户接口与用户互动。

part2

二、分层架构有哪些实例?

01

51e3a420-e260-11ee-9118-92fbcf53809c.png

RT-Thread

51ecff16-e260-11ee-9118-92fbcf53809c.png

51f260a0-e260-11ee-9118-92fbcf53809c.png

02

51e3a420-e260-11ee-9118-92fbcf53809c.png

华为LiteOS

51ecff16-e260-11ee-9118-92fbcf53809c.png

520f6bf0-e260-11ee-9118-92fbcf53809c.png

03

51e3a420-e260-11ee-9118-92fbcf53809c.png

基于STM32G474双向DCDC数字电源项目

51ecff16-e260-11ee-9118-92fbcf53809c.png

523acc28-e260-11ee-9118-92fbcf53809c.png

- 点击查看-

【基于STM32G474的DCDC数字电源】项目详情介绍

part3

三、为什么要使用分层架构?

使用分层架构主要是因为它提供了如下几个重要的优势:

抽象性和解耦:分层架构通过在硬件和应用代码之间提供抽象层,允许应用程序开发者编写与特定硬件实现无关的代码。这降低了各组件之间的耦合度,方便了软件维护和升级。

可维护性和可测试性:分层架构提高了代码的可维护性,因为每层都可以独立地开发和测试,问题定位也更为直接。

模块化和重用性:嵌入式系统往往需要在不同产品或项目间重复使用某些模块。分层架构设计的系统可以更容易地重用某层代码,减少开发工作量和成本。

跨平台移植性:当嵌入式系统需要移植到新的硬件平台时,分层架构使得只需要改动硬件抽象层和设备驱动层,而应用层和中间件层可以不作或少作修改。

更好的协作:分层架构使得工作可以在项目团队成员间更高效地分工。例如,一些成员可以专注于底层驱动,而其他人可以专注于业务逻辑和用户界面。

安全性和隔离:通过在不同层之间设立防火墙,可以抵御系统级别的故障扩散。若一层出现问题,不会直接影响到其他层,这在安全关键的嵌入式系统中尤其重要。

简化复杂性:嵌入式系统往往需要处理许多低级硬件操作,将这些细节隐藏在底层可以简化上层的逻辑,使得开发更为简单。

规范开发流程:分层架构通过对功能和责任的清晰划分,帮助制定标准化的开发流程,这使得项目更容易管理和跟踪。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4982

    文章

    18281

    浏览量

    288438
  • 华为
    +关注

    关注

    215

    文章

    33619

    浏览量

    247151
  • 软件架构
    +关注

    关注

    0

    文章

    60

    浏览量

    10224
收藏 人收藏

    评论

    相关推荐

    为什么不会接开关呢?是因为不懂这些

    电工技术
    学习电子知识
    发布于 :2022年10月13日 20:58:36

    工作之所以成为工作,是因为只需要工作而不需要...

    有这么一句名言: 工作,它之所以成为工作,是因为只需要工作而不需要思考。   也许会对这句话有异议,但是大部分人和大部分工作确实是这样的。工厂员工在流水线上机械地组装,服务员每天重复着招待
    发表于 11-19 16:47

    AD仿真,这个错误是因为什么?

    这个错误是因为什么?
    发表于 11-03 21:53

    代码阅读能力不行,是因为没看到此文!

    提高代码阅读技巧的方法,以下是译文。在软件开发人员的职位描述中有阅读源代码。然而,这体验并不总能令人愉悦。不是每个人都喜欢阅读别人的代码,因为他们觉得那很乏味,甚至有时令人感到沮丧。有些案例中,开始
    发表于 10-21 11:18

    【设计技巧】可以不懂OOP,却不能不懂封装

    供其他开发人员快速理解程序,这样程序的可读性就大大提高了。下图是一个德国人写的工具包,其设计就非常规范使用库函数而不使用类也可以设置访问的Scope属性想要精通软件设计可不是一件容易的事情,需要懂得
    发表于 07-26 08:00

    为什么要开发模块化的软件架构

    。新一代的测试架构应当容纳多种产品的测试需求并促进新型测试技术的添加,从而在未来实现其他的测试融合。开发强健开放的测试软件架构,对于设计模块化的测试
    发表于 08-12 08:06

    不懂编程的人可以用哪些代码开发平台

    直接参与开发,甚至是独立开发,那么无代码开发平台是唯一的选择。对于不懂编程技术的业务人员,哪怕是一句代码,都会被难倒。让业务人员可以自行搭建
    发表于 04-29 14:37

    嵌入式软件开发中的程序架构

    在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件
    发表于 02-02 06:58

    软件架构存在的意义

    有经验的工程师和一个初学者的分水岭。软件架构对于开发人员是友好的,希望先执行什么任务后执行什么任务,
    发表于 10-27 09:34

    stlink无法识别是因为什么?

    stlink无法识别是因为什么
    发表于 10-31 06:40

    MiniGUI 的软件架构

    MiniGUI 的软件架构 4.1 基于 MiniGUI 的嵌入式系统结构为什么 MiniGUI 能够在如此众多的嵌入式操作系统上运行?这是因为 MiniGUI 具有良
    发表于 03-28 12:04 2444次阅读
    MiniGUI 的<b class='flag-5'>软件</b><b class='flag-5'>架构</b>

    嵌入式软件开发中三种程序架构

    前言 在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件
    的头像 发表于 02-11 10:19 2100次阅读
    嵌入式<b class='flag-5'>软件开发</b>中三种程序<b class='flag-5'>架构</b>

    嵌入式软件开发三种程序架构详解

    在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。 软件
    的头像 发表于 09-05 09:53 3218次阅读
    嵌入式<b class='flag-5'>软件开发</b>三种程序<b class='flag-5'>架构</b>详解

    汽车功能安全软件开发阶段软件架构安全设计

    软件安全架构旨在刻画出实现软件功能安全基本的软件框架,需要在系统架构的基础上,对其软件部分进行进
    发表于 10-08 10:45 2099次阅读

    锡膏不上锡是因为活性不足吗?

    众所周知,有时候锡膏不上锡是因为活性不足,还有人会说活性越多越好。有时候锡膏不挂锡是因为活性不足吗。这样的话,你会觉得锡膏的活性越高越好吗?下一步由深圳锡膏厂家为大家分析一下:大家都知道锡膏中有许多
    的头像 发表于 01-04 15:46 245次阅读
    锡膏不上锡<b class='flag-5'>是因为</b>活性不足吗?