导图社区 计算机三级4.嵌入式系统软件组成
计算机三级4.嵌入式系统软件组成的思维导图,汇总了嵌入式系统软件的组成、嵌入式操作系统[E0S]、μC/OS嵌入式操作系统的知识。
编辑于2023-06-07 15:08:46 江西嵌入式系统软件
3.μC/OS嵌入式操作系统
微控制器操作系统【μC/OS】
可移植、可固化、可裁剪的公开源码抢占式多任务RTOS内核
μC/OS-Ⅱ
(1) 实时多任务操作系统内核
(2) 执行效率高、占用空间小、实时性能优良和扩展性强等特点
(3) 主要特点
公开源码的高质量实时内核
可移植、可裁剪、可固化
时间确定性、多任务
抢占式内核、多种系统服务
(4) 组成
任务调度、任务管理、时间管理
任务间同步与通信以及内存管理、系统管理等
(5) 源代码组成
系统核心
任务管理、时钟管理、内存管理
任务同步与任务间通信
处理器相关代码
一套专门的数据类型
(6) 任务
构成
程序代码(无返回值的C函数)、任务堆栈、任务控制块【TCB】
任务状态
休眠态、就绪态、运行态、等待态、被中断态
任务调度
0为最高优先级
预定义了2个系统任务为应用程序服务
空闲任务与统计任务
采用基于优先级的调度算法
支持任务级和中断级的任务调度
中断处理
……
(7) 系统服务
……
(8) 应用程序设计
……
1.嵌入式系统软件的组成
(1) 特点
1||| 软硬件一体化,软件固化存储
2||| 软件代码时空效率要求高,实时性要求高
3||| 软件可裁剪,尽可能去除冗余
4||| 软件应用环境复杂,安全性和可靠性要求高
5||| 软件开发难度大
6||| 软件面向用户、产品、应用,受限于功能和具体应用环境
7||| 软件产业高度分散
8||| 软件具有较长的生命周期
(2) 软件结构
1||| 轮询轮训结构——最简单的软件结构
无中断机制,结构简单
适用于系统的任务数量小,任务处理简单且实时性要求不高
2||| 带中断的轮训结构
中断驱动程序/前后台结构
后台:循环执行的轮询程序
前台:若干中断服务程序组成
提高了系统对紧急事件的响应度,并发处理不同的异步事件
3||| 监控式操作系统+应用软件的结构
特点
多个任务在一个CPU上并行
将复杂的系统分解成响度独立的多个任务
降低开发复杂度,保证系统实时性和可维护性
车载导航等
4||| 通用嵌入式操作系统+应用软件的结构
高端嵌入式系统(基于Android或iOS的智能手机系统等)
选择嵌入式系统软件结构的一个基本原则
可以满足响应时间需求的最简单的结构
(3) 硬件抽象层【HAL】与板级支持包【BSP】
HAL
简述
位于操作系统层与硬件之间的、与硬件相关的软件层次的统称
操作系统层与硬件之间设置的独立的接口软件层
特点:提高系统可移植性
BSP
简述
硬件抽象层在特定操作系统环境下的具体实现
用户或硬件制造商专门编写的依赖于硬件的代码
特点
实现嵌入式操作系统的可移植性和跨平台性
有硬件相关性和操作系统相关性
在系统复位后负责软硬件环境的初始化
硬件初始化(包括处理器芯片和电路板)
为操作系统提供硬件相关的驱动程序支持
引导加载操作系统
开发和移植
调试
(1) 最小系统的调试
(2) 外围设备驱动程序的调试
(4) 引导加载程序【bootloader】
1||| 简述
是底层软件的一部分
系统电复位后首先运行引导加载程序,负责系统的上电自检、硬件初始化、建立存储空间映射、配置系统参数、建立上层软件的运行环境,并加载和启动操作程序
bootROM(引导只读存储器)
非易失存储器
存储bootloader程序,操作系统映像,应用程序代码等
2||| 加载方式
(1) 在ROM中直接运行操作系统代码
(2) 在RAM中运行操作系统代码
(3) 从外存储器加载操作系统代码运行
启动加载模式
(4) 从通信端口加载操作系统代码运行
下载模式(调试或更新阶段使用的系统启动方式)
3||| 支持两种工作模式的典型做法
进入启动加载模式前延迟数秒并通过终端界面给出提示,按键切换到下载模式,否则继续正常的启动加载
4||| 执行过程
第一阶段(stage 1)
目的:使系统正常运行,为之后操作系统内核的运行做好硬件准备
使用汇编语言
第二阶段(stage 2)
使用C语言
5||| U-Boot
……
公认的功能最强、最具弹性以及更新最快的开放源码BootLoader
(5) 设备驱动程序
1||| 简述
功能层次
直接与硬件相互作用并控制硬件的软件
驱动程序调用者
对硬件操作的抽象,以实现高层软件对硬件的访问
2||| 特性
只能被高层软件调用而无法自行运行
对上层软件屏蔽硬件细节,二巷层硬件直接操作
3||| 功能
设备的初始化、打开(激活)和关闭、读取和写入(数据收发、)、状态查询和控制操作等
4||| 实现方式
驱动程序位于软件最下层……
5||| VxWorks的I/O系统
驱动程序
初始化部分
函数功能部分
中断服务程序
2.嵌入式操作系统【EOS】
实时操作系统
实时系统
关键:处理事件的时间的可预见性和确定性
最重要的指标:时限
相对时限
事件提出请求后,系统做出相应所允许的最大时间长度
绝对时限
不管请求何时提出,相应任务必须完成的截止时刻
据时限对系统性能的影响程度分类
硬实时系统
软实时任务
准实时任务
关键特性
时间约束性
可预测性
可靠性
交互性
实时操作系统
关键:完成每次任务所需时间的一致性
分类
硬实时操作系统
抖动比软实时小
完成每次任务所需时间的偏差
软实时操作系统
时间确定性取决于
响应中断的速度
系统是否具有足够的处理能力在规定时限内完成所有的事件请求
保障
事件驱动、多级中断嵌套处理、细粒度的任务优先级控制、实时抢占式调度
实时性指标:响应时间
中断延迟时间
任务切换时间
任务抢占时间
概述
(1) 特点
代码固化存储,时空效率高
可裁剪性
实时性
强稳定性,弱交互性
硬件适应性
(2) 分类
实时性
硬实时操作系统
通信、军事、航天、控制等
VxWorks、RTEMS、QNX、μC/OS-Ⅱ等
软实时或非实时操作系统
类PC手持设备、电器等消费类电子产品
WinCE、嵌入式Linux等
开发方式
专门为嵌入式环境开发的EOS
通信、军事、航天、控制等
从通用计算机操作系统移植而来的EOS
类PC手持设备、电器等消费类电子产品
商业模式
免费的EOS
RTEMS、eCOS、FreeRTOS等
商业EOS
μC/OS商用系列
(3) 内核结构
简述
操作系统中的一组核心模块
作用:管理系统资源、支持多任务并发执行
分类
单内核(宏内核)结构
分类
整体结构
耦合度高、结构不清晰、维护和升级难
分层结构
嵌入式Linux等Unix系统
功能按模块化组织,使操作系统结构清晰,接口简单,系统的正确性容易得到保证,利于开发和维护
优点:性能较好,系统的各组件之间可以相互调用,功能切换和通信开销小
缺点:占用资源多,维护工作量大
目前主要采用分层和模块化相结合的红内核结构,或微内核结构
应用软件层、中间件层、操作系统层和硬件抽象层
微内核结构
简述
仅将必备的基本功能放入内核,其他都在内核之外,是内核结构很小
两部分
运行在核心态的内核,完成很少的一些核心任务
运行在用户态的若干进程,每个进程完成一组系统服务(服务进程)
优点
内核精巧,结构紧凑,占用内存少
开发维护方便,动态更新服务模块,可靠性高
接口一致,可扩展性与可配置性强,支持分布式系统
缺点
效率较低,性能相对较差,通信和上下文切换的开销大大增加
(4) Linux内核
类Unix系统
参照Minix开发
采用单内核结构,模块化设计,支持内核线程
自由软件
开源软件【OSS】
Linux操作系统是指Linux的发版权
GNU/Linux操作系统以Linux为GNU操作系统内核
IBM巨型机Blue Gene,天河一号巨型机操作系统内核采用Linux
(5) 嵌入式Linux操作系统
结构
上层
运行在用户空间
应用程序及工具软件,以及GNU C运行库GLIBC
下层
运行在内核空间
Linux内核
Linux的内核空间
最上层
系统调用接口
中间层
内核核心,是Linux所支持的所有处理器和特定的硬件平台
最下层
BSP,这部分代码用于支持特定体系结构的处理器和硬件平台
Linux采用宏内核结构组成
1||| 初始化组件
2||| 进程调度器
核心功能
3||| 内存管理器
负责多个进程安全地共享主存空间
支持虚拟存储器
4||| 虚拟文件系统【VFS】
“一切皆是文件”
5||| 网络接口
6||| 进程间通信【IPC】
7||| 可加载模块
8||| 设备驱动器
Linux的实时化技术
内核补丁方式
著名实例:MontaVista linux
在通用内核上增加低延迟补丁和可抢占内核补丁
双内核方式
著名实例:RTLinux
构建
基于通用Linux内核构建嵌入式Linux
基于嵌入式Linux发行版构建嵌入式Linux
μCLinux,ontaVista Linux,RTLinux,中科院红旗,中软实时嵌入式Linux等
(6) Android操作系统
特点
核心是以Linux为基础的开源操作系统
对第三方软件完全开放的平台
组成
堆层式软件构架(低到高)
Linux内核
内存管理、进程管理、网络协议栈、安全机制、驱动程序模型
增加:硬件时钟、匿名共享内存、低内存管理等
系统运行库
Android 运行环境
Dalvik虚拟机(Java)
核心库
提供了Java编程语言核心库的大多数函数
组件库
C/C++组件库
功能组件:系统C库、媒体框架、SGL库等
应用程序框架
Java语言开发
是核心应用所使用的API框架
包括
活动管理器、窗口管理器、通告管理器、包管理器
电话管理器、资源管理器、位置管理器
内容提供器、视图系统
XMPP服务
应用程序
用户交互层次
通过Android SDK开发的软件
硬件抽象层
最底层的Linux内核及驱动程序操作
一般Linux内核层用C语言,HAL和运行库层用C/C++实现
开发步骤
配置开发环境、创建Android应用的开发工程、运行应用程序
(7) iOS操作系统
概述
类Unix的Darwin开源操作系统为基础
类Unix商业操作系统
许多开发工具和技术源由MacOS X操作系统开发
系统架构
1||| 触控界面层
高级特性
多任务,数据保护
苹果推送通知服务,本地通知
手势识别器,文件共享支持
点对点服务,标准系统视图控制器
外部设备支持
2||| 媒体层
图形技术
音频技术
3||| 核心服务层
为所有应用程序基础服务系统
组件
地址簿框架、基础框架、CFNetwork框架、核心位置框架、安全框架
SQLite、XML支持
4||| 核心操作系统层
最底层,用FreeBSD和Mach所改写的Darwin
包含硬件驱动、内存管理、进程管理等
可直接与硬件设备进行交互
应用开发
集成开发环境Xcode用于开发MacOS X和iOS应用程序
开发时可能使用高层框架