1 嵌入式系统基础
1.1 嵌入式系统基础
1.1.1 嵌入式系统概念
嵌入式系统一般定义
是指以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
就像一般的计算机系统包括软件和硬件一样,嵌入式系统由嵌入式硬件和嵌入式软件组成。
嵌入式系统的特点
- 专用
- 精简
- 多样
- 独特
- 捆绑:应用软件与操作系统一体化
- OS:嵌入式操作系统
1.1.2 嵌入式系统与台式计算机
硬件平台比较
名称 | 嵌入式系统 | 台式计算机 |
---|---|---|
CPU | ARM等嵌入式处理器 | Intel,AMD的X86处理器 |
内存 | SDRAM芯片 | 内存条 |
存储设备 | Flash芯片 | 硬盘或固态盘 |
输入设备 | 按键,触摸屏 | 鼠标,键盘 |
输出设备 | 通常为LCD | 显示器 |
声音设备 | 音频芯片 | 声卡 |
接口 | MAX3232等芯片 | 主板集成 |
其他设备 | USB及网络等芯片 | 主板集成或外接卡 |
特点 | 芯片级 | 集成级别 |
软件平台比较
名称 | 嵌入式系统 | 台式计算机 |
---|---|---|
引导代码 | Bootloader引导,针对电路移植 | 主板的BIOS引导,无需改动 |
操作系统 | Linux, WinCE, VxWorks等,需要移植 | 一般为Windows,不需要移植 |
驱动程序 | 每个设备驱动程序都必须针对电路板进行重新开发或移植,一般不能直接下载使用 | 操作系统含有大多数驱动程序,或从网上下载直接使用 |
协议栈 | 需要移植 | 操作系统或第三方提供 |
开发环境 | 借助主机进行交叉编译 | 在本机就可开发调试 |
仿真器 | 通常需要 | 不需要 |
1.1.3 嵌入式系统与单片机
传统的单片机代表
51系列
PIC系列
AVR系列
二者的比较
硬件角度
名称 | 嵌入式系统 | 单片机 |
---|---|---|
硬件平台 | 厂家提供通用的硬件平台 | 自己设计制作硬件平台 |
硬件设计 | 以硬件平台为基础裁剪和扩展 | 重新设计 |
CPU | 一般为32位 | 多为8位或16位 |
MMU(存储管理单元) | 支持 | 不支持 |
功能 | 能够实现复杂功能 | 难于实现复杂功能 |
开发人员 | 主要为计算机专业人员 | 硬件设计人员 |
仿真器 | 通常初始化使用,以后不使用 | 全程使用 |
仿真头 | 不需要 | 需要(传统单片机) |
软件角度
名称 | 嵌入式系统 | 单片机 |
---|---|---|
开发平台 | 主机上相匹配的操作系统 | 主机上的仿真软件 |
功能 | 相对复杂 | 通常比较简单 |
运行环境 | 嵌入式操作系统 | 直接运行在硬件上 |
编程语言 | C、Java及框架 | C、汇编 |
协议支持 | 嵌入式操作系统提供,如USB协议和网络协议,移植后使用 | 自己实现 |
驱动程序 | 操作系统提供大部分驱动 | 自己实现 |
调试 | 交叉编译,操作系统环境调试 | 专门的仿真软件在线调试 |
1.2 嵌入式处理器
1.2.1 从传统处理器到片上系统
几种传统处理器
三种传统的处理器之间的界限正变得模糊,技术大融合是大趋势
-
微控制单元(MCU):集成CPU、RAM、ROM、定时器和多种I/O接口
如51、PIC和AVR系列单片机
-
数字信号处理器(DSP):专注于信号处理,如音视频编解码
一般频率较高,代表厂商为
TI
-
微处理器(MPU):专注于运算性能和速度,没有集成外设
Intel的X86处理器是MPU的代表
基于IP核的片上系统(SoC)
随着技术进步,常常将许多独立 IC 组成的电子系统集成在一个单片硅片上,构成系统芯片
这些系统芯片常常包含:
- 处理器核心
- ARM RISC
- MIPS RISC
- DSP核心
- 各种通信模块
- TCP/IP通信单元
- GPRS通信单元
- GSM通信单元
- 其他模块
- USB单元
- IEEE1394
- 蓝牙模块
IP Core(Intellectual Property Core,知识产权核)
概念引入
- 每种系统芯片都是由硬件描述语言设计,然后在芯片内由电路实现的
- 这些系统芯片构成功能模块,被设计厂家以知识产权的形式提供给用户
- 这些模块称为称为IP Core,Intellectual Property Core
分类
- 软核:以硬件描述语言编写的程序形式提供给用户
- 硬核:以硬件原理图与板图的形式提供给用户
SoC(System on Chip)
- SoC 是一种基于 IP 核的嵌入式系统设计技术,一个 MPU 或 DSP 核心与其它功能模块在处理器芯片内部形成系统,构成SoC
- 需要时,将原来的IP Core转移到新系统或只更改一小部分电路,就可实现所需要的功能,从而可以高效率地缩短硬件产品的开发周期,降低开发的复杂度
1.2.2 嵌入式处理器之ARM
ARM的含义
- 一个公司的名字
- 1991 年成立于英国剑桥,专门从事RISC技术芯片设计开发
- 知识产权供应商,主要出售ARM技术知识产权(IP)核的授权
- 世界各大半导体生产商都购买 ARM 微处理器核,ARM处理器占嵌入式处理器市场的四分之三
- ARM不直接从事芯片生产
- 一类微处理器的名字
- 一种技术的名字
三种主流的ARM处理器
- ARM7/9/11系列处理器:是传统的ARM处理器,ARM7通常没有MMU,适用于低端应用,ARM11带有多媒体支持,适用于高端应用,ARM9介于二者之间
- Cortex-A系列处理器:定位高端,用于高性能的开发应用平台,面向尖端的基于虚拟内存的操作系统和用户应用,特点是具有MMU和Cache,高频,高性能,高功耗
- Cortex-M系列处理器:定位低端,单片机风格系统,是针对低功耗的微控制器,特点是没有任何RAM等记忆硬件,低能,低耗,目前正逐步
一些特别的ARM产品
- OptimoDE,支持超长指令字(VLIW)技术
- MPCore,多核产品,拥有4路SMP,4路AMP或混合支持多任务作业的能力
- SecurCore,面向信息安全应用,带有保护单元、采用软内核技术、可集成安全特性和其他协处理器
ARM处理器特性
- 支持16位指令集Thumb,可压缩代码尺寸40%
- 可提供
SIMD(Single Instruction Multiple Data)
功能,将语音及图像的处理功能提高到了4 倍 - 支持 DSP(Digital Signal Processing) 指令,对于音频 DSP 应用提高 70%
- 含有 Java 加速器 Jazelle,速度提高了8倍,功耗降低 20%
1.2.3 嵌入式处理器与X86
比较点 | X86 | 嵌入式处理器 |
---|---|---|
应用 | 家用PC、笔记本、服务器 | 特定应用 |
组成 | ALU、MMU、片内Cache,片内资源有限,其他功能需要扩展 | ALU、MMU、片内Cache,集成网卡、USB等控制器 |
指令系统 | CISC(Complex Instruction Set Computing ) | RISC(Reduced Instruction Set Computing ) |
I/O编址方式 | 独立编址(计组) | 统一编址(计组) |
系统存储 | 硬盘,需要时调入内存 | Flash/eMMC,启动后全部加载 |
软件 | 多样,复杂,全面 | 面向特定需求,小,精简 |
产品使用 | 通过人机交互实现 | 嵌入式设备中自动完成 |
关联 | x86常作为嵌入式系统的开发主机 |
1.2.4 其他嵌入式处理器
MIPS
MIPS与MIPS公司
- MIPS也是一种处理器内核标准,由MIPS技术公司开发
- MIPS公司在RISC处理器方面占有重要地位
- MIPS公司既开发MIPS处理器结构,又生产MIPS芯片
- MIPS公司有自己的集成开发环境,也很适合嵌入式开发
MIPS与ARM
- ARM 与 MIPS 处理器都是 1985 年发布的 , 都遵循简洁的设计哲学,是 RISC 处理器的2大代表
- 总的来说,MIPS 有更多的寄存器,而ARM 有更多的寻址方式
PowerPC
- PowerPC 是源自IBM公司的RISC 处理器构架,是嵌入式应用的理想硬件平台
- PowerPC 处理器在性能、低功耗、可靠性、兼容性等方面都有很好的表现
- 相对ARM和MIPS,PowerPC处理器更高端,价格要贵一些
- IBM 和 Motorola 都生产 PowerPC 处理器,主要产品有:
- PowerPC 603e
- PowerPC 750
- MPC 7400
- PowerPC 970
1.3 嵌入式操作系统
1.3.1 实时操作系统
基本概念及分类
- 实时性:在规定时间内系统的反应能力,反应越快,实时性就越好,反应越慢,实时性越差
- 实时系统:执行的正确性不仅取决于计算的逻辑结果,而且还取决于结果的产生时间,根据对外界事件做出反应的时间不同,可划分为:
- 硬实时系统:必须对事件做出及时的反应,绝对不能错过事件处理的时限,比如说航天飞机的控制系统,如果出现故障,后果不堪想象
- 软实时系统:在系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害,如液晶屏刷新允许有短暂的延迟
详述
- 在嵌入式系统中,实时性的实现依赖于嵌入式操作系统
- 通常所有的操作系统都可以看作是支持软实时的,实时操作系统和非实时操作系统的区别在于能否支持硬实时系统
- 具体到操作系统的实现上,非实时操作系统采用基于优先级的调度算法,着重于提供高速响应和大吞吐量
- 实时操作系统使用的是调度方式简单,反应速度快的实时调度算法
- 实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务
- 虽然事件可能在无法预知的时刻到达,但是实时操作系统必须在事件随机发生时,在严格的时限内做出响应
- 实时操作系统即使工作在尖峰负荷下,也要保持实时性,响应超时就意味着致命的失败
1.3.2 与应用程序一体化的嵌入式操作系统
完整的有交互能力的嵌入式操作系统
两个不可或缺的特性
- 要单独安装独立运行
- 提供了用户接口
与应用程序一体化的嵌入式操作系统
例如:uC/OS和QNX(本门课程不对该类操作系统讨论)
它们有如下特点:
- 不需要单独安装独立运行
- 不存在提供交互能力的用户界面(shell)
- 操作系统和应用程序一起形成最终可执行程序,两位一体
- 和单片机系统一样通过仿真器及配套软件进行开发调试
1.3.3 嵌入式操作系统之Linux
Linux的相关的一些内容
- 1991年,Linus Torvalds发布了Linux内核
- Linux 存在着许多不同的版本,在嵌入式系统领域,Linux 是应用最广泛的首选操作系统,一般为2.6或3.0版本
- Linux不是实时操作系统,如果面向实时应用,必须进行实时性改造
实时Linux
- RT-Linux,加入了实时任务
- μClinux,针对没有MMU的处理器设计;去掉了虚拟内存管理技术,程序中访问的地址都是物理地址;为嵌入式系统做了许多小型化工作
主要特性
- 完全免费,可以任意修改源码,兼容
POSIX1.0(Portable Operating System Interface,可移植操作系统接口)
标准,可以方便地获得第三方软硬件厂商的支持,驱动程序及其它资源丰富 - 有大量的且不断增加的开发工具,这些工具为嵌入式系统的开发提供了良好的开发环境
- 有完善的网络支持,适应物联网时代
- 可以运行在多种硬件平台上,易于定制裁剪,支持包括x86在内的几乎所有CPU芯片,可以运行在掌上电脑、机顶盒或游戏机上
- 内核小、功能强、稳定健壮、效率高、多任务,作为嵌入式开发的基础平台,还可拓展,安卓就是Linux的拓展
- 包含嵌入式浏览器、邮件程序、MP3播放器、MPEG播放器和记事本等丰富的应用程序
1.3.4 其他嵌入式操作系统
安卓
基于Linux的自由及开放源代码的操作系统,最初由Andy Rubin开发,2005年被Google收购,主要用于个人移动设备,2007年11月,组建开放手机联盟改良了安卓系统并随后发布了源代码
iOS
苹果公司开发的移动操作系统,最早于2007年1月9日的Macworld大会上发布;iOS与苹果的Mac OS X一样,是以Darwin(苹果电脑2000年的一个开放源码的操作系统)为基础的,属于类Unix的商业操作系统
μCOS
- 实时嵌入式操作系统
- 代表版本是μC/OS-Ⅱ
- 可固化
- 可裁剪
- 抢先式的实时内核,总是运行就绪条件下优先级最高的任务
- 实时多任务,最多支持60个任务
- 可确定性,全部μC/OS-Ⅱ的函数调用与服务的执行时间具有可确定性
- 仅是一个实时内核,有很多工作需要用户自己完成
WindowsCE
是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制,操作系统的基本内核至少需要 200 KB 的ROM,有如下特点:
- 带有灵活的电源管理功能
- 对象存储技术,包括文件系统、注册表和数据库
- 良好的通信能力,支持各种通信硬件,支持局域网、Internet和拨号连接
- 支持嵌套中断,提供实时支持
- 包含大量的应用组件
- 更好的线程响应能力,中断服务线程响应时间上限更严格,适应嵌入式应用程序要求
- 256个优先级,使开发人员在时序安排方面有更大的灵活性
- 使用 Win32 API 的一个子集,支持近 1500 个 API,足以编写任何复杂的应用程序
- 缺点是价格过高
VxWorks
概要介绍
- 美国WindRiver公司于1983年设计开发的一种实时操作系统
- VxWorks拥有良好的持续发展能力、高性能的内核以及良好的用户开发环境
- VxWorks 以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中
- VxWorks 是一个非常优秀的实时系统,它的缺点是价格昂贵
核心功能
- 微内核
- 任务间通信机制
- 网络支持
- 文件系统和I/O管理
- POSIX标准实时扩展
- C++及其他标准支持
1.4 嵌入式系统开发模式
1.4.1 计算机系统开发模式之单片机
-
传统单片机系统的开发:主机+仿真器+仿真头+自制硬件
-
开发环境由主机上的仿真软件提供
-
调试程序时要下载到自制的目标板上的内存,仿真运行
-
调试好的程序最终要经过烧写固化
-
单片机系统开发的难点主要在于硬件平台可能要经过不止一次的设计和实现
-
硬件的每次实现都需要一定周期,进行制版、采购芯片、焊接和调试
1.4.2 计算机系统开发模式之台式计算机
1.4.3 嵌入式系统开发模式
开发模式
-
嵌入式系统开发的“主机+仿真器+硬件平台”的模式
-
嵌入式系统开发的“主机+硬件平台”的模式
完整的嵌入式操作系统
- 初始化时,一般需要通过仿真器向硬件平台下载嵌入式操作系统的启动加载程序Bootloader
- 在通过Bootloader安装了嵌入式操作系统之后,就不再需要仿真器了
- 只需要利用网络通信(有时也可以利用USB或串口),下载或通过网络文件系统在目标机上运行程序
- 注:一些新的嵌入式硬件平台不再提供仿真器,而是使用SD卡或USB接口
与应用程序一体化的操作系统
- 开发时使用的是仿真器提供的开发环境
- 这时在整个开发过程中仿真器不可或缺
- 这种方式除了自制硬件平台被通用硬件平台代替外,与单片机系统开发类似
嵌入式系统开发模式与其他开发模式的比较
- 与单片机开发相比 , 嵌入式系统的开发把开发者从反复进行的硬件平台设计过程中解放出来,从而可以把主要精力放在编写特定的应用程序上
- 嵌入式操作系统屏蔽掉了底层硬件的很多复杂信息,通过操作系统 API 可以完成大部分工作,这个过程更类似于在 PC 机上的某个操作系统下开发程序
- 与PC相比,在开发环境上会有一些弱化,并增加了一个交叉编译环节,但整体上属于 PC 类的开发模式,而不是单片机的开发模式
- 嵌入式系统开发者的主要任务是在主机上编写基于操作系统的程序,然后通过交叉编译的方式,在嵌入式操作系统环境下调试和运行
9月16日
1.4.4 嵌入式系统开发模式之个人移动设备
个人移动设备:PMD(Personal Mobile Device)
传统的嵌入式系统通常是不支持二次开发的,而类似手机、平板电脑这样的PMD产品已经打破了这个限制,PMD已经拥有了独立的应用平台,允许第3方软件的运行,而传统的嵌入式系统则不能
PMD特征
- 带有多媒体用户界面
- 是一种无线设备
- 强调成本和功耗
- 一般采用闪存作为存储方式
- 响应性能和可预测性能是其多媒体应用程序的关键特性
- 而实时性能需求也是重要的
PMD的通用性
- PMD有通用软件开发平台,可以运行第三方软件
- 就像手机不再仅仅是专门用于通话功能的设备一样,PMD的专用性正在逐渐淡化,而通用特性则越来越接近个人计算机
- PMD形态也相对固定,与传统通用计算机和嵌入式计算机都有所不同
PMD开发模式
- PMD有单独的操作系统平台,使用与一般嵌入式系统类似的操作系统环境(Linux、类UNIX)
- PMD的开发模式同样为主机-目标机模式
- PMD并不象PC一样作为开发环境被使用,它仅是一个应用平台而不是开发平台
两种PMD操作系统平台
- iOS是苹果公司不开源的平台
- Android平台是开源的,包括内容提供器、资源管理器、通知管理器和活动管理器,系统构架包括应用程序层、应用程序框架层、系统运行库层和Linux内核层,其开发基于Java语言
1.5 嵌入式系统的应用领域
- 机器人
- 工业控制
- 网络通信
- 军事
- 消费电子
- 汽车