嵌入式软件基础

一。嵌入式软件的特点

  • 规模较小
  • 开发难度大
    • 硬件资源有限
    • 一般涉及到底层软件的开发,需要软硬件基础
    • 开发环境与运行环境不同
  • 实时性和可靠性要求高
  • 要求固化存储

二。嵌入式软件

1.分类

  • 系统软件:控制和管理嵌入式系统资源,如嵌入式操作系统、驱动程序、中间件等
  • 支撑软件:辅助软件开发的工具软件
  • 应用软件:定义嵌入式设备的主要功能和用途,负责与用户进行交互

image-20230405220914250

2.软件体系结构

1)无操作系统阶段

  • 硬件配置较低,系统应用主要集中在控制领域
  • 嵌入式软件的设计以应用为核心,应用软件直接建立在硬件上

两种实现方式

  • 循环轮转
  • 前后台系统(在循环轮转基础上增加了中断处理功能)
循环轮转
  • 把系统分解成若干不同任务,包含在死循环的for语句中,按顺序逐一执行

​ 优点:

  • 简答,直观,开销少

​ 缺点:

  • 所有代码按顺序执行,无法处理异步事件,缺乏并行处理能力
前后台系统
  • 前台程序(事件处理级):中断服务程序。负责处理异步事件
  • 后台程序(任务级):一个无限循环,负责资源分配、管理和系统调度
    • 系统运行时,后台程序会检查每个任务是否具有运行条件,对实时性要求严格的操作通用由中断完成

​ 注意:

  • 前后台系统认为所有的任务具有相同优先级,任务执行时通过队列排队
  • 实时性较差

2)有操作系统阶段

  • 开发应用在操作系统的基础上编写
优点:
  • 提高系统可靠性
  • 提高系统开发效率,降低成本,缩短开发周期
    • 可以按软件工程的思想,分解程序为多个任务模块,对每个任务模块调试
    • 商业软件提供了良好的多任务调试环境
  • 有利于系统的扩展和移植
体系结构
  • 硬件层(最底层)
  • 设备驱动层(BSP)
    • 包含了嵌入式系统中所有与硬件相关的代码
    • 它负责直接与硬件打交道,对硬件进行管理和控制,为上层软件提供所需的驱动支持(类似与BIOS和驱动)
  • 操作系统层
  • 中间件层
  • 应用软件层
1)设备驱动层

BSP(板级支持包 Board Support Package)

  • 把嵌入式系统与具体的硬件平台隔离开来
  • BSP中,所有与硬件相关的代码都封装起来,向上提供一个虚拟的硬件平台,供操作系统运行
  • 操作系统用一组定义好的编程接口与BSP交互,通过BSP访问真正的硬件

BSP包含两个方面内容

  • 引导加载程序Boot Loader(类似与BIOS)
    • 嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行前运行的一段小程序
      • 初始化硬件设备、建立内存空间的映射图
      • 将系统的软硬件设置到一个合适的状态,为调用操作系统内核做准备
  • 设备驱动程序
    • 是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口
    • 基本功能:启动、关闭、停用、启用、读操作、写操作

Boot Loader的基本功能

  • 片级初始化
    • 完成微处理器的初始化
    • 包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式、局部总线模式等
    • 把微处理器从上电的默认状态设置成系统要求的工作状态。
    • 纯硬件初始化过程
  • 板级初始化
    • 设置各种硬件寄存器来完成微处理器以外的其他硬件设备的初始化
    • 设置某些软件的数据结构和参数
    • 同时有软件和硬件的初始化过程
  • 加载内核
    • 将操作系统和应用程序的映象从Flsh存储器复制到系统内存中,
    • 然后跳转到系统内核的第一条指令处继续执行。

设备驱动程序的组织结构

  • 分层结构
    • 把设备驱动程序中的函数分为硬件接口函数喝调用接口函数
    • image-20230408144401204
      • 上层接口不直接与硬件打交道
    • 优点:
      • 与硬件相关的细节都封装在硬件接口中,硬件需要升级时,只需要改硬件接口中的函数即可
  • 混合结构
    • 没有明确层级关系
    • 上层接口和硬件接口函数混在一起、相互调用

image-20230408144735814


2)中间件

定义:操作系统内核、设备驱动程序和应用软件之外的所有系统软件

特点:

  • 可以有效实现软件的可重用,减低应用软件的复杂性、提高系统的开发效率、缩短开发周期,节约开发成本和维护费用,提高系统的高伸缩性、易升级性、稳定性
  • 缺点:带来额外的开销

分类

  • 消息中间件 RM2
  • 对象中间件 CORBA
  • 远程过程调用、数据库访问中间件
  • 安全中间件

image-20230408145816566


嵌入式软件基础
https://ahaostillcoding.github.io/2023/04/05/嵌入式软件基础/
作者
a_hao
发布于
2023年4月5日
许可协议