嵌入式软件基础
一。嵌入式软件的特点
- 规模较小
- 开发难度大
- 硬件资源有限
- 一般涉及到底层软件的开发,需要软硬件基础
- 开发环境与运行环境不同
- 实时性和可靠性要求高
- 要求固化存储
二。嵌入式软件
1.分类
- 系统软件:控制和管理嵌入式系统资源,如嵌入式操作系统、驱动程序、中间件等
- 支撑软件:辅助软件开发的工具软件
- 应用软件:定义嵌入式设备的主要功能和用途,负责与用户进行交互
2.软件体系结构
1)无操作系统阶段
- 硬件配置较低,系统应用主要集中在控制领域
- 嵌入式软件的设计以应用为核心,应用软件直接建立在硬件上
两种实现方式
- 循环轮转
- 前后台系统(在循环轮转基础上增加了中断处理功能)
循环轮转
- 把系统分解成若干不同任务,包含在死循环的for语句中,按顺序逐一执行
优点:
- 简答,直观,开销少
缺点:
- 所有代码按顺序执行,无法处理异步事件,缺乏并行处理能力
前后台系统
- 前台程序(事件处理级):中断服务程序。负责处理异步事件
- 后台程序(任务级):一个无限循环,负责资源分配、管理和系统调度
- 系统运行时,后台程序会检查每个任务是否具有运行条件,对实时性要求严格的操作通用由中断完成
注意:
- 前后台系统认为所有的任务具有相同优先级,任务执行时通过队列排队
- 实时性较差
2)有操作系统阶段
- 开发应用在操作系统的基础上编写
优点:
- 提高系统可靠性
- 提高系统开发效率,降低成本,缩短开发周期
- 可以按软件工程的思想,分解程序为多个任务模块,对每个任务模块调试
- 商业软件提供了良好的多任务调试环境
- 有利于系统的扩展和移植
体系结构
- 硬件层(最底层)
- 设备驱动层(BSP)
- 包含了嵌入式系统中所有与硬件相关的代码
- 它负责直接与硬件打交道,对硬件进行管理和控制,为上层软件提供所需的驱动支持(类似与BIOS和驱动)
- 操作系统层
- 中间件层
- 应用软件层
1)设备驱动层
BSP(板级支持包 Board Support Package)
- 把嵌入式系统与具体的硬件平台隔离开来
- BSP中,所有与硬件相关的代码都封装起来,向上提供一个虚拟的硬件平台,供操作系统运行
- 操作系统用一组定义好的编程接口与BSP交互,通过BSP访问真正的硬件
BSP包含两个方面内容
- 引导加载程序Boot Loader(类似与BIOS)
- 嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行前运行的一段小程序
- 初始化硬件设备、建立内存空间的映射图
- 将系统的软硬件设置到一个合适的状态,为调用操作系统内核做准备
- 嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行前运行的一段小程序
- 设备驱动程序
- 是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口
- 基本功能:启动、关闭、停用、启用、读操作、写操作
Boot Loader的基本功能
- 片级初始化
- 完成微处理器的初始化
- 包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式、局部总线模式等
- 把微处理器从上电的默认状态设置成系统要求的工作状态。
- 纯硬件初始化过程
- 板级初始化
- 设置各种硬件寄存器来完成微处理器以外的其他硬件设备的初始化
- 设置某些软件的数据结构和参数
- 同时有软件和硬件的初始化过程
- 加载内核
- 将操作系统和应用程序的映象从Flsh存储器复制到系统内存中,
- 然后跳转到系统内核的第一条指令处继续执行。
设备驱动程序的组织结构
- 分层结构
- 把设备驱动程序中的函数分为硬件接口函数喝调用接口函数
- 上层接口不直接与硬件打交道
- 优点:
- 与硬件相关的细节都封装在硬件接口中,硬件需要升级时,只需要改硬件接口中的函数即可
- 混合结构
2)中间件
定义:操作系统内核、设备驱动程序和应用软件之外的所有系统软件
特点:
- 可以有效实现软件的可重用,减低应用软件的复杂性、提高系统的开发效率、缩短开发周期,节约开发成本和维护费用,提高系统的高伸缩性、易升级性、稳定性
- 缺点:带来额外的开销
分类
- 消息中间件 RM2
- 对象中间件 CORBA
- 远程过程调用、数据库访问中间件
- 安全中间件
嵌入式软件基础
https://ahaostillcoding.github.io/2023/04/05/嵌入式软件基础/