嵌入式系统复习要点文档格式.docx
《嵌入式系统复习要点文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式系统复习要点文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
5、嵌入式系统特点(多技术领域交叉融合、专用型强、系统精简、硬件体系结构特殊、处理器和处理器体系结构类型多、嵌入式操作系统支持、嵌入式操作系统小内核、实时响应、多样性、健壮可靠、低功耗、成本敏感、产品成本、特殊的开发工具和环境、专门的开发环境)
嵌入式系统特点:
一般来看:
▪种类繁多,应用广泛
▪特定任务,非通用平台
▪软硬件一体化
▪多种处理器种类以及处理器体系结构的支持
▪极其关注系统成本,即成本敏感
▪有实时约束,代码小,执行速度快
▪实时操作系统
用户方:
▪功能简单
▪专门完成一个或几个任务
▪要求严格
▪大小、功耗、价格、市场时间
▪实时和交互
▪实时与环境交互
▪安全可靠
▪软硬件的错误威胁生命
开发方:
▪软件硬件协同并行开发
▪多种多样的微处理器
▪实时操作系统的多样性(RTOS)
▪与台式机相比,可利用系统资源很少
▪应用支持很少
▪要求特殊的开发工具
▪调试很困难
▪软件硬件都应很健壮
二、系统组成:
1、X86CISC指令集
3、指令主要有:
–乘加(MAC)操作:
它在一个周期中执行了一次乘法运算和一次加法运算。
–SIMD类操作:
允许使用一条指令进行多个并行数据流的计算。
–零开销的循环指令:
采用硬件方式减少了循环的开销。
仅使用两条指令实现一个循环,一条是循环的开始并提供循环次数,另一条是循环体。
—多媒体加速指令:
像素处理、多边形、3D操作等指令
4、指令分类:
•CISC:
复杂指令集(ComplexInstructionSetComputer)
–具有大量的指令和寻址方式
–8/2原则:
80%的程序只使用20%的指令
–大多数程序只使用少量的指令就能够运行。
▪RISC:
精简指令集(ReducedInstructionSetComputer)
–在通道中只包含最有用的指令
–确保数据通道快速执行每一条指令
–使CPU硬件结构设计变得更为简单
•EPIC(ExplicitlyParallelInstructionComputing,显式并行指令计算)
–使用ILP使编译器在程序运行前便能找出其并行性,安排好指令执行的顺序。
–分支推断
–风险装载
–更加聪明的编译器
▪超长指令字(VLIW)处理器
–多发射机制
–编译调度
6、RISC:
减少指令平均执行周期数
•减小CPI:
CPUtime=Instr_Count*CPI*Clock_cycle
•精简指令集:
保留最基本的,去掉复杂、使用频度不高的指令
•采用Load/Store结构,有助于减少指令格式,统一存储器访问方式
•采用硬接线控制代替微程序控制
超标量、超流水线、VLIW等系统结构,目标在于减小CPI,可使CPI<
1
•IBM的RS6000(1990)第一台SuperscalarRISC机
7、RISC和CISC区别
8、影响CPU性能的因素:
(1)流水线
•流水线技术:
几个指令可以并行执行
–提高了CPU的运行效率
–内部信息流要求通畅流动
(2)超标量CPU多条流水线结构
(3)高速缓存
•为什么采用高速缓存
–微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。
•高速缓存的工作原理
高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝
(4)总线和总线桥
南北桥:
主板芯片组北桥一般都有散热片的,离CPU不远(主内:
系统控制芯片,主要负责CPU与内存、CPU与PCI-E之间的通信。
掌控项目多为高速设备,如:
CPU、HostBus。
后期北桥集成了内存控制器、Cache高速控制器)
南桥一般都没有散热片,很好找(主外,即系统I/O芯片(SI/O):
主要管理中低速外部设备;
集成了中断控制器、DMA控制器。
)
9、各种处理器
•嵌入式系统的核心部件是各种类型的嵌入式处理器:
–通用CPU
•Intelx86/xScale、MT68K、PowerPC(IBM/Freescale)
–专用CPU
•专用:
NP、IXP、IOP等
–MCU嵌入式微控制器
•单片机4/8/16/32bit;
8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300
–嵌入式微处理器MPU
•ARM、MIPS、IntelxScale、Dragonball(Freescale)等公司
–DSP数字信号处理器
•TI、Motorola、ADI等公司
–SoC嵌入式片上系统
•DSP+RISCCPU+I/O+Memory
–可编程片上系统(系统芯片)PSoC
•FPGA、PAL/GAL、PLD/CPLD、Tensilica、Xtensa
–MultiCoreSOC多核嵌入式处理器
–ASIC
•
(1)MCU:
微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。
(2)DSP处理器
DSP(DigitalSignalProcessor)是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计
•连续的数据流的处理及高精度复杂运算,则应该选用DSP器件
•特征
–运算量较大,特别是向量运算、指针线性寻址
应用范围:
多媒体
–通讯/网络设备、数字多媒体(HDTV)
•应用于数字滤波、FFT、反余弦变换、频谱分析、语音与图像等多媒体处理、智能变频控制等领域
–各种带有智能逻辑的消费类产品
•生物信息识别终端,带有加解密算法的键盘,ADSL接入、实时语音压解系统,虚拟现实显示等,如TexasInstruments的TMS320系列和Motorola的DSP56000系列
•目前最为广泛应用的嵌入式DSP处理器是TI的TMS320C2000/C5000系列,另外如Intel的MCS-296和Siemens的TriCore也有各自的应用范围。
(3)嵌入式微处理器(通用处理器)
•可以使用那些可编程设备
–X86、PowerPC,AMD、ARM、MIPS、68K
•特点
–内存可编程(Programmemory)
–通用的数据地址寄存器
–通用的ALU
•优点
–开发迅速
–低成本
–高灵活性
(4)嵌入式微处理器MPU由CPU演变而来
有点:
速度快低功耗尺寸小没有programmemory
面向特定应用的嵌入式微处理器:
–可编程内存
–数据路径优化
–特殊功能单元
–一定的灵活性
–高性能
•(5)SoC(Systems-on-chip)电路系统,SoC是追求产品系统最大包容的集成器件
•成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。
•利用改变内部工作电压,降低芯片功耗。
•减少芯片对外管脚数,简化制造过程。
•减少外围驱动接口单元及电路板之间的信号传递,可以加快微处理器数据处理的速度。
•内嵌的线路可以避免外部电路板在信号传递时所造成系统杂讯。
三、实时系统
1、定义
•实时
–指对随机发生的外部事件做出及时的相应并对其进行处理。
(所谓事件是指来自与计算机系统相连接的设备所提出的服务要求和采集数据要求)
•实时系统
–指系统能及时(或即时)相应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
2、实时系统指标:
•响应时间(ResponseTime):
是计算机识别一个外部事件到作出响应的时间,
•生存时间(SurvivalTime):
是数据有效等待时间,在这段时间里数据是有效的。
•吞吐量(Throughput):
是在一给定时间内,系统可以处理的事件总数
3、分类
•按确定性来分嵌入式系统
–硬实时系统(HardRealTime)
•系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要引起系统崩溃或致命的错误。
•如:
骑车、飞机、医疗设备、空间设备、军方系统、工业自动化,典型应用:
交换机,TCP/IP协议栈,激光打印机
–软实时系统(SoftRealTime)
系统对系统响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出致命的错误或崩溃
应用:
游戏、DVD、英特网视频和广播、通信、webserver
典型应用:
PDA(掌上电脑),手机,大型游戏,自动检票机
–严格实时系统(FirmReal-Time)
•系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要导致无法接受的低质量服务。
打印机
–非实时系统(NonReal-Time)
•系统对系统响应时间没有实时要求。
3、嵌入式实时系统的分类:
•按软件结构来分嵌入式实时系统
–单线程程序(Single-threadedprogram)
•
(1)循环轮询系统(PollingLoop)
•
(2)有限状态机(FinitStateMachine)
–事件驱动系统(Event-Drivensystem)(事件驱动系统是能对外部事件直接响应的系统。
是嵌入式实时系统的主要形式)
•
(1)前后台系统(Foreground/Background)又叫中断驱动系统(如微波炉、电话机、玩具等)
•
(2)实时多任务系统(Multitasking或Multi-threadProgramModel)
•(3)多处理机系统
(1)循环轮询系统
▪优点:
–对于简单的系统而言,便于编程和理解
–没有中断的机制,程序运行良好,不会出现随机的问题
▪缺点:
–有限的应用领域(由于不可确定性)
–对于大量的I/O服务的应用,不容易实现
–大的程序不便于调试
▪适合于慢速和非常快速的简单系统
(2)有限状态机
优点:
a)对于小的系统而言,便于编程和理解
b)可以快速的执行
c)只是通过改变输出功能来改变机器的响应
缺点:
d)有限的应用领域
e)不能保证确定性
f)对于大的应用系统,难于调试
(3)前后台系统
a)中断服务程序处理异步事件,这部分可称为前台(Foreground),或叫中断级
b)应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可称为后台(Background),或叫任务级
系统的性能:
c)中断延迟时间(Interruptlatencytime)
d)响应时间(responsetime)
e)恢复时间(recoverytime)
当有一前台事件(外部事件)发生时,引起中断,进行前台处理,处理完成后又回到后台(通常又称主程序)。
ISR终端服务程序
•需要考虑的是中断的现场保护和恢复,中断嵌套,中断处理过程与主程序的协调(共享资源)问题。
(4)单处理器多任务系统:
–结构:
由多个任务,多个中断处理过程,实时操作系统组成的有机的整体。
–每个任务是顺序执行的,并行性通过操作系统来完成,任务间的相互通信和同步也需要操作系统的支持。
多任务系统
–多个顺序执行的程序并行运行。
–宏观上看,所有的程序同时运行,每个程序运行在自己独立的CPU上。
–实际上,不同的程序是共享同一个CPU和其它硬件。
因此,需要RTOS来对这些共享的设备和数据进行管理。
–每个程序都被编制成无限循环的程序,等待特定的输入,执行相应的任务等。
–这种程序模型将系统分成相对简单的,相互合作的模块。
(5)多处理器多任务系统
分为紧耦合系统和松耦合系统
紧:
多个处理器通过共享内存空间来交换信息(如:
SMP:
对称多处理器)
松:
多个处理器通过通讯线路来连接和交换信息
(6)实时多任务系统
a)的系统分解为相对独立的多个线程,达到“分而制之”的目的,从而降低系统的复杂性。
b)保证系统的实时性
系统的模块化好,提高系统的可维护性
–需要采用一些新的软件软件设计方法
–需要增加功能:
线程间的协调,同步和通信功能
–需要对每一个共享资源互斥
–导致线程间的竞争
–需要使用RTOS,RTOS要增加系统的开销
4、实时系统基本概念
•任务:
一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程序自己。
实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。
Ti(Pi,Ci,Di)
按照到达情况的可预测性,任务可以划分为:
周期任务(periodictask)、非周期任务按照重要程度,可分为:
关键任务(criticaltask)、非关键任务(noncriticaltask)
任务执行方式:
同步、异步(一般由终端产生并处理)
•几个实时操作系统概念:
确定性(Determinism:
对外部事件的响应时间可预测几个微秒到一毫秒
响应性(Responsiveness):
初始化中断处理和开始执行中断服务程序(ISR)需要的时间;
确定性和响应性共同构成了对于外部事件的响应时间
抢占式进程:
用户控制(Usercontrol):
允许用户精细控制任务优先级是基本功能
可靠性(Reliability):
静态分析和保留资源强稳定性和弱交互性
可预测性:
—硬件延迟的可预测性
–软件系统的可预测性
•应用程序的响应时间是可预测的,即在有限的时间内完成必须的工作;
操作系统的可预测性,即实时原语、调度函数等运行开销应是有界的,以保证应用程序执行时间的有界性
软失败操作(Fail-softoperation):
系统能够以这样一种方式失败,它能够尽可能地保留能力和数据
•进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。
•任务上下文
任务上下文是指一个未运行的任务的状态,如堆栈指针、计数器、内存字段和通用寄存器等
5、任务的状态:
任务切换:
当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(Context),即CPU寄存器中的全部内容。
这些内容保存在任务的当前状况保存区(Task’sContextStoragearea),也就是任务自己的栈区之中。
入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。
做任务切换所需要的时间取决于CPU有多少寄存器要入栈
•内核提供的基本服务是任务切换。
之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。
6、调度:
多数实时内核是基于优先级调度法的。
•可重入性:
可重入型函数可以被一个以上的任务调用而不必担心数据的破坏。
•可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。
可重入型函数只使用局部变量,即变量保存在CPU寄存器中或堆栈中。
如使用全局变量,则要对全局变量予以保护
•使Swap()函数具有可重入性的条件:
–把Temp定义为局部变量
–调用Swap()函数之前关中断,调用后再开中断
–用信号量禁止该函数在使用过程中被再次调用
调度技术:
•循环执行
–静态调度策略
–适合周期性任务
•非抢占式事件驱动
–任务被功能所代表
–FIFO
–安全,功能有限
7、优先级:
静态和动态:
动态优先级:
实时内核应当避免出现优先级反转问题
优先级反转:
由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使得具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。
解决方法:
优先级继承协议:
提高低优先级任务
优先级限高协议:
一般设为最高可能的优先级
三、BOOTLOADER
1、PC机引导的过程:
•PC的体系结构中,引导加载程序由BIOS和位于硬盘MBR中的引导程序一起组成。
1.BIOS(其本质就是一段固件程序)
2.位于硬盘MBR中的OSBootLoader
•比如LILO、GRUB等。
BIOS的主要任务是
1.进行硬件检测和资源分配
2.将MBR中的OSBootLoader读到系统的RAM中
3.将控制权交给OSBootLoader
BootLoader的主要运行任务是
1.将内核映象从硬盘上读到RAM中
2.跳转到内核的入口点去运行,也即启动操作系统。
•
(1)启动流程介绍(FromPower-uptoPower-down)
–按下电源按钮,开启计算机电源
–计算机ROM中内置的BIOS程序启动,进行自检(Poweronselftest)
•BIOS检查显卡是否工作正常
•BIOS校验RAM是否工作正常
•BIOS检查Keyboard和Mouse是否存在,是否正常
•BIOS寻找PCI总线和总线上的设备,如发现错误,则通过Beeps报警,同时屏幕显示错误(这里的错误几乎都是硬件错误)
•BIOS显示所查询到的系统配置,如CPU型号、软驱和硬盘参数、BIOS版本等
–BIOS在CMOS设置中查找引导顺序,并按照该顺序在外存设备上寻找bootloader程序。
Bootload通常放在软盘/硬盘/光盘(即通常所说的引导盘)上一个固定的位置;
–BIOS将程序控制权交给Bootloader程序;
–Bootloader程序启动操作系统程序
–操作系统程序一直驻留在内存中,负责管理计算机的内存、外存、键盘、显示器等各种设备,以及各种应用程序的启动和终止
3、bank的划分
•面对不同速度、总线宽度的外设,通常,嵌入式处理器都把外部总线分成不同的Bank空间,对应不同的地址。
–NorFlash
–NandFlash
–Memory
–Device
–Cache
–。
。
•在32位嵌入式系统中,存储空间的地址范围从0x00000000到0xFFFFFFFF。
这4GB存储范围内可以包括以下几种存储空间:
–设备空间(MT_DEVICE)
–内部高速SRAM空间(MT_CACHECLEAN)
–内部minicache空间(MT_MINICLEAN)
–低端中断向量空间(MT_LOW_VECTORS)
–高端中断向量空间(MT_HIGH_VECTORS)
–RAM内存空间(MT_MEMORY)
–ROM(flash)空间(MT_ROM)
•Reserved384->
Cashe128->
DRAM512->
Reg1G->
Reserved768->
静态(I/O)256->
记忆卡512->
静态(ROM/FLASH/SRAM)512
4、嵌入式处理器的启动过程:
(1)系统加电或复位后,所有CPU都会从某个地址开始执行,具体的地址值是由处理器设计决定的。
–用户代码从地址空间的0x0开始,通常这个地址对应的是Bank0。
–PC(程序计数器)指针,指向0x0。
从这个地址开始读取指令并运行。
Bank0启动代码的FlashROM即BootROM
(2)Bootloader实现的工作:
A、硬件系统自检;
配置其他bank或者端口、外设等工作模式;
处理中系统的终端(BootROM需要处理的任务就是把固定的中断向量映射到一个可编程的中断处理子程序的地址)。
B、引导操作系统:
系统配置完成以后,Bootloader需要把操作系统(或者其他程序)装载到SDRAM(就是系统的RAM区)。
随后,把PC指针指向程序的RAM空间,使操作系统启动,这就是引导
C、Flash编程:
要想实现BootROM的自编程,必须让Boot程序是在RAM中运行
5、BOOTLOADER的烧写:
通过JTAG口烧写;
通过串口烧写(主要用于更新升级);
6、BOOTLOADER的操作模式:
“启动加载”和“下载”仅对开发人员有意义
磁盘启动加载,如Lilo、Grub
Flash启动加载NORFlashMTD:
用于访问memory设