版权声明:本文为博主原创文章,如需转载,请注明出处 https://blog.csdn.net/qq_36554582/article/details/81297283 </div>
<div id="content_views" class="markdown_views prism-atom-one-dark">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
<ul>
- 简单的轮询结构
- 应用程序重复循环检查每个外部输入条件,一旦有需要处理的任务,则进行相应的处理
- 带中断的轮询结构(中断驱动结构或前后台结构)
- 当有外部事件(例如温度传感器报警)发生时,外部事件提出中断请求,暂停后台运行的主循环,进行前台处理,处理完成后又回到后台继续运行主循环
- 监控式操作系统+应用软件的结构
- 操作系统内核负责多任务处理,执行任务创建与初始化、任务调度、存储管理、时钟管理和中断管理等
- 多任务系统实际上是由多个任务、多个中断服务程序和嵌入式操作系统组成的有机整体
- 通用嵌入式操作系统+应用软件的结构
- 嵌入式操作系统从单一功能向多功能方向发展,从简单功能的内核扩展到包含驱动程序以及文件系统、网络协议栈等多种组件的复杂结构,应用程序则用于实现用户功能
- 高端嵌入式系统软件层次分为硬件层、系统软件层和应用软件层
- 其中系统软件层又分为硬件抽象层、操作系统层和中间件层
- 中间件软件是指除了操作系统内核、设备驱动程序和应用软件之外的系统软件
- HAL和BSP都是嵌入式系统的底层软件
- 将嵌入式系统软件中位于操作系统层与硬件之间的、与硬件相关的软件层次统称为硬件抽象层(HAL)
- HAL是在操作系统与硬件之间设置的独立的接口软件层,是所有直接依赖于硬件的软件,包括引导程序、硬件配置程序和硬件访问代码等
- 引入HAL的目的是对硬件进行抽象,使上层软件开发人员无须关心底层硬件的具体细节和差异,并且支持上层软件在不同体系结构和硬件平台之间的移植
- 板级支持包(BSP)可以被看作是硬件抽象层在特定操作系统环境下的具体实现
- BSP在系统复位之后负责系统软硬件环境的初始化,其功能可分为以下三部分:
- 系统复位时的硬件初始化,包括处理器芯片的初始化和电路板的初始化
- 为操作系统提供硬件相关的驱动程序支持
- 引导加载操作系统
- BSP的开发和调试都很困难,其中调试一般采用渐进的方式进行,将其调试分为两步:
- 最小系统的调试
- 外围设备驱动程序的调试
- 引导加载程序是底层软件的一部分。嵌入式系统上电复位后首先运行引导加载程序,它负责系统的上电自检、硬件初始化、建立存储空间映射、配置系统参数、建立上层软件的运行环境,并加载和启动操作系统
- 嵌入式操作系统的加载方式
- 在ROM中直接运行操作系统代码(启动加载模式)
- 在RAM中运行操作系统代码(启动加载模式)
- 从外存储器加载操作系统代码运行(启动加载模式)
- 从通信端口加载操作系统代码运行(下载模式)
- 设备初始化
- 设备 打开(激活)和关闭
- 设备读取和 写入
- 设备状态查询和设备控制操作
- 硬实时任务(强实时任务 )
- 必须在给定的时限内完成,超过时限将会导致任务失败或引起致命的错误
- 软实时任务(弱实时任务)
- 仍然要求系统的响应越快越好,但是偶尔超出时限并不会造成任务失败或导致任务出现致命错误,而是造成任务的服务质量下降
- 准实时任务
- 通常允许偶尔错过最后期限,但若超过时限,所进行的的操作或者计算结果没有任何意义
- 时间约束性
- 可预测性
- 可靠性
- 交互性
- 事件驱动
- 多级中断嵌套处理
- 细粒度的任务优先级控制
- 实时抢占优先级控制
- 中断延迟时间
- 任务切换时间
- 任务抢占时间
- 公开源码的高质量实时内核
- 可移植
- 可裁剪、可固化
- 时间确定性
- 多任务
- 抢占式内核
- 多种任务服务
- 任务的程序代码
- 任务堆栈
- 任务控制块
版权声明:本文为博主原创文章,如需转载,请注明出处 https://blog.csdn.net/qq_36554582/article/details/81297283 </div>
<div id="content_views" class="markdown_views prism-atom-one-dark">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
<ul>