本篇文章主要转载自 嵌入式复习,便于自己复习使用。
嵌入式系统概念:以应用为中心,以计算机为基础,软件、硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统(国内);用于控制、监控或辅助操作机器和设备的装置(IEEE);
嵌入式发展阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段;
嵌入式应用领域:工业控制、交通管理、信息家电、家庭智能管理、网络及电子商务、环境监测和机器人等方面。
嵌入式技术的发展趋势:
嵌入式系统的基本组成:
嵌入式系统的重要特征:
嵌入式系统的硬件组成:
嵌入式系统基本硬件架构主要包括有处理器、外围电路及接口和外部设备三大部分。其中外围电路一般有时钟、复位电路、程序存储器、数据存储器和电源模块等部件组成;
嵌入式处理器分类:
嵌入式系统好处:就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。
主要有实时系统、分时系统(非实时系统)和顺序执行系统。
(1)实时操作系统:系统内有多个程序运行,每个程序有不同的优先级,只有最高优先级的任务才能占有CPU的控制权。VXworks、UC/OS
(2)分时操作系统:系统内同时可以有多个程序运行,把CPU的时间分按顺序分成若干片,每个时间片内执行不同的程序,如UNIX,windows。
(3)顺序执行系统:系统内只含有一个程序,独占CPU的运行时间,按语句顺序执行该程序,直至执行完毕,另一程序才能启动运行。如DOS操作系统
实时性:它的正确性不仅与系统的逻辑正确性相关,而且与系统的响应时间相关。
具有强(硬)实时特点的嵌入式操作系统
系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,则被称为硬(强)实时系统。硬实时系统,其系统响应时间在毫秒或微秒级。一个硬实时系统通常在硬件上需要添加专门用于时间和优先级管理的控制芯片,uc/os和VxWorks是典型的实时操作系统。
具有弱(软)实时特点的嵌入式操作系统
在软实时系统中,虽然响应时间同样重要,但是超时却不会发生致命的错误。软实时系统则主要在软件方面通过编程实现现实的管理。比如Windows CE、uCLinux是一个多任务分时系统。一般软实时系统,其系统响应时间在毫秒或几秒的数量级上,其实时性的要求比强实时系统要差一些(电子菜谱的查询)。
嵌入式系统的硬件基本组成
嵌入式系统的硬件是以嵌入式微处理器为核心,主要由嵌入式微处理器、总线、存储器以及I/O接口和设备组成。
嵌入式微处理器的体系结构
目前使用冯.诺依曼结构的CPU和微控制器品种有很多,例如Intel公司的8086系列及其他CPU,ARM公司的ARM7、MIPS公司MIPS处理器等。
目前使用哈佛结构的CPU和微控制器品种有很多,除DSP处理器外,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等。
总线
存储器
可以做主存的存储器有:
外存:容量大、成本低
在嵌入式系统中常用的外存有:
- NandFlash
- DOC(Disk On Chip)
- CF(Compact Flash)
- SD(Secure Digital)
- MMC(Multi MediaCard)等
SRAM速度快、价格贵;
DRAM速度较SRAM慢、价格便宜;
NOR Flash具有随机存储速度快、电压低、功耗低、稳定性高等特点。
NandFlash具有容量大、回写速度快、芯片面积小等特点,主要用于外存。
输入/输出接口和设备
输入/输出接口主要有中断控制器、DMA、串行和并行接口等,设备主要有定时器(Timers)、计数器(counters)、看门狗(watchdog timers)、RTC、UARTs、PWM(Pulse width modulator)、AD/DA、显示器、键盘和网络等。
嵌入式处理器分类
按用途来分,嵌入式微处理器可以分为嵌入式DSP和通用的嵌入式微处理器两种;
在最普通的情况下,嵌入式微处理器包括:
片内存储器:部分嵌入式微处理器
外部存储器的控制器,外设接口(串口,并口)
LCD控制器:面向终端类应用的嵌入式微处理器
中断控制器,DMA控制器,协处理器
定时器,A/D、D/A转换器
多媒体加速器:当高级图形功能需要时
总线
其他标准接口或外设
流水线
通常采用单周期执行指令,可能导致比较长的流水线
流水线的概念:流水线,亦称管线,是现代计算机处理器中必不可少的部分,是指将计算机指令处理过程拆分为多个步骤,并通过多个硬件处理单元并执行来加快指令执行速度。
嵌入式微处理器的功耗管理
降低工作电压
提供不同的时钟频率
关闭暂时不使用的功能块
提供功耗管理机制
运行模式(Running Mode):处理器处于全速运行状态下。
待命模式(Standby Mode):处理器不执行指令,所有存储的信息是可用的,处理器能在几个周期内返回运行模式。
时钟关闭模式(clock-off mode):时钟完全停止,要退出这个模式系统需要重新启动。
影响功耗的其他因素还有总线和存储器的类型大小
ARM(Advanced RISC Machine)是专门从事基于RISC技术芯片设计开发的公司,主要出售芯片设计技术的授权,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。
ARM内核是一种32位RISC微处理器,具有功耗低、性价比高、代码密度高等三大特色。
什么是Thumb指令?
Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出,具有16bit的代码密度。
什么是Thumb-2指令?
Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中,16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情丰富了许多。
‘T’是Thumb指令或者Thumb-2指令;
‘E’提供DSP能力
‘J’增加了Jazelle扩展以支持Java加速技术
数据类型
字节型类型(Byte):数据宽度为8bits
半字数据类型(HalfWord):数据宽度为16bits,存取式必须是以2字节对齐方式
字数据类型(Word):数据宽度为32bits,存取时必须以4字节对齐的方式
什么叫字节对齐?
如果一个数据是以能被4或者2整除的地址开始的连续存储,那么它就是字节对齐,否则就是非字节对齐。
为什么必须字节对齐?
原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。如有些只能访问偶地址,有些只能访问4的倍数地址。字节对齐存储可提高CPU效率
7种CPU模式
处理器工作状态:
ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容
处理器为什么要有两种状态?
在保证处理器性能的同时,更少的占用内存,更低的功耗
ARM处理器有37个寄存器
31个通用寄存器:程序计数器、堆栈及其他通用寄存器;6个状态寄存器
R8-R12各有两组物理寄存器:一组为FIQ模式,另一组是除FIQ以外的其他模式。
R13-R14各有6个分组的物理寄存器,一个用于用户模式和系统模式,其他5个分别用于5种异常模式。访问时需要指定它们的模式,如:R13_<mode>,R14_<mode>;其中:<mode>可以从usr、svc、abt、und、irq和fiq六种模式中选取一个
程序状态寄存器
异常
是由内部或者外部原因引起的,当异常发生时CPU将暂停执行当前指令自动到指定的向量地址读取指令并且执行。
内存和I/O
ARM的寻址空间是线性的地址空间,2^32=4G
ARM支持大端和小端的内存数据方式
总线宽度、频率与总线带宽之间的关系
答:总线带宽=(总线宽度/8)总线频率
驱动层BSP
BSP对于不同的操作系统有不同的形式
操作系统层OS
中间层
中间层为上层软件提供了设备操作接口。
应用层
应用层软件主要由多个相对独立的应用任务组成。每个应用任务完成特定的工作。
嵌入式软件运行流程:
1、上电复位、板级初始化阶段
嵌入式系统完成上电复位后完成板级初始化工作。板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:
2、系统引导/升级阶段
根据需要分别进入系统软件引导阶段或系统升级阶段。通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。
3、系统初始化阶段
系统初始化需要按特定顺序进行
4、应用初始化阶段
进行应用任务的创建,信号量、消息队列的创建和应用相关的其它初始化工作。
5、多任务应用运行阶段
系统进入多任务状态,操作系统按照已确定的算法进行任务调度,各应用任务分别完成特定功能。
操作系统可以简单的分为通用操作系统和实时操作系统(RTOS)
实时操作系统就是”在给定时间内提供某种程度的服务,如果在规定的时间内没有得到结果,那整个的系统就是失败”。
实时操作系统特点:
多任务
任务的事件驱动
中断与中断优先级
同步与异步
资源与临界资源
容错与安全
操作系统体系结构:
体系结构是操作系统的基础,它定义了硬件与软件的界限、内核与操作系统其它组件的组织关系、系统与应用的接口。
目前操作系统的体系结构可分为:单块结构(Linux)、层次结构和客户/服务器(微内核)结构。
目前嵌入式操作系统主要采用分层和模块化相结合的结构或微内核结构。
分层和模块化相结合的结构将操作系统分为硬件无关层、硬件抽象层和硬件相关层,每层在划分功能模块。移植工作便集中在硬件相关层。微内核结构便于扩展。
1、嵌入式操作系统的功能
负责嵌入式系统的全部软、硬件资源的分配、调度,将CPU时钟、I/O、中断等资源封装起来给用户提供一个标准的API接口,供用户调用。由应用程序接口、设备驱动程序接口、设备驱动、操作系统内核等组成。
2、嵌入式内核
实时系统的评价指标
在实时系统中主要有三个指标来衡量系统的实时性,即响应时间(Response Time)、生存时间(Survival Time)、吞吐量(Throughput)。
非占先式内核的优缺点:
优点:正在运行着的任务占有CPU,而不必单行被别的任务抢占。
缺点:其响应高优先级的任务慢。
常见的嵌入式操作系统特点:
uC/OS-II:公开源代码、代码结构清晰、注释详尽、组织有调理、可移植性好、可裁剪、可固化、抢占式内核、最多可管理60个任务。可用于8位,16/32位单片机或DSP。
Linux:具有可移植性、一定的稳定性、各种性能的升级能力,开发更容易。开放源代码,不存在黑箱技术。内核小、功能强大、运行稳定、效率高。开放源代码的操作系统易于定制裁剪,在价格上极具竞争力。不支持X86CPU,还可支持其他数十种CPU芯片。有大量的且不断增加的开发工具和开发环境。其内核的结构在网络方面是非常完整的,提供了对多种互联网方式的全面支持。
Windows CE:其核心全是由C语言开发,内核提供内存管理、抢先多任务和中断处理功能。具有高度模块化,可在内核基础上添加各种模块,适合作为可裁剪的32位嵌入式操作系统,既适用于工业设备的嵌入式控制模块,也适用于消费类电子产品。其核允许每个进程有256个优先级,采用抢占式优先权调度法。它嚄没有DOS模式,不能运行现有的应用程序,有严格的内存限制,有精简的运行库和API,硬件并不十分标准化。
VxWorks:具有可靠性、实时性和可裁剪性。支持多种处理器,如:x86、i960、Sun Sparc、MIPS、PowerPC等。
嵌入式系统大致可以分为四个层次:
硬件层
特点:
处理器体系结构不统一
硬件资源通常受限
外部设备的种类繁多
有实时性和可靠性要求
OEM层
Bootloader的功能:初始化硬件,加载操作系统映像(0S Image )到内存,然后跳转到操作系统代码去执行。
BSP是介于主板硬件和操作系统之间的一层也可以说是属于操作系统的一部分,主要目的是为了支持操作系统使之能够正常地运行于硬件主板上。
bootLoader获得操作系统的方式:
方式一:串口、USB(U-BOOT)、以太网下载(E-BOOT);
方式二:从本地的存储设备例如CF卡和硬盘中读取操作系统映像。
操作系统层
Windows CE 是一个微内核操作系统。操作系统的基本功能被放在多个独立的进程(EXE)里面实现。在运行的时候,这些进程大致有如下几个:
内核NK. EXE ;
图形系统GWES. EXE ;
对象存储FILESYS .EXE ;
设备管理系统DEVICE .EXE ;
服务SERVICES. EXE
应用程序层
进程与线程:
进程与程序的区别:
进程本身不参加系统的调度,也没有有优先级和上下文。真正参加系统调度的是线程,系统只识别和调度线程,每个进程在创建的时候都会创建一个主线程作为该进程默认的执行体。进程只是线程的容器。一个进程可拥有的线程数理论上是没有限制的,只与当前可用的内存有关。系统中同时最多只能有32个进程。
wince线程的状态
Windows CE开发流程:
WinCE开发环境过程
Windows CE开发中涉及到的工具
依赖关系:对各种软件的安装必须按一定顺序;否则可能导致软件或则软件的部分功能不能使用。
Windows CE应用程序开发工具:
应用程序将被链接到OS内核中
一旦修改代码,必须再重新编译镜像
容易调试OS内核,不容易调试应用程序
易于调试和测试
必须安装相应的为特定平台开发的SDK,从而开发相应的应用程序
目标平台上需要安装 .NET compact framework
易于调试和测试
必须安装相应的为特定平台开发的SDK,从而开发相应的应用程序
应用程序开发流程:
两种途径获得SDK:
应用程序发布涉及到代码签名和代码打包
Windows CE应用程序开发,代码的选择:
托管代码主要的优缺点
托管代码优缺点与本地代码优缺点互补
Windows CE的应用编程接口(API)
Win32 API(应用程序接口)
包括源代码文件(.c/.cpp/.H等)和资源文件(.BMP/.ICO/.CUR/.FON)
源代码文件经过C/C++编译器编译后形成目标文件;资源文件经过资源编译器编译后形成.RES二进制资源。然后,链接器负责把目标文件、二进制资源及库文件等统一链接,最终形成可执行文件。
MFC与ATL
Microsoft .NET Framework精简版
各种编程接口的比较
资源大小:
开发效率和执行时间: