1、嵌入式系统的三要素
(1)嵌入性:嵌入到对象体系中,有对象环境要求 。
(2)专用性:软、硬件按对象要求裁减。
(3)计算机:实现对象的智能化功能 。
2、嵌入式系统的定义
目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础,软、硬 件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
3、嵌入式系统的内涵
(1)从技术角度
嵌入式系统是将应用程序、操作系统和计算机硬件集成在一起的系统。
(2)从系统角度
嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。
4、嵌入式系统外延
凡是带有智能处理器的专用软硬件系统都可称为嵌入式系统。
5、嵌入式系统的特点
(1)系统内核小(资源有限);
(2)专用性强;
(3)运行环境差异大;
(4)可靠性要求高(无人值守);
(5)通常要求有高实时性的操作系统;
(6)具有固化在非易失性存储器中的代码;
(7)嵌入式系统开发需要专门的开发工具和环境;
(8)一旦进入市场,就具有较长的生命周期;
6、嵌入式系统历史
20世纪70年代单片机的出现,这时的应用只是使用8位的芯片执行一些单线程的程序。
20世纪80年代出现商业级的嵌入式“操作系统”,并在其上编写嵌入式应用软件。
20世纪90年代以后,出现实时多任务操作系统(RTOS),并作为一种软件平台逐步成为目前国际嵌入式系统的主流。
7、嵌入式系统组成
(1)硬件组成
(2)软件组成
8、硬件抽象层
早期的嵌入式系统包含3个部分:硬件平台、嵌入式实时操作系统和应用程序;
经过不断发展,在硬件平台和操作系统之间演化出了新的一层——硬件抽象层;
硬件抽象层屏蔽了底层硬件的多样性,操作系统不再直接面对具体的硬件环境,而是由硬件抽象层代表的、逻辑上的硬件环境。
板级支持包是大多数商用嵌入式操作系统实现可移植性所采用的一种方案,是硬件抽象层的一种实现。
9、嵌入式系统的分类
(1)按表现形式分(硬件范畴) :
系统级:各种类型的工控机、PC104模块。
板级:各种类型的带CPU的主板及OEM产品。
片级:各种以单片机、DSP、微处理器为核心的产品。
(2)按实时性要求分(软件范畴) :
非实时系统(PDA)。
软实时系统(消费类产品)。
硬实时系统(工业和军工系统)。
(3)按嵌入式处理器用途可分为:
嵌入式微控制器(Micro Controller Unit MCU)
嵌入式DSP(Digital Signal Processor)
嵌入式微处理器(Micro Processor Unit MPU)
SOC(System On Chip)
SOPC(System On Programmable Chip)
10、硬实时和软实时
软意味着如果没有满足指定时间约束并不会导致灾难性后果,而对硬实时系统来说确实灾难性的。从实践上来说,软实时与硬实时的区别通常与系统的时间精度有关:由于这个原因,典型的软实时系统的任务调度精度必须大于千分之一秒,而硬实时任务为微秒级。
11、嵌入式微控制器
入式微控制器的典型代表是单片机。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源丰富,适合用于控制,因此称为微控制器。
12、嵌入式DSP
DSP处理器是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令执行速度。在数字滤波、FFT、频谱分析等仪器上,DSP获得了大规模的应用。
13、嵌入式微处理器
嵌入式微处理器是由通用计算机中的CPU演变而来。具有32位以上的总线,在实际嵌入式应用中,它只保留与嵌入式应用紧密相关的功能硬件以实现嵌入式应用的特殊要求。目前主要的嵌入式处理器类型有ARM、MIPS、POWER PC等。
14、嵌入式微处理器和嵌入式微控制器的区别
微控制器——存储器在片内 微处理器——存储器在片外
15、SOC
将通用处理器的IP核和功能模块的IP核按用户要求组成系统,仿真后提交芯片厂商生产。(也可下载到FPGA中。百万门)绝大部分系统构件都在系统内部。(SOC技术与前三种嵌入式处理器是不一样的)
16、SOPC
用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。可编程片上系统(SOPC)是一种特殊的嵌入式系统:
首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;
其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
17、嵌入式操作系统分类
嵌入式系统软件一般由嵌入式操作系统和应用软件组成 ;操作系统是连接计算机硬件与应用程序的系统程序,从实时性的角度来看,可分为:
非实时操作系统(如WinCE,Linux等)
实时操作系统(RTOS):计算的正确性不仅取决于程序的逻辑正确性,更取决于结果产生的时间。
18、嵌入式系统的应用
工业控制、交通管理、信息家电、家庭智能管理系统、POS网络及电子商务、电子政务、环境检测、机器人
19、嵌入式系统的发展趋势
(1)嵌入式应用软件的开发需要强大的开发工具和操作系统的支持
(2)互联网成为必然趋势
(3)支持小型电子设备实现小尺寸、微功耗和低成本
(4)提供精巧的多媒体人机界面
20、冯诺依曼体系结构和哈佛结构
冯诺依曼体系结构的要点:
(1)程序存储,程序执行。
(2)输入、存储、运算、控制和输出
(3)采用将程序指令存储器和数据存储器合并在一起的存储器结构;
(4)程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;
(5)因此程序指令和数据的宽度相同。
哈佛结构与冯·诺依曼结构的区别:
(1)使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;
(2)使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,这两条总线之间毫无关联;
(3)改进的哈佛结构采用一条独立的地址总线和数据总线访问两个独立的存储模块。
(4)如51单片机
21、与外设的连接方式
(1)查询方式(轮询)。(2)中断方式。(3)DMA(Direct Memory Access 直接内存存取 )
22、中断的重要性
响应突发事件(异步事件)
对计算机发展的影响:
(1)使得计算机能解决客观世界的突发事情,如实时系统
(2)使轮询系统升级到事件驱动系统成为可能
23、嵌入式系统开发过程
嵌入式系统的软硬件协同设计
24、软硬件协同设计
(1)系统描述
采用一种或多种系统级描述语言对所需设计的嵌入式系统的功能和性能进行全面的描述,是建立系统软硬件模型的过程。
(2)软硬件划分
从系统需求出发,依据一定的指导原则和分配算法对硬件/软件功能进行合理划分。
(3)协同综合
根据系统描述和软硬件划分的结果,在已有的设计规则和既定的设计目标下,决定系统中软件和硬件部分以及其接口的具体实现方法。
(4)协同仿真与验证
在硬件成产出来以前,通过仿真的手段验证软硬件集成方面的问题。
25、软硬件协同设计的特点
(1)采用并行设计和协同设计的思想,提高了设计效率,缩短了设计周期。
(2)采用统一的工具描述,可合理划分系统软硬件,分配系统功能,在性能、成本、功耗等方面进行权衡折中,获取更优化的设计。
(3)支持多领域专家的协同开发。软硬件协同设计不仅是一种设计技术,同时也是一种新的设计方法和思想,它的核心思想是沟通软件设计和硬件设计,避免系统中关系密切的两部分设计过早独立。
26、嵌入式硬件开发流程
(1)硬件需求分析
主要进行硬件设计需求分解,包括硬件功能需求、性能指标、可靠性指标、可制造性需求及可测试性等需求;对硬件需求进行量化,并对其可行性、合理性、可靠性等进行评估 。
(2)硬件总体设计
总体上进一步划分各单板的功能以及硬件的总体结构描述,规定各单板间的接口及有关的技术指标。
(3)硬件开发及过程控制
主要有原理图及详细设计、PCB设计、初样研制/加工及调试等。
(4)系统联调
在结构电源,单板软硬件都已完成开发后,即可进行联调;系统联调是验证设计目的是否达到的唯一方法。
27、嵌入式软件开发流程
(1)软件需求分析
对用户需求分类整理,包括功能需求、操作界面需求及应用环境需求等。
(2)软件系统设计
数据流分析、任务划分以及定义任务间的接口
(3)代码生成
编码
交叉编译和链接
交叉调试
测试
(4)程序固化
28、测试与调试
测试
(1)设计测试用例,找出可能的错误
(2)质量保证的关键因素
调试
(1)测试发现错误后消除错误的过程
(2)寻找错误原因并改正
蛮力法:跟踪所有地方,低效,其他方法无效时使用
回溯法:从发现问题的地方回溯到代码
原因排除法:分析可能原因,通过试验证明假设错误,从而排除该假设
(3)基于硬件的测试工具
万用表,逻辑笔,示波器,逻辑分析仪,仿真器
29、计算机体系结构
计算机体系结构是机器语言程序员或编译程序编写者所看到的计算机的属性,即概念性结构与功能特性。
30、影响CPU性能的因素
(1)流水线技术
(2)超标量执行:超标量CPU采用多条流水线结构
(3)高速缓存(CACHE)
(4)系统总线
(5)寻址位宽
(6)指令集
31、RISC的优势和缺点
优点:处理器管芯面积小。开发时间少,开发成本低。容易实现高性能
缺点:与CISC比,代码密度低。不能执行X86代码。给优化编译程序带来了困难
32、ARM的特点
(1)小体积、低功耗、低成本、高性能
(2)Load/Store体系结构
(3)16位/32位双指令集
(4)3地址指令格式
(5)全球众多的合作伙伴(自己只设计高性能的IP核,授权给别人生产)
33、ARM体系结构版本
V1
(1)基本数据处理(2)字节,字以及多字load/store(3)软件中断(4)26 bit 地址总线
V2
(1)Multiply & Multiply-accumulate(2)支持协处理器(3)支持线程同步(4)26 bit 地址总线
V3
(1)推出32位寻址能力(2)增加两种异常模式(3)增强型乘法器,产生全64位结果(32X32⇒64or32X32+64 ⇒64)
V4
(1)增加了半字load和store指令
(2)T—16位压缩指令集
V5
(1)提高了ARM和Thumb之间的交互效率(2)增加了前导零计数指令(3)增加了BKPT(软件中断)指令
V6
(1)降低耗电量(2)多媒体处理扩展(3)使MPEG4编码/解码加快一倍(4)音频处理加快一倍(5)支持多微处理器内核
V7(包括A、R和M三个系列)
(1)ARMv7架构是在ARMv6架构的基础上诞生的(2)采用了Thumb-2技术(Thumb-2技术比纯32位代码少使用31%的内存,减小了系统开销,同时能够提供比已有的基于Thumb 技术的解决方案高出38%的性能)(3)采用了NEON技术,将DSP和媒体处理能力提高了近4倍(4)支持改良的浮点运算,满足下一代3D图形、游戏应用以及传统嵌入式控制应用的需求
体系结构的演变
(1)T变种---16位压缩指令集(2)M变种---增强型乘法器,产生全64位结果(32 * 32 = 64 or 32 * 32 + 64 = 64)(3)E变种---增强型DSP指令集,包括全部算法操作和16位乘法操作(4)J变种----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能(5)SIMD变种---媒体功能扩展(6)D变种---支持片上Debug(7)I变种--- EmbededICE硬件,以支持片上断点和观察点(8)S---表示可综合的“软”IP核
34、Thumb技术特点
(1)支持Thumb的核有2套独立的指令集
(2)ARM32位指令的性能
(3)Thumb16位的代码密度
(4)设计者可在性能和代码密度之间取得平衡
35、 StrongARM系列
(1)StrongARM系列微处理器融合了Intel公司的设计和处理技术以及ARM体系结构特点。
(2)Intel StrongARM系列处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品
36、Xscale系列
Xscale系列处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,己经使用在数字移动电话、个人数字助理和网络产品等场合。Xscale系列处理器是Intel目前主要推广的一款ARM微处理器。
37、ARM微处理器的工作状态
处理器状态
第一种为ARM状态:此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态:此时处理器执行16位的、半字对齐的 Thumb 指令;
在程序的执行过中,可随时在两种工作状态之间切换
ARM和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在开始执行代码时,应该处于ARM状态,执行异常时也应处于ARM状态。
38、状态切换方法
进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。
进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
39、ARM指令长度
32位指令(ARM状态下)。16位指令(Thumb状态下)
40、ARM处理器的运行模式
41、特权模式和异常模式
特权模式:除了用户模式外,其它模式都是特权模式;
异常模式:除了系统模式外的特权模式是异常模式。
42、处理器模式
特权模式
除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
异常模式
这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。
用户和系统模式
这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
43、处理器的寄存器组织
ARM有37个32 位长的寄存器:
1个用作PC(program counter);
30个用作一般通用寄存器;
1个用作CPSR(current program status register);
5个用作SPSR(saved program status registers)。
这些寄存器不能被同时访问;与微处理器的工作状态及具体的运行模式有关。
通用寄存器R0~R14、程序计数器PC、一个或两个状态寄存器通常是可访问的。
所有的37个寄存器,分成两类:31个通用32位寄存器;6个状态寄存器。
在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。
其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。
寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器
寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。
寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。
寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。在Thumb指令集中存在使用R13的指令。
R14为链接寄存器(LR),在结构上有两个特殊功能:
在每种模式下,模式自身的R14版本用于保存子程序返回地址;
当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。
44、堆栈指针SP(R13)
R13在ARM指令中常用作堆栈指针SP,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。
在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。
由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。
45、R14寄存器注意要点
当发生异常嵌套时,这些异常之间可能会发生冲突。
解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。
46、程序计数器R15(PC)
寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。
ARM状态下,位[1:0]为0,位[31:2]保存PC;
Thumb状态下,位[0]为0,位[31:1]保存PC;
正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。
正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。
47、程序状态寄存器CPSR
每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。
当T位为1时,处理器正在Thumb状态下运行;
当T位清零时,处理器正在ARM状态下运行。
48、Thumb状态下的寄存器
Thumb状态下的寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:
8个通用寄存器R0~R7;
程序计数器(PC);
堆栈指针(SP);
链接寄存器(LR);
有条件访问程序状态寄存器( CPSR)。
49、ARM体系的异常处理
当正常的程序执行流程发生暂时的停止时,称之为异常 ;
当异常发生时,处理器会把pc设置为一个特定的存储器地址。这一地址放在一个被称为向量表(vector table)的特定地址范围内;
向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。
50、异常类型
复位:当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行
未定义指令:当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真
软件中断:该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用
指令预取中止:若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常
数据中止:若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常
IRQ(外部中断请求):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请 求中断服务
FIQ(快速中断请求):当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常
51、对异常的响应过程
当一个异常出现以后,ARM微处理器会执行以下几步操作
Ø1)将下一条指令的地址(PC)存入相应连接寄存器LR_mode,以便程序在处理异常返回时能从正确的位置重新开始执行。
Ø2)将CPSR复制到相应的SPSR中。
Ø3)根据异常类型,强制设置CPSR的运行模式位。
Ø4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
52、从异常返回过程
1)将连接寄存器LR_mode的值减去相应的偏移量后送到到PC中。
2)将相应的SPSR复制回CPSR中,以恢复异常出现前的状态。
3)若在进入异常处理时设置了中断控制位,要在此时清除。
53、异常向量表(Exception Vectors)
54、异常优先级(Exception Priorities)
55、复位
在复位后,除PC和CPSR之外的所有寄存器的值都不确定。
当nRESET信号再次变为高电平时,ARM处理器执行下列操作:
1.强制CPSR中的M[4:0]变为b10011(管理模式);
2.置位CPSR中的I和F位;
3.清零CPSR中的T位;
4.强制PC从地址0x00开始对下一条指令进行取指;
5.返回到ARM状态并恢复执行 。
56、ARM数据类型
ARM的内部操作都是面向32位操作数的,当从存储器调入一个字节或半字时,根据要求将其扩展为32位。
V4及以上版本支持这三种类型,以前版本只支持字和字节。
如果实际的存储器格式与芯片的存储器格式不符时,只有以字为单位的数据存取才正确,否则将出现不可预期的结果。
57、ARM存储系统
(1)Cache及WRITE BUFFER
统一的Cache(针对·冯诺依曼结构)
指令和数据Cache分开(针对哈佛结构)
(2)紧耦合存储器TCM
一种快速SRAM,紧挨内核
能保证取指或数据操作的时钟周期
位于存储器地址映射中
(3)存储器管理单元MMU
内存地址重映射(0地址启动时Flash,稳定后SDRAM)
实现虚拟空间到物理空间的映射(页式)
存储器访问权限控制
(4)存储器映射I/O
I/O操作被映射成存储器操作
不能使用Cache技术
58、多内核ARM角度
(1)ARM+DSP
在需要大量数值运算的应用中需要DSP处理器
ARM+DSP双核可降低成本、提高稳定性、降低功耗
(2)ARM+FPGA
可对芯片内部编程,给产品加密,灵活配置硬件
(3)多ARM核
复杂应用中,可增强多任务的处理能力
59、ARM指令集简述
(1)Load/Store 结构
在通用寄存器中进行操作;
load/store –从存储器中读某个值,操作完后再将其放回存储器中。
(2)指令分类
数据处理指令、load/store指令、跳转指令、CPSR处理指令协处理器指令、异常产生指令