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

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

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

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

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

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

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

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

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

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

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

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

    关注

    5068

    文章

    19014

    浏览量

    303130
  • 华为
    +关注

    关注

    215

    文章

    34294

    浏览量

    251163
  • 软件架构
    +关注

    关注

    0

    文章

    64

    浏览量

    10274
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

    直接参与开发,甚至是独立开发,那么无代码开发平台是唯一的选择。对于不懂编程技术的业务人员,哪怕是一句代码,都会被难倒。让业务人员可以自行搭建
    发表于 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 2548次阅读
    MiniGUI 的<b class='flag-5'>软件</b><b class='flag-5'>架构</b>

    白皮书_为的设计选择正确的软件架构

    白皮书_为的设计选择正确的软件架构
    发表于 12-25 22:17 0次下载

    嵌入式开发中常用的软件架构

    在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件
    的头像 发表于 01-01 10:16 5531次阅读
    嵌入式<b class='flag-5'>开发</b>中常用的<b class='flag-5'>软件</b><b class='flag-5'>架构</b>

    嵌入式开发软件架构存在的意义

    在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件
    的头像 发表于 09-08 09:18 2356次阅读
    嵌入式<b class='flag-5'>开发</b>中<b class='flag-5'>软件</b><b class='flag-5'>架构</b>存在的意义

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

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

    磐石测控:深圳按键开关不灵敏是因为什么?

    磐石测控:深圳按键开关不灵敏是因为什么?
    的头像 发表于 10-31 11:46 656次阅读
    磐石测控:深圳按键开关不灵敏<b class='flag-5'>是因为</b>什么?

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

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