单片机(嵌入式)程序分层架构

这篇具有很好参考价值的文章主要介绍了单片机(嵌入式)程序分层架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

嵌入式3层软件架构

嵌入式4层软件架构-1

驱动层

操作系统层

中间件层

应用层

嵌入式4层软件架构-2

硬件层

嵌入式微处理芯片

嵌入式存储器系统

嵌入式I/O接口

中间层

系统软件层

RTOS

文件系统

GUI

应用层

嵌入式5层软件架构1

嵌入式5层软件架构2

嵌入式6层软件架构

个人软件架构

MCU抽象层(MCU Abstract Layer)      

硬件驱动层(Hardware Driver Layer)     

功能模块层(Functional Module Layer)

应用层(Application Layer)


前言

        疫情带来的灾难,使得世界处于不稳定状态,全球缺芯片成为常态。对从事单片机和嵌入式底层的开发人员来增加很多的工作量,若是不注重代码分层或者分层不好的将是多么痛苦,老项目换芯片换个不停,新项目做好几套芯片方案。若有良好的分层思想,将是减少很多工作量!

        最初的单片机开发语言是汇编语言,但汇编语言会随着单片机种类的不同而不同。程序设计起来难度较大。后来人们改用C语言作为单片机程序设计的通用语言。这种不依赖于机器硬件的语言,可以方便的在各类单片机系统中移植,极大的加快了单片机程序开发的时间。这是单片机从语言上进行分层带来便利。像PC 、手机等标准化产品已进行了系统性的标准分层。对于其他嵌入式产品行业分层架构方式较多,源于行业的标准化程度及行业特性决定!但整体思想是一致的。

        本文罗列了市面常见的分层架构。对于复杂的系统产品分层方式较为统一,因为有人研究和专业的架构师岗位,以及产品标准化程度高。像单片机裸机软件分层架构相对较弱,因为硬件资源有限,分层越细会占用空间;项目简单,每个人都有自己的思想,没有统一的去研究;产品种类复杂标准化弱。不过还是有共性的,只是单片机裸机项目功能相对单一,分层不要过于太细,层级分的太多,隔离的太彻底,有时候反而增加了无谓的损耗,3~5层即可。

嵌入式3层软件架构

硬件层 嵌入式微处理器存储器,通用设备接口,io接口
中间层 底层硬件的初始化,数据的输入/输出操作,硬件设备的配置文件
软件层 多任务操作系统,文件系统,图形用户接口,网络系统,通用组件模块

嵌入式4层软件架构-1

        嵌入式系统的软件体系是面向嵌入式系统特定的硬件体系和用户要求而设计的,是嵌入式系统的重要组成部分,是实现嵌入式系统功能的关键。嵌入式系统软件体系和通用计算机软件体系类似,分成驱动层、操作系统层、中间件层和应用层等四层,各有其特点。

单片机(嵌入式)程序分层架构单片机(嵌入式)程序分层架构

驱动层

        驱动层是直接与硬件打交道的一层,它为操作系统和应用提供硬件驱动或底层核心支持。在嵌入式系统中,驱动程序有时也称为板级支持包(BSP)。BSP具有在嵌入式系统上电后初始化系统的基本硬件环境的功能,基本硬件包括微处理器、存储器、中断控制器、DMA、定时器等。驱动层--般可以有三种类型的程序,即板级初始化程序、标准驱动程序和应用驱动程序。

操作系统层

        嵌入式系统中的操作系统具有一般操作系统的核心功能,负责嵌入式系统的全部软硬件资源的分配、调度工作控制、协调并发活动。它仍具有嵌入式的特点,属于嵌入式操作系统(Embedded Operating System,EOS)。主流的嵌入式操作系统有Windows CE、Palm:OS、Linux、VxWorks.pSOS.QNX.LynxOS等。有了嵌入式操作系统,编写应用程序就更加快速、高效、稳定。 

中间件层

        中间件是用于帮助和支持应用软件开发的软件,通常包括数据库、网络协议、图形支持及相应开发工具等,例如:MySQL、TCP/IP、GU1等都属于这一类软件。

应用层

        嵌入式应用软件是针对特定应用领域,用来实现用户预期目标的软件。嵌入式应用软件和普通应用软件有一定的区别,它不仅要求在准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。嵌入式系统中的应用软件是最活跃的力量,每种应用软件均有特定的应用背景。尽管规模较小,但专业性较强,所以嵌入式应用软件不像操作系统和支撑软件那样受制于国外产品,是我国嵌入式软件的优势领域。

嵌入式4层软件架构-2

  • 硬件层;
  • 中间层;
  • 系统软件层 ;
  • 应用软件层 ;

硬件层

硬件层的结构如下:

单片机(嵌入式)程序分层架构
嵌入式的硬件层主要分为三个部分:嵌入式微处理芯片嵌入式存储系统 嵌入式 I/O 接口


嵌入式微处理芯片

        主要包括:嵌入式微处理器、嵌入式微控制器、嵌入式数字信号处理器、嵌入式片上系统等;嵌入式微处理器与通用 CPU 最大的区别在于将 CPU 中需要需要外部设备来完成的任务集成到了芯片内部。

  • 嵌入式微处理器是嵌入式系统硬件层的核心部分;
  • 微处理器最大的特点是:集成化、体积小、功耗小、成本低、稳定性高;
  • 不同微处理器的体系结构不一样,主要分为冯诺依曼和哈弗结构;
  • 即使同一体系结构的微处理器使用的时钟频率、数据总线宽度、集成的外设和接口也会不一样;

嵌入式存储器系统

        主要包括:程序存储器、数据存储器和参数存储器,主要以 Cache、ROM、RAM、Flash、SD卡等;

  • Cache:又叫高速缓冲存储器,是主存和处理器内核之间的一种容量小、速度快的存储器阵列,相当于在主存和内核之间构建了一条缓冲带。主要用于存放最近一段时间内核微处理器用到最多的指令和数据;Cache 分为指令 Cache 和 数据 Cache,微处理器尽量从 Cache 中读取指令和数据,减小在主存读取数据和指令的次数。Cache 存在提高了系统数据传输率和性能;
  • 主存储器:主要用来存放用户的程序和数据,是嵌入式微处理器能直接访问的存储器。主存储器可以位于处理器内部外部,常用的ROM类存储器为:EEPROM 、PROM;常用的 RAM 类存储器为:SRAM、DRAM、SDRAM等;一般容量较小(256KB – 1G ),读取速度快;
  • 辅助存储器:通常指硬盘、NOR Flash, NAND Flash, CF卡, SD卡等,主要用来存放大容量的程序代码或数据。一般容量较大,读取速度慢;

嵌入式I/O接口

嵌入式系统与外接交互所需要的通用设备接口,通常为:

  • GPIO;
  • A/D 转换接口;
  • RS-232接口(串行通信接口);
  • SPI(串行外围设备接口);
  • 以太网接口;
  • USB(通用串行总线接口);
  • I2C(现场总线接口);
  • 音频接口;
  • VGA视频输出接口;
  • IrDA(红外线接口);

中间层

        中间层也称为硬件抽象层(Hardware Abstract Layer,HAL) 或者叫板级别支持包(Board Support Package,BSP),位于硬件层和软件层之间,用于连接软件层和硬件层。

  • BSP 是一个介于操作系统和底层硬件之间的软件层,为操作系统控制底层硬件提供了接口;
  • BSP 具有硬件相关性和软件相关性:
    • 硬件相关性:是指 BSP 需要和硬件平台相关联,不同硬件环境需要不同的 BSP 控制;
    • 软件相关性:是指 BSP 也要迎合操作系统的接口,不同的操作系统具有不同的硬件操作接口;
  • BSP 有一个很重要的功能是硬件初始化,嵌入式系统硬件初始化自下而上,从硬件到软件分为三个主要环节:片级初始化、板级初始化、系统级初始化
    • 片级初始化:主要是对微处理器进行初始化,包括:对处理器寄存器(包括数据寄存器和控制寄存器)的初始化,对处理器片内总线的初始化;
    • 板级初始化:主要是对软硬两部分初始化,包括:对非处理器部分的初始化,设置软件系统运行需要的数据结构和参数;
    • 系统初始化:主要是对操作系统和应用软件的初始化。首先,BSP 将处理器的控制权转交给操作系统,操作系统完成初始化,并创建应用程序环境;然后,操作系统将处理器控制权交给应用程序。
  • BSP 中包含硬件相关的设备驱动程序,BSP 一般不直接调用这些驱动程序,而是操作系统通过 BSP 连接驱动程序,最终是应用程序调用操作系统接口使用设备驱动程序,实现对硬件设备的操作;

系统软件层

        系统软件层通常包括实时多任务操作系统(Real-Time Operation System, RTOS)、文件系统图像用户接口(Graphic User Interface,GUI)、网络系统通用组件模块。其中, RTOS 是嵌入式应用软件的基础和开发平台。

RTOS

RTOS 的作用:

  • 负责嵌入式系统资源分配(软件/硬件资源);
  • 任务调度;
  • 同步机制;
  • 中断处理;
  • 文件处理;
  • 提供统一的设备驱动接口;
  • 支持 TCP/IP 协议和其他协议;
  • 提供 GUI 图形化界面操作接口;

RTOS 的特点:

  • 强实时性;
  • 可裁剪性;
  • 可移植性;
  • 硬件适应性;
  • 开放性;

RTOS 和 应用软件被固化在嵌入式计算机的 ROM 中;

文件系统

嵌入式文件系统建立在 RTOS 之上,一般提供如下功能:

  • 提供基本的文件存储、检索和更新功能;
  • 支持 FAT32、JFFS2、YAFFS等几种标准文件格式;
  • 支持修改文件权限;
  • 支持建立、修改、改变和删除目录等服务;
  • 支持创建、打开、读写、关闭和撤销等服务;

文件系统的特点:

  • 强兼容性;
  • 实时性;
  • 可裁剪性;

GUI

        GUI 为人机交互提供了非常人性化的接口。嵌入式GUI 与 PC 上的 GUI 有着明显的不同,嵌入式的 GUI 具有如下特点:

  • 轻量型;
  • 占用资源少;
  • 高性能;
  • -高可靠性;
  • 便于移植;
  • 可配置;

应用层

        应用层软件就是根据实际需求开发的应用软件。嵌入式应用软件主要有以下特点:

  • 反应快捷;
  • 占用资源少;
  • 同时方便多用户操作;
  • 友好的人机界面;

 

嵌入式5层软件架构1

  • 硬件驱动层
  • 功能模块层
  • 应用接口层
  • 业务逻辑层
  • 应用层

单片机(嵌入式)程序分层架构

嵌入式5层软件架构2

  • 硬件驱动层
  • 功能模块层
  • 系统层
  • 业务逻辑层
  • 应用层

单片机(嵌入式)程序分层架构

嵌入式6层软件架构

       简写

(英文全称)

名称 内容 说明

HAL

(Hardware Abstract Layer)

硬件抽象层 内核驱动,主要是对SFR的配置,并将其封装起来。 硬件抽象层和硬件驱动层则是项目需求书中的功耗等硬件相关的需求变动而改变,若子功能的增加而硬件不支持,则也需更换硬件驱动。比如项目中的数据储存功能,硬件支持有AT24C02、W25Q128和芯片本身的FLASH,都可以支持数据储存功能,即使后期因为功耗或节约成本等问题,硬件的更换也不影响数据储存功能的实现(前提规划好标准规范的API函数定义)且避免了重写该功能代码所带来的各种问题,保证了该功能的稳定性。

HDL

(Hardware Drvier Layer)

硬件驱动层 对HAL层和OSL层进行封装,因为HAL层一般是厂家提供,不是特别方便直接使用
对一些非片内的硬件资源(HAL库不提供)进行驱动

OSL

(Open System Layer)

操作系统层 操作系统、文件系统、GUI

FML

(Functional Module Layer)

功能模块层 功能模块层是按照项目需求提取出来的功能,需要硬件抽象层和硬件驱动层的硬件支持才能实现,功能模块层根据项目的功能需求改变而改变。

BLL

(Business Logic Layer)

业务逻辑层 按照流程来调用功能模块工作

APL

(Application Layer)

应用层  调用不同业务逻辑来完成应用

个人软件架构

MCU抽象层(MCU Abstract Layer)      

MCU是开发的核心和基础,所以应将其作为最底层,为上层提供基础支持。该层要求如下:

1,方便替换 单片机。

         每家芯片寄存器或API库命名和操作都不相同,为了方便替换不对其他层代码改动,把MCU外设(GPIO,AD,UART....)抽象封装成统一的API或寄存器别名。

 2,方便应用  不同项目。

        MCU是专业通用芯片,会应用在不通产品,所以该层不能体现项目和方案信息,应内聚为MCU大类信息。

3,项目需要的进行抽象封装。

        如果完全将MCU的库封装一遍工作量将十分巨大,也没必要,需要哪个就封装哪个。例如用到uart了那就只把uart的封装一下,像IIC、SPI等无关的可以不用封装。不过可以一个项目一个项目的沉淀,越往后工作量越少。

硬件驱动层(Hardware Driver Layer)     

        这一层是纯粹面向硬件设计的,对电路板的外设进行通用封装抽象(移植其他项目也可以用,与应用逻辑无关联),向上层提供硬件抽象接口。

        如:常见的外围EEPROM芯片AT24C02,W25Q64等;控制电源芯片,AD采样芯片等;芯片级总线I2C、SPI,RS232协议、RS485协议、CAN总线等;按键,蜂鸣器,屏幕等驱动。

功能模块层(Functional Module Layer)

        MCU层与硬件驱动层是为了功能模块提供的硬件驱动,从而实现项目需要的功能模块。如存储功能,电源设置功能,显示功能,算法库,文件库等。向上提供应用层的功能模块接口,向下调用驱动接口。

应用层(Application Layer)

         应用层主要负责功能模块的使用和之间的逻辑关系处理等,实现产品整体功能系统逻辑。对于大部分单片机产品应用层一层就可以了,太复杂了,反而臃肿。但对于复杂的产品项目,可继续细分,如下:

应用接口层:提供公共的 API 接口供应用接口供上层调用。这些接口也可由下层的功能模块开放出来,应用接口层负责汇总。

业务逻辑层:如 CPU 卡处理,交通部卡处理,银联卡处理,M1 卡处理,通信记录上传,黑名单下载,票价参数下载等。

应用层:为程序的总体的运行框架,组织调用业务逻辑。可以用某种嵌入式操作系统实现几种任务 。如定时任务,卡处理任务,菜单任务,通信任务。文章来源地址https://www.toymoban.com/news/detail-417938.html

到了这里,关于单片机(嵌入式)程序分层架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机和Linux嵌入式区别

    单片机是一种集成电路,它能够在一个芯片上完成各种计算、控制和管理任务。单片机没有明确的分层,这是因为它通常被用来设计嵌入式系统,其程序结构和功能要根据具体的应用需求来设计。 在单片机的程序设计中,可以通过一些方法将程序分为不同的层次,比如可以将

    2024年01月17日
    浏览(54)
  • 【单片机/嵌入式】最完整学习路线

            关于这个问题我在网上寻找到 了 相关文章解释得很详细,不了解的同学可以参考一下这篇文章: 到底什么是嵌入式?什么是单片机? - 知乎         一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助

    2024年02月03日
    浏览(45)
  • 【唠唠嵌入式】__如何学习单片机?

    目录 前言 个人定位,从事软件还是硬件? 学习内容 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。 作为一个老司机,多年来跟 单片机 、 Keil 、 C语言 、 AD 、 烙铁 、 风枪 、 示波器 、 电子元器件 纠缠不清。期间经历了不少磨练,熬过了很多夜晚,也掉了大把头

    2024年02月06日
    浏览(61)
  • 嵌入式51单片机04-矩阵按键系列

    一、矩阵按键基础知识 矩阵按键工作原理 : 逐行扫描 :通过高四位轮流输出低电平来对矩阵键盘进行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过判断低四位数据中哪一位为零来判断哪一个按键被按下。 逐列扫描 :通过低四位轮流输出低电平来

    2024年02月07日
    浏览(54)
  • 嵌入式(二)单片机基础 | 单片机特点 内部结构 最小系统 电源 晶振 复位

    上一篇文章我们介绍了嵌入式系统 嵌入式系统(Embedded System)是一种特定用途的计算机系统,它通常嵌入在更大的产品或系统中,用于控制、监测或执行特定的任务。这些系统通常由硬件和软件组成,旨在满足特定的需求,如嵌入在家电、汽车、医疗设备、工业自动化、消费

    2024年02月02日
    浏览(98)
  • 嵌入式软件必读10本书_单片机篇

    大家好,我是知微! 虽然现在网上的技术文章非常多,但缺点是知识点太零散。 书籍是经过精心整理和编排的,仍旧是非常优秀的学习资料。下面一起来看看本文推荐的10本书吧! 这本书物融合了生动活泼的漫画、风趣幽默的文字,以浅显易懂的方式探讨编程思维。 特别适

    2024年02月19日
    浏览(56)
  • 梳理一下嵌入式和单片机之间的关系

    一定有很多人都听说过嵌入式和单片机,但在刚开始接触时,不知道大家有没有听说过嵌入式就是单片机这样的说法,其实嵌入式和单片机还是有区别的。单片机与嵌入式到底有什么关系? 下面我们就来说说嵌入式和单片机之间的联系和区别吧。 01  什么是单片机? 首先,

    2024年02月04日
    浏览(40)
  • 嵌入式Linux知识第六章——单片机

    目录 6.1 CPU 内存 虚拟内存 磁盘/硬盘 的关系⭐⭐⭐ 6.2 CPU内部结构⭐⭐⭐⭐ 6.3 ARM结构处理器简析 ⭐⭐ 6.4波特率是什么,为什么双方波特率要相同,高低波特率有什么区别;⭐⭐⭐⭐ 6.5arm和dsp有什么区别⭐⭐ 6.6 ROM RAM的概念浅析⭐⭐⭐ 6.7 IO口工作方式:上拉输入 下拉输入

    2024年04月10日
    浏览(68)
  • 嵌入式项目分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(61)
  • 嵌入式单片机——60秒计时器的实现

    1.设计秒计时器,要求实现60秒计时,用2位LED数码管显示。 2.按键K1,实现秒表的停止和启动。

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包